Primeiros passos com o novo DataSnap 2010 - Clube Delphi 117
Apresentar uma introdução ao novo DataSnap, lançado com o Delphi 2010, mostrando algumas de suas novidades através de um exemplo prático passo-a-passo que demonstra a construção de uma aplicação simples multicamadas (Banco de Dados, Servidor de Aplicação e Aplicação Cliente).
Mostrar, de forma a incentivar o público iniciante, o desenvolvimento multicamadas utilizando a tecnologia DataSnap, uma vez que o desenvolvimento deste tipo de aplicação ficou muito facilitada a partir do Delphi 2009, e que sofreu grande evolução em sua recente versão 2010.
Nos sistemas multicamadas há uma separação física das responsabilidades de um sistema, como a conectividade com o banco de dados, as regras de negócios e a interface com usuário. Desenvolver sistemas desta forma é útil por vários motivos: ganho de performance, manutenção facilitada, modularização etc.
No ano passado, com o lançamento do Delphi 2010, foi apresentada a nova versão do DataSnap, agora rebatizado como DataSnap 2010. Nesta versão, foi mantida a base da arquitetura de seu antecessor – DataSnap 2009, porém com algumas melhorias, como por exemplo o suporte a JSON, REST e conectividade utilizando o protocolo HTTP. Neste artigo vamos dar o pontapé inicial para este tipo de desenvolvimento, com a construção de uma aplicação introdutória. [/lead]
O desenvolvimento de aplicações multicamadas teve início no Delphi 3, com o MIDAS. Esta nomenclatura permaneceu até o Delphi 6, onde foi apresentada como DataSnap. Até então, a principal característica desta arquitetura era o envolvimento com a tecnologia COM (Component Object Model) da Microsoft (veja Nota do DevMan), para a comunicação remota (entre as camadas cliente e servidora). Desde então, a cada nova versão do IDE tem-se uma evolução natural do DataSnap e foi em sua versão 2009 que houve uma grande remodelagem de sua estrutura e sua dependência do COM totalmente removida. A conectividade ficou por conta de um novo driver dbExpress exclusivo para DataSnap. Apesar das melhorias, essa versão era restrita a conexões utilizando o protocolo TCP/IP, além da possibilidade da construção de clientes .NET utilizando o Delphi Prism, que é o Delphi para desenvolvimento .NET, também lançado na mesma época. Um ponto a ser lembrado é que apesar da nova arquitetura DataSnap, o Delphi ainda mantém o DataSnap clássico, garantindo sua retrocompatibilidade com projetos desenvolvidos em suas versões mais antigas.
COM, acrônimo de Component Object Model, é uma tecnologia da família dos sistemas operacionais Windows que permite que componentes de software se comuniquem. É base para muitas outras tecnologias, por exemplo, para interoperabilidade entre aplicativos do Office. No Delphi, é utilizado para viabilizar a comunicação em sistemas distribuídos, entre as partes cliente e servidora, fazendo uso de interfaces. [/nota]
A versão 2010 do DataSnap, apesar de se basear em seu antecessor, apresentou algumas novidades em relação ao DataSnap 2009:
•Agora o Delphi provê a construção desse tipo de aplicação através de dois wizards (assistentes), onde é possível a escolha entre dois grupos de aplicações: Windows (VCL tradicional, Windows Service ou Console) e Web (ISAPI, CGI ou Web App Debugger). Veja Nota do DevMan para conhecer as diferenças;
•Permite utilização de REST para fazer chamadas aos métodos do servidor;
•Suporte ao formato JSON;
•Função Callback, que é o modo de passar uma função como parâmetro em outra função. Seu propósito é simples, o servidor vai chamar o método de Callback que você passar após a execução de determinada tarefa, uma espécie de notificação, dando ao desenvolvedor a oportunidade de responder no cliente a uma ação ocorrida no servidor;
•Conectividade através do protocolo HTTP;
•Uso de autenticação HTTP para acesso ao Server;
•Utilização de filtros (como o de compressão de dados, que já acompanha o Delphi) e até mesmo a construção de filtros personalizados (Ex.: criptografia de dados).
Tipos de projetos oferecidos pelos wizards DataSnap no Delphi 2010:
VCL – Uma aplicação tradicional Delphi com um formulário em branco que é executada apenas para manter o servidor ativo;
Windows Service – O servidor DataSnap roda como um serviço do Windows;
Console – Semelhante à VCL, porém sem interface gráfica, mantém o servidor em execução respondendo a requisições;
ISAPI - Um projeto do tipo ISAPI gera uma DLL (Dynamic-link library) que deverá ser armazenada em um servidor Web IIS (Internet Information Services) da Microsoft. Após publicada, esta é carregada para a memória apenas uma vez, onde permanece atendendo as solicitações clientes. Cada solicitação é tratada pela mesma aplicação, porém em uma Thread separada;
CGI - Projeto do tipo Console, muito utilizado nos primórdios do desenvolvimento para Internet. Cada solicitação é tratada por uma instância separada da aplicação. Logo, dependendo do caso, será menos performático que um ISAPI;
Web App Debugger – Este tipo de aplicação deve ser usado somente em fase de desenvolvimento e teste, pois fornece uma maneira fácil de monitorar as solicitações e respostas HTTP ao contar com o auxílio do aplicativo Web App Debugger que acompanha o Delphi, que facilita a depuração. [/nota]