Do que trata o artigo

O artigo trata do desenvolvimento de aplicação DataSnap utilizando a nova arquitetura DataSnap XE, lançando mão de recursos avançados da orientação a objetos, como a reflexão computacional, padrões de projeto como DAO além de Generics, um dos recursos mais interessantes disponíveis na linguagem Delphi.

Para que serve

O desenvolvimento em camadas serve para criarmos aplicações escaláveis, de fácil manutenção e distribuição, uma vez que as regras de negócios ficam encapsuladas no servidor. Desenvolver uma aplicação em camadas com recursos de OO como Generics e RTTI aumenta a produtividade da equipe permitindo um maior reaproveitamento de códigos e como consequência uma redução de prazo e custo.

Em que situação o tema é útil

Utilizar conceitos avançados de desenvolvimento orientado a objetos é útil quando se quer aumentar o nível de abstração do projeto e como consequência tornar o código mais coeso e menos acoplado. Assim a aplicação fica muita mais limpa, fácil de manter e muito flexível quando há a necessidade de implementar novos recursos evitando o retrabalho e efeitos colaterais.

Resumo do DevMan

Nos últimos tempos assuntos como padrões de projetos, metodologias ágeis, boas práticas entre outros estão sendo discutidos como nunca. Com o avanço da tecnologia, prazos cada vez menores e clientes cada vez mais exigentes, a busca por métodos e procedimentos que aumentem a produtividade se torna uma obrigação. No desenvolvimento orientado a objetos existem alguns paradigmas que proporcionam maior produtividade como o uso da herança e polimorfismo, mas somente estes paradigmas de forma isolada não trazem o benefício esperado no atual cenário tecnológico em que estamos. As equipes estão cada vez mais heterogêneas, os projetos cada vez maiores, as opções de linguagens e frameworks são bem vastas e para manter tudo isso muito bem alinhado é preciso uma gestão eficiente. Mas isso é mais assunto para gerência de projeto. Neste artigo vamos observar como estes avanços influenciam a vida do desenvolvedor e como podemos aplicá-los em nossos projetos desenvolvidos em Delphi.

No que tange a área de desenvolvimento, a criação dos padrões de projetos trouxe um enorme benefício uma vez que apresentam soluções para problemas recorrentes no desenvolvimento de projetos orientados a objetos. Com isso, ao iniciar um projeto já sabemos o caminho a seguir para evitar determinado problema. A orientação a objetos evoluiu, ou melhor, as linguagens orientadas a objetos começaram a incorporar novos recursos, recursos estes que vieram trazer enorme benefício ao desenvolvimento de software orientado a objetos. As linguagens e ferramentas também evoluíram incorporando em seus IDEs novas Features, Wizards e utilitários, sempre com o foco na produtividade.

Quando falamos de Delphi também não ficamos atrás. A linguagem Delphi evoluiu nos últimos anos incorporando alguns destes recursos como Generics, Anonymous Methods, nova RTTI, DBX4 e muito mais. Este ano tivemos o lançamento do Delphi XE que conta com uma série de ferramentas incorporadas ao IDE como integração com Subversion, CodeSite, FinalBuilder, entre outros.

Nota do DevMan

Anonymous Methods é um recurso que foi adicionado no Delphi 2009 e é conhecido também como "referências a métodos”, pois sua declaração é feita com a sintaxe “reference to function/procedure”. Em resumo criar um método anônimo é criar um tipo que faz referência a um procedure ou function com uma assinatura específica, por exemplo:


  TCalculo = reference to function(const N1, N2: double): double;
   
  procedure ExecutaCalculo(Calculo: TCalculo);
   
  ExecutaCalculo(function(const N1, N2: double): double
                  begin
                          result := N1 + N2;
                  end); 

O Delphi XE trouxe como principal atrativo a integração do IDE com diversas ferramentas utilitárias há muito utilizadas pela comunidade, são elas:

Subversion - também conhecido por SVN, é um sistema de controle de versão desenhado especificamente para ser um substituto moderno do CVS, que se considera ter algumas limitações. FinalBuilder - ferramenta para gerenciamento de compilações, que traz uma maneira fácil e prática de criar e rodar scripts de compilações. Com uma interface amigável para o usuário esse software permite realizar a compilação de um ou vários projetos.

CodeSite - é como um super gerador de arquivos de log, pois permite enviar dados dos erros para o log, inclusive tipos personalizados. O log pode então ser visualizado localmente, no viewer ou gravado num arquivo. As mensagens podem ser de erros, avisos, informações, sendo mostradas com ícones diferentes, podendo ser filtradas, para esconder mensagens desnecessárias.

AQTime - ferramenta para analisar a performance do código-fonte, facilitando o descobrimento dos gargalos, permitindo otimizações mais precisas mostrando onde realmente está o problema. AQTime é ao ferramenta de Profile líder há anos entre os desenvolvedores Delphi.

Desenvolvimento ágil de software ou método ágil é um conjunto de metodologias. Providencia uma estrutura conceitual para reger projetos de Engenharia de Software. Entre as metodologias mais conhecidas podemos citar o XP, Scrum, FDD, DSDM etc.

Um capítulo à parte quando se trata de Delphi está por conta da arquitetura DataSnap. Não podemos negar que o desenvolvimento em camadas sempre foi um diferencial no Delphi. Aplicações em camadas sempre foi uma boa opção para projetos grandes que demandam escalabilidade e facilidade de manutenção. Com este tipo de aplicação podemos concentrar nossas regras de negócio no servidor criando assim aplicações clientes mais enxutas. A distribuição da aplicação também é facilitada, uma vez que não há necessidade de instalação de drivers para acesso a dados ou qualquer outra tecnologia de conexão a banco de dados. Nas últimas versões do Delphi a arquitetura DataSnap evoluiu e muito, permitindo que os desenvolvedores Delphi possam lançar mão do que há de mais recente no mundo do desenvolvimento, como Cloud Computing, RIA, aplicações RESTFull e muito mais.

Agora imagine o quão interessante seria unir toda a produtividade do Delphi em sua arquitetura DataSnap com padrões e recursos avançados da orientação a objetos. Atente para o fato de todos os padrões de desenvolvimento, framework ágil, metodologia ou filosofia de desenvolvimento não está vinculada a linguagem, ou seja, não existe restrição quanto à linguagem e/ou ferramenta utilizada para você desenvolver uma aplicação baseado em RIA por exemplo. Muito menos alguma exigência para a aplicação do padrão DAO (veremos mais adiante) a não ser que a linguagem que você for trabalhar seja orientada a objetos. O mesmo vale para os padrões de projeto. Como o Delphi é uma linguagem 100% orientada a objetos fica fácil entender que todos estes padrões podem ser aplicados em soluções desenvolvidas em Delphi e esta é a proposta deste artigo.

Vamos ver como aplicar alguns dos padrões de desenvolvimento e ainda, lançar mão de recursos avançados da orientação a objetos como Generics, trabalhar com reflexão computacional através da RTTI do Delphi, tudo isso em uma aplicação em camadas utilizando a nova arquitetura DataSnap.

Nota do DevMan

RIA - Rich Internet Application - são Aplicações Web que têm características e funcionalidades de softwares tradicionais do tipo Desktop. RIA típicos transferem todo o processamento da interface para o navegador da internet, porém, mantêm a maior parte dos dados (como por exemplo, o estado do programa, dados do banco) no servidor.

Nota do DevMan

O conceito de computação em nuvem (em inglês, Cloud Computing) refere-se à utilização da memória e das capacidades de armazenamento e cálculo de computadores e servidores compartilhados e interligados por meio da Internet, seguindo o princípio da computação em grade (grid). O acesso a programas, serviços e arquivos é remoto, através da Internet - daí a alusão à nuvem. O uso desse modelo (ambiente) é mais viável do que o uso de unidades físicas.

Generics

Generics é um dos recursos mais interessantes em Orientação a Objetos em minha opinião, pois flexibiliza muito a escrita do código. Como o próprio nome sugere este recurso nos permite trabalhar com uma estrutura genérica, o que faz toda a diferença no caso do Delphi que é uma linguagem fortemente tipada. Quando falamos que uma linguagem é fortemente tipada significa que as estruturas definidas nesta linguagem obrigatoriamente têm que ter um tipo de dado no momento de sua declaração e este tipo de dado não poderá mudar, de uma forma geral seria dizer que o que nasce inteiro, vive inteiro e morre inteiro.

...
Quer ler esse conteúdo completo? Tenha acesso completo