Artigo do tipo Tutorial
Recursos especiais neste artigo:
Artigo no estilo Solução Completa
Porque esse artigo é útil
Vamos abordar um framework chamado mORMot. Nele temos concentrados dois pilares para quem desenvolve um sistema corporativo. Temos um servidor de aplicações REST e um ORM (Object-Relational-Mapper). Esses também são pontos importantes quando se desenvolve soluções voltadas à arquitetura orientada a objetos para projetos multicamadas com SOA (Service Oriented Architecture). Do ponto de vista técnico, o servidor REST do mORMot permite que objetos trafeguem por seu aplicativo enquanto que permite persistir esses mesmos objetos em um banco de dados relacional, já do ponto de vista de negócios, possuir um servidor REST garante que qualquer cliente que implemente o protocolo HTTP pode consumir seu servidor, com total independência de tecnologia, e possuir um ORM à mão traz a independência quanto ao banco de dados.

A arquitetura tem uma grande importância no ciclo de vida de um projeto de software, sendo a principal responsável pela forma como uma aplicação é organizada. Quanto maior o projeto, maior a sua importância. Não se trata de uma fase do desenvolvimento de software, a arquitetura está presente durante toda a vida do projeto e por isso precisa ser constantemente evoluída. Para isso ser possível, é importante que ela seja flexível e extensível, caso contrário, alterações em qualquer base do projeto gerarão uma grande dor de cabeça.

Se analisarmos alguns frameworks e APIs de grande utilização em projetos Delphi, é possível perceber que quem os desenvolveu não estava preocupado com a arquitetura dos softwares que usam essas bibliotecas, em alguns casos, a maior preocupação é ser RAD, ser “fácil” de utilizar, possibilitar a construção rápida de uma aplicação inteira através da interface do IDE, sem a necessidade de digitar qualquer código. Felizmente este cenário está mudando, ao menos, no que diz respeito aos frameworks Open Source para Delphi.

O fato é que grande parte dos projetos Delphi, às vezes por influência da plataforma como um todo, ou simplesmente por falta de opções, são projetos que foram desenvolvidos usando a metodologia RAD. São projetos onde é possível encontrar componentes de acesso a dados na interface gráfica, SQL em baixo de botões, e assim por diante.

Ainda na época em que o Delphi era mantido pela Borland, uma empresa chamada BoldSoft tentou mudar esse cenário, em busca de um apelo mais orientado a objetos e menos RAD, com a criação do projeto Bold, que era um ORM. Infelizmente, a Borland comprou a BoldSoft e matou o projeto. Mais tarde surgiu o ECO que também foi descontinuado.

Na busca por soluções para os problemas de arquitetura de software, uma das primeiras preocupações é a separação em camadas. Entre as camadas comumente utilizadas, está a camada de acesso a bancos de dados ou camada de persistência. Esta costuma apresentar os primeiros desafios para a arquitetura de software de projetos Delphi. Enquanto plataformas como Java e .NET possuem frameworks ORMs maduros, para Delphi temos poucas opções e todas são relativamente novas. Dentre as opções disponíveis, a maioria surgiu após o Delphi 2009 e a adição dos novos recursos à linguagem, como Generics e a nova RTTI. Como não há retro compatibilidade com versões antigas do Delphi, para poder usufruir desses frameworks é necessário migrar as aplicações, o que costuma trazer grandes desafios e nem sempre é viável.

Dentre as principais opções de framework ORM para Delphi, temos o DORM, TMS Aurelius e o mORMot. Tanto o DORM como o Aurelius são frameworks exclusivamente de mapeamento objeto relacional, já o mORMot é mais do que isso, tendo o ORM como uma de suas principais funcionalidades.

Um ORM traz algumas vantagens interessantes, como eliminar em grande parte a necessidade de uso de SQL, diminuir o tempo de desenvolvimento e permitir que uma única estrutura de dados seja usada em mais de um banco de dados. Por outro lado, passam a surgir algumas preocupações, como o desempenho. Um framework ORM pode trazer uma perda de desempenho devido ao processamento que é realizado para a geração de SQL e mapeamento objeto relacional com a base de dados. Essa é uma preocupação que os desenvolvedores do mORMot tem desde o início do projeto e um diferencial do projeto.

O framework

O mORMot é um framework ORM e SOA (BOX 1) que traz consigo uma enorme gama de funcionalidades, como ferramentas de log, MVC, Unicode, internacionalização, cache, testes e etc. Compatível com as versões do Delphi 6 a XE 4 é um dos poucos frameworks que oferecem maior retro compatibilidade, o que é uma boa notícia para quem ainda usa versões antigas e não quer depender de uma migração para usufruir de ferramentas modernas.

BOX 1. SOA

SOA é um acrônimo para arquitetura orientada a serviço, mas pode-se também ser considerada uma visão de como aplicações heterogêneas deveriam ser desenvolvidas e integradas. O principal objetivo da SOA é saltar das aplicações monolíticas para um conjunto de serviços reutilizáveis que podem ser compostos para criar aplicações.

As principais funcionalidades do mORMot são o ORM e sua camada de serviços. O ORM traz um conceito diferente e inovador, o qual os autores chamam de ORM cliente-servidor. Isso significa que o framework trabalha em todas as camadas da aplicação. O provedor de serviços permite de uma forma muito simples que serviços sejam disponibilizados através de REST. Assim como o ORM, as funcionalidades de serviços também atuam em todas as camadas da aplicação, simplificando o trabalho do desenvolvedor.

Desenvolvido com pensamento voltado para um design simples (KISS – Keep It Simple Stupid), baseado em Domain Driven Design, o mORMot é um projeto ambicioso e inovador que tem como preocupações centrais a versatilidade e o desempenho. Sua arquitetura e implementação orientada a objetos fogem totalmente do ambiente RAD encontrado na plataforma Delphi, e esse é um dos seus principais diferenciais. Por maior que sejam as diferenças com os frameworks da Embarcadero, como o DataSnap, a adaptação não é um problema para quem conhece os conceitos básicos de OO.

Client-Server ORM / SOA

O mORMot implementa uma arquitetura cliente-servidor RESTFull (BOX 2) seguindo as melhores práticas de MVC, N-Tier, ORM e SOA.

BOX 2. RESTFull

REST (Representational State Transfer) é uma técnica de engenharia de software para sistemas hipermídia distribuídos como a World Wide Web. O termo se originou ...

Quer ler esse conteúdo completo? Tenha acesso completo