Desenvolvimento 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