DESENVOLVIMENTO NO MOLDE MVC
Por ADILSON BENEVIDES SOBRAL | 23/06/2009 | AdmDesenvolvimento no molde MVC
O
molde MVC oferece vantagens significativas no desenvolvimento de
aplicativos, através da separação das camadas, possibilitando
implementar com maior facilidade e clareza questões programáticas
importantes como a persistência de dados, controle de segurança,
comunicação em rede e fluxo de visualização.
MVC
(Model-View-Controller), traduzido livremente para
Modelo-Visão-Controlador, consiste num molde de programação em três
camadas. O Modelo representa os objetos ou dados de um aplicativo. A
Visão é a representação deste modelo em formato de apresentação para o
usuário, com interface apropriada para a entrada de informações. O
Controlador, por sua vez, implementa a interatividade, através do
processamento das ações tomadas pelo usuário e atualização do modelo.
O
fluxo de interação entre as camadas é cíclico. O usuário indica uma
operação através da interface ou visão. Esta operação é processada pelo
controlador que altera o modelo conforme a lógica de negócio,
retornando ao usuário o novo estado do modelo no formato de uma nova
visão. O usuário prossegue então a sua próxima tarefa, re-iniciando o
cíclo e assim por diante.
O molde MVC oferece vantagens
significativas no desenvolvimento de aplicativos, através da separação
das camadas, possibilitando implementar com maior facilidade e clareza
questões programáticas importantes como a persistência de dados,
controle de segurança, comunicação em rede e fluxo de visualização.
Equipes de programação podem se concentrar em suas habilidades centrais
e integrar as camadas através de interfaces bem definidas. Esta
separação permite que aplicativos possam ser mais facilmente
modificados e extendidos para atender a novas exigências, bem como
possibilita que a interface com o usuário apresente várias visões de um
só modelo, sem interferir com a lógica de negócio.
A seguir,
analizamos diversas tecnologias quanto a sua capacidade de implementar
o molde MVC e oferecemos algumas alternativas práticas para o
desenvolvimento de aplicativos web.
MVC e aplicativos web
A
programação de aplicativos web através de linguagens interpretadas como
ASP ou PHP oferece restrições à implementação do molde MVC, embora seja
possível faze-lo. Estruturalmente, estas linguagens formulam a lógica
através de scripts inseridos diretamente em páginas HTML. Por outro
lado, linguagens compiladas como Java e C# são mais apropriadas pois
definem claramente os objetos e ações de forma separada da interface.
Novamente, esta separação possiblita funcionalidade distinta das
camadas, bem como a extensão de aplicativos, reutilização de código e,
conseqüentemente, menor tempo e custo de desenvolvimento.
A
aplicação de MVC na plataforma .NET é bem definida pela Microsoft,
oferecendo metodologia dentro das especificações definidas por ASP.NET,
utilizando a linguagem C# e com acesso a banco de dados SQL através de
ADO.NET ou ODBC.
A plataforma J2EE, por sua vez, apresenta muitas
possibilidades. Favorecemos a biblioteca de tags Jakarta Velocity
Template sobre páginas JSP pela simplicidade de scripting que Velocity
proporciona à camada de visualização. A estrutura Struts, também do
Jakarta Project, implementa mapeamento entre a visão e o controlador.
Acesso ao banco de dados é intermediado através de Hibernate. Também
pode-se utilizar alguma das várias implementações comerciais do padrão
JDO (Java Data Objects), que possibilita a interpretação de objetos na
estrutura do banco de dados relacional. Há várias opções de banco de
dados como MySQL, Oracle ou mesmo SQL Server da Micrososft. Entretanto,
observamos que o PostgreSQL hoje oferece uma alternativa altamente
robusta, mesmo que gratuíta. Descrevemos na seguinte tabela estas
opções e apresentamos um resumo da estrutura MVC:
Tabela 1: Estrutura MVC e implementação nas plataformas .NET e J2EE
1ª Camada: Visualização
2ª Camada: Lógica de negócio
3ª Camada: Persistência de informações
Função
Constrói
a interface do sistema com acesso através de navegadores de internet,
utilizando o protocolo HTTP para a troca de informações. Composição
básica em HTML, estendida por linguagens de script como JavaScript,
controles ActiveX e Java Applets, dependendo dos requerimentos do
aplicativo.
Controla o processamento das ações requeridas pelo
usuário, aplica segurança através de identificação do usuário e aciona
operações no banco de dados, retornando o conteúdo que será enviado ao
navegador utilizado pelo cliente.
Define o banco de dados a ser
utilizado para persistir as informações do sistema. Pode utilizar
componentes de intermediação com a camada de lógica de negócio.
Implementação utilizando .NET
Páginas
em HTML podendo conter scripts, HTML dinâmico, folhas de estilos,
controles ActiveX e Java Applets. As páginas são gerada dinamicamente
pelo servidor através de scripts definidos pela especificação ASP.NET.
Linguagem
C# para ASP.NET, gerando componentes de negócio que realizam o
processamento dos pedidos recebidos pelo servidor de Internet.
Banco de dados Microsoft SQL Server acessado pelo componente ADO.NET ou ODBC.
Implementação utilizando J2EE
Páginas
em HTML podendo conter scripts, HTML dinâmico, folhas de estilos,
controles ActiveX e Applets. A página é gerada dinamicamente pelo
servidor através do modelo Apache Jakarta Velocity Pages, que facilita
a manipulação do design sem que haja interferência na lógica.
Linguagem
Java e o framework Apache Jakarta Struts, que implementa o paradigma
MVC2, possibilita que cada componente da lógica de negócio tenha mais
de uma visualização.
Banco de dados PostgreSQL, MySQL, Oracle,
Microsoft SQL Server, utilizando acesso via middleware como Hibernate
ou a implementação da especificação JDO (Java Data Objects) que cria um
mapeamento direto entre o banco de dados relacional e objetos de Java,
possibilitando pesquisas complexas e eficientes.
Resumo e conclusão
O
molde MVC de arquitetura de aplicativos permite a separação das camadas
de dados, controle e visualização. Esta separação oferece vantagens
para desenvolvedores como a otimização das habilidades de equipes e a
redução de custos associados ao desenvolvimento, além de favorecer a
extensibilidade e reutilização do código.
Aplicativos web
construidos nas plataformas .NET e J2EE podem implementar MVC, sendo
que J2EE oferece maior gama de possibilidades.
Empresas que não
utilizarem o molde MVC no desenvolvimento de aplicativos estarão
restringindo seus projetos aos requisitos atuais e correrão o risco de
inviabilizar futuras atualizações ou mesmo de isolamento por restrição
à integração com outros projetos.
Referências
Almost All Java Web Apps Need Model 2
The design model you first learned with JSP might not scale or support complexity.
by Budi Kurniawan
http://www.fawcette.com/javapro/2002_06/online/servlets_06_11_02/
Designing Enterprise Applications
with the J2EE™ Platform, Second Edition
http://java.sun.com/blueprints/guidelines/
designing_enterprise_applications_2e/web-tier/web-tier5.html