Ganhe performance na sua aplicação utilizando Ajax!
Frase bonita, não?
Já parou pra pensar que não é somente o uso de Ajax que faz seu sistema ganhar performance?
Pois é, artigos e artigos já foram feitos sobre sua utilização, mas mesmo assim o desempenho ainda fica a desejar em alguns momentos.
Desenvolvimento de software para a Web, na maioria das vezes, obedece à um padrão de arquitetura com 3 camadas. Camada View, onde é feito a interface com o usuário. Camada de controle, onde se recebe as requisições vindas das opções escolhidas na camada View, e a camada de modelo, onde é acessada, somente, pelo controle. Esta camada de modelo, digamos de passagem para os mais iniciantes, é a camada responsável pelo acesso à base de dados.
Nessa arquitetura básica, pode ser adicionado outras camadas com intuitos, deveres e obrigações que dependem da natureza e objetivo do software.
Dados a base de uma aplicação Web em camadas voltemos ao Ajax.
Quando estamos na camada View do software e queremos acessar uma funcionalidade do módulo que tem uma regra de negócio, a primeira atitude que normalmente se faz é acessar o controle do módulo que estamos lidando no momento. Vamos à um exemplo simples.
Está sendo desenvolvido um módulo Web para cadastro de rotas de uma empresa X de logística.
Este módulo possui uma página HTML responsável pela camada View, um objeto responsável pelo Controle, que chamaremos de RotasControle e um objeto RotasModel que será responsável pela camada Modelo.
Quando queremos adicionar alguma funcionalidade Ajax na camada View para agilizar algum processo, normalmente se acessa o objeto Controle do módulo em questão. Neste caso, o controle RotasControle.
Chegamos no ponto onde eu queria chegar!
Será que ao adicionar-mos a funcionalidade Ajax na camada View e acessar o controle do módulo corrente, não iremos perder alguma performance? Talvez sim e talvez não.
Se este controle não estiver bem construido e bem estruturado ao receber uma requisição Ajax terá que processar e carregar muita informação novamente, sendo que talvez seria necessário somente uma informação específica.
Normalmente em sistemas orientado a objetos, uma classe pode carregar informações demais que as vezes não são necessárias. Propriedades encapsuladas podem as vezes carregar outras classes de módulos que não seriam necessários causando assim um certo custo na hora de receber e processar informações específicas. A utilização de design patterns(padrões de projetos) pode ajudar a construir melhor estas arquiteturas.
Bom, a dica que quero discutir com vocês seria então, ao invés do Ajax acessar diretamente o Controle do módulo corrente carregando assim toda informação que não será necessária, podiamos criar um controle específico para o Ajax mas ligado ao módulo corrente. Ou seja, criariámos um objeto controle chamado, por exemplo, RotasAjaxControle.
Este objeto RotasAjaxControle, teria então somente os métodos e dados encapsulados necessários para obter as informações de que ele precisa.
Este pensamento tirei desta semana após utilizar o design pattern Proxy, onde ele prega que não é necessário utilizar ou chamar serviços com um custo avançado de processamento a todo momento.
São coisas simples que pode ajudar a aumentar a performance de uma software.
Conclusão que tiro deste pensamento é que, em arquiteturas mais avançadas onde exista camadas com serviços específicos como regra de negócio talvez poderiam se beneficiar desta utilização. Em certos momentos poderia talvez o Ajax acessar diretamente uma regra de negócio específico, mas claro, passando por validações quanto à permissões e invasão. Claro!
