Demonstrar de forma prática como é possível utilizar o Framework DataSnap do Delphi XE para a construção de uma solução multicamadas, cujo servidor de aplicação disponibilizará seus métodos a múltiplos clientes, de tecnologias heterogêneas Web e Desktop, tais como VCL Forms e VCL for Web, PHP e .NET.
Para que serve
O conceito de multicamadas serve para dividir a aplicação em várias partes, cada qual com objetivos fortemente definidos. No modelo a ser abordado serão três: dados (banco de dados), regras de negócio (servidor de aplicação) e apresentação (aplicações clientes em variadas tecnologias Web e Desktop). O uso de vários tipos de interfaces clientes serve para que códigos sejam reaproveitados no servidor, não importando a forma como os dados forem apresentados (se na Web, Desktop ou ambos).
Em que situação o tema é útil
A abordagem do artigo visa, de certa forma, incentivar os desenvolvedores que ainda não utilizam soluções multicamadas DataSnap a usarem e até mesmo migrarem suas aplicações Client/Server. Dessa forma, obtém-se uma maior flexibilidade, como por exemplo, a partir de um único servidor de aplicação central disponibilizar seus métodos de negócio para N clientes distintos. É útil para empresas que desejam oferecer mais de um tipo de interface para uma mesma solução servidora.
DataSnap: um servidor e vários tipos de interfaces clientes
Neste artigo será construída uma solução multicamadas DataSnap acessível através de diferentes tecnologias, promovendo o desenvolvimento distribuído em camadas com interoperabilidade. Para valorizar ainda mais o exemplo, estas aplicações serão construídas utilizando além do próprio Delphi XE, outras ferramentas da própria Embarcadero como o RadPHP XE e o Delphi Prism XE, fazendo com que o desenvolvedor Delphi se sinta mais familiarizado.
Sistemas multicamadas, como o próprio nome diz, caracterizam a divisão em camadas de uma aplicação, onde cada camada é uma unidade lógica. Essas unidades funcionam em conjunto, porém em processos separados e em máquinas separadas, cada qual com uma especificação própria. Por estarem separadas fisicamente, as camadas precisam partilhar de uma comunicação entre si, que pode ser via rede local ou através da internet, onde são utilizados os protocolos de comunicação TCP/IP ou HTTP. Outra característica relevante é a centralização das regras de negócio em sua camada intermediária, o que facilita a atualização da aplicação, visto que, em uma eventual mudança das regras de negócio, somente uma camada seria atualizada. Em consequência disso, a camada de apresentação, que é representada pelas aplicações clientes, se abstém dos códigos de negócio, se tornando clientes leves, ou mais comumente chamados Thin Clients.
O Delphi 2009 marcou a mudança em termos de desenvolvimento multicamadas no Delphi, com a remodelagem de seu Framework DataSnap que o acompanha desde a versão 3. Dentre as mudanças realizadas está a eliminação de sua dependência com a tecnologia COM para comunicação entre a parte cliente e servidor e a adição de um novo driver dbExpress de conexão, exclusivo para DataSnap. Isso tornou muito claro e prático o desenvolvimento DataSnap no Delphi desde então. A mudança foi tamanha que na época batizaram a versão como DataSnap 2009, para que não fosse confundido com as versões anteriores da tecnologia. Já em termos de conectividade com outras plataformas, até então era possível somente construir clientes nativos .NET, utilizando o Delphi Prism 2009. Com o lançamento do Delphi XE, este leque foi aumentado. Agora é possível criar clientes nativos em PHP, JavaScript, C++ e .NET utilizando as ferramentas RadPHP, C++ Builder XE e Delphi Prism XE.
Portanto, essa será a abordagem do artigo, ou seja, construir uma solução multicamadas utilizando o Framework DataSnap do Delphi XE, onde será desenvolvido um servidor de aplicações tradicional que estará acessível para clientes distintos, nos ambientes Web e Desktop. Esses clientes serão os mais “leves” possíveis, tendo o mínimo de código possível, somente para poder consumir os métodos de negócio já disponíveis no servidor e manipulação de alguns controles em tela.
TCP/IP é o acrônimo de dois outros protocolos: TCP (Transmission Control Protocol - Protocolo de Controle de Transmissão) e IP (Internet Protocol - Protocolo de Interconexão). Pode ser definido como um conjunto de protocolos de comunicação, ou seja, envio e recebimento de dados, entre computadores em rede.
HTTP é a sigla para o termo em inglês Hipertext Markup Language. É o protocolo que realiza a transferência de dados entre computadores, utilizando mensagens para a comunicação entre as partes cliente e servidor.
COM (Component Object Model) é uma tecnologia da Microsoft que viabiliza a comunicação entre aplicações cliente e servidor, utilizando interfaces. Uma interface COM é a maneira como um objeto expõe sua funcionalidade ao meio externo.
O modelo 3 camadas
Quando se fala em multicamadas no Delphi logo se pode interpretar como sendo seu modelo mais simplista que é o modelo conhecido como “modelo 3 camadas”, que será o abordado neste artigo. Conforme pode ser visto na Figura 1, as camadas deste modelo são:
• Dados: como a própria descrição sugere, é a camada onde estarão os dados da aplicação, ou seja, o Sistema de Gerenciamento de Banco de Dados (SGBD) propriamente dito. Esta camada comumente está localizada fisicamente num servidor dedicado ou junto da camada de Regras de Negócio;
...