O SGT é composto de duas partes principais:
- Camada de negócio14:
- Toda a lógica de negócio é implementada utilizando ``EJBs15''. Este código roda no servidor de aplicações, no caso o JBoss.
A lógica de negócio é implementada por Entity Beans(persistência), Session Beans(controle de fluxos) e objetos auxiliares(Value Objects, Util Objects.).
- Camada de apresentação16:
- É composta pelas interfaces a partir das quais o cliente usa o sistema.
Para desenvolvê-la utilizamos: jsp, html, JavaScript.
Tratamos de não colocar nenhuma regra de negócio nesta camada da aplicação, a fim de permitir a criação de outros tipos de cliente sem a necessidade de reprogramar as regras.
O sistema foi construído utilizando a arquitetura J2EE17 pois, durante o desenvolvimento do MetaNaeg, nos deparamos com diversos problemas que, utilizando-a, poderiam ser resolvidos mais facilmente.
As principais razões desta desta escolha foram:
- Lógica versus Apresentação
- É mais fácil fazer a separação entre a lógica do negócio e a apresentação ao cliente.
- Transações
- O servidor de aplicações fica encarregado de gerenciar as transações.
- Concorrência
- O servidor de aplicações também cuida deste aspecto. O desenvolvedor nem deve inserir código18 que manipula concorrência dos ``EJBs''.
- Segurança
- É possível definir permissões de acesso e execução de ações com o uso de papéis.
O importante é notar que isto é feito de maneira declarativa, à parte do código da aplicação.
No caso do MetaNaeg a validação das permissões estava no próprio código.
- Persistência
- O servidor de aplicações faz a persistência automaticamente utilizando-se Persitência Gerenciada pelo Container(``CMP'').
- Código ``limpo''
- A maior parte destes aspectos pode ser configurada em arquivos chamados ``deployment descriptors''.
Desta maneira, o código do sistema fica livre de código que trata destes aspectos ortogonais19 à aplicação.
Além disso, podemos alterar os ``deployment descriptors'', mudando assim alguma característica do sistema sem, no entanto, precisarmos alterar uma linha de código do mesmo. Por exemplo: podemos alterar uma permissão de execução de uma determinada função, sem precisarmos alterar código do sistema, bastando para isso, alterar o ``deployment descriptor``.
Desta maneira, podemos notar que o desenvolvedor pode se concentrar na lógica do negócio, deixando a cargo do servidor de aplicações a gerência dos aspectos ortogonais à aplicação citados. Além disso, como no código do sistema não encontramos código que trata de aspectos ortogonais à aplicação, o código torna-se mais fácil de ser alterado e entendido.
- ... negócio14
- Aplicação servidora.
- ... ``EJBs15
- Enterprise JavaBeans: são os componentes que rodam no servidor de aplicações.
- ... apresentação16
- Aplicação cliente.
- ...J2EE17
- Java Enterprise Edition
- ... código18
- O uso de métodos synchronized não é permitido.
- ... ortogonais19
- Segurança, concorrência, entre outros.
Fabio Pisaruk
2004-12-07