Olá pessoal, iremos falar um pouco sobre arquitetura MVC – Model View Controller (modelo-visão-controlador) e seus frameworks. A arquitetura MVC é um padrão de arquitetura de software que separa a representação da informação da interação do usuário com ela.
Assim, neste contexto, o modelo (classes e entidades) consiste nos dados da aplicação, regras de negócio, lógicas e funções. O objetivo é separar partes distintas do projeto reduzindo sua dependência ao máximo. O View constitui as telas, E o controller, embora também se refira as classes é a parte responsável pela interceptação da requisição da página.
Bom, quando uma ação do lado do servidor é requisitada em uma página, como por exemplo, a gravação dos dados, todo o processo que ocorre a partir do clique no botão salvar até o encontro com a classe responsável por esta ação, é a parte do Controller.
MAS QUAL É O MOTIVO DESSA DIVISÃO?
A divisão dessa estrutura em camadas se justifica primeiro pela organização que ela proporciona, além de promover maior organização e responsabilidade.
Em linhas gerais o uso de algum framework MVC pode se traduzir em inúmeros benefícios extras para o projeto. Assim, entre estes benefícios temos, aumento de produtividade; redução da complexidade do código, facilidade para documentar, uso de uma linguagem (vocabulário) comum dentro da equipe. E principalmente, permite a reutilização de módulos do sistema em outros sistemas.
Sabemos que o ecossistema Java é constituído por inúmeros frameworks que fornecem aos desenvolvedores os mais variados e completos recursos para o desenvolvimento de suas aplicações. E no que se refere ao framework MVC, dois se destacam, a saber Spring MVC que permite a criação de aplicações web flexíveis e robustas e JSF – JavaServer Faces, implementa conceitos do padrão MVC e que facilita a construção de interfaces de usuários para aplicações web baseadas em componentes.
O Spring MVC normalmente é utilizado com Tymelife ou com JSP – Java Server Pages, assim além de implementarmos uma das camadas MVC poderemos desenvolver com maior agilidade. O que aliás, faz parte do escopo de atribuições de padrões MVC, o desenvolvimento ágil de aplicações.
CAMADA DE MODELO (MODEL)
Esta é a camada que representa a ponte entre a View e Controller. A camada de modelo é a responsável por gerenciar o comportamento dos dados através das regras de negócio, implementação de lógica e funções. Visto que é esta camada quem responde pela modelagem do problema que a aplicação tenciona resolver.
Considerada o coração da execução da aplicação, é a partir dos comandos efetuados na camada de controle que a Model quem armazena, manipula e gera os dados que serão exibidos na View.
CAMADA DE VISUALIZAÇÃO (VIEW)
A camada de visualização está relacionada com o front-end. Assim, ela compreendendo a parte de saída dos dados, ou seja, onde os dados resultantes da interação com a camada de modelo são exibidos.
A camada View pode também promover uma interação com a camada de controle, quando por exemplo, a visualização de dados aciona um botão que quando clicado provoca uma ação no controle.
É interessante observar que a View cumpre a função de garantir que os dados exibidos reflitam o estado da camada de modelo. Assim, se alguma mudança ocorrer no estado da Model, altera-se as views que dependem dele.
CAMADA DE CONTROLE (CONTROLLER)
E por fim a camada de controle que estabelece a mediação entre a View e a Model, interceptando os dados da tela que serão injetados na camada de Modelo. Garantindo que ambas sejam alteradas em conformidade com a solicitação feita pelo usuário. Seu foco está na ação do usuário. Grosso modo, o que esta camada faz é enviar as ações do usuário para as camadas de visualização e de controle, onde cada uma realizará a ação necessária que lhe cabe.
EM POUCAS PALAVRAS
Tanto a camada de modelo como a camada de controle são, no contexto do Java, classes. A View caberá especificar para qual controle será feita a requisição. Por exemplo, considere o exemplo de uma tela com um método (botão) de salvar, este botão deverá ter mapeado na camada de controle que quando acionado o método de salvar deverá ser invocado. E então esta camada receberá os dados injetados e já preenchidos do objeto que está na camada de modelo. E assim é com as demais ações, seja ela de mover, excluir, atualizar.