MVC ArchiArquitetura e estrutura com exemplos
โก Resumo Inteligente
O padrรฃo arquitetural Model-View-Controller (MVC) separa uma aplicaรงรฃo em trรชs componentes โ Modelo, Visรฃo e Controlador โ isolando a lรณgica de negรณcios da camada de apresentaรงรฃo para construir aplicaรงรตes web e desktop de fรกcil manutenรงรฃo e teste, utilizando frameworks como Spring, Django e Laravel.

O que รฉ estrutura MVC?
O Controlador de exibiรงรฃo de modelo (MVC) framework รฉ um padrรฃo de arquitetura que separa um aplicativo em trรชs componentes lรณgicos principais: Modelo, Visualizaรงรฃo e Controlador. Daรญ a abreviatura MVC. Cada componente da arquitetura รฉ construรญdo para lidar com aspectos especรญficos de desenvolvimento de um aplicativo. O MVC separa a lรณgica de negรณcios e a camada de apresentaรงรฃo uma da outra. Era tradicionalmente usado para interfaces grรกficas de usuรกrio (GUIs) de desktop. Hoje em dia, a arquitetura MVC em tecnologia web se tornou popular para projetar aplicativos web, bem como aplicativos mรณveis.
Histรณria do MVC
- A arquitetura MVC foi discutida pela primeira vez em 1979 por Trygve Reenskaug
- O modelo MVC foi introduzido pela primeira vez em 1987 na linguagem de programaรงรฃo Smalltalk.
- MVC foi aceito pela primeira vez como um conceito geral, em um artigo de 1988
- Nos รบltimos tempos, o padrรฃo MVC tem sido amplamente utilizado em aplicaรงรตes web modernas.
Recursos do MVC
- Testabilidade fรกcil e sem atrito. Estrutura altamente testรกvel, extensรญvel e conectรกvel
- Para projetar uma arquitetura de aplicaรงรฃo web usando o padrรฃo MVC, vocรช tem controle total sobre o seu HTML e tambรฉm sobre o seu cรณdigo. URLs
- Aproveite os recursos existentes fornecidos por ASP.NET, JSP, Django, etc.
- Separaรงรฃo clara de lรณgica: Modelo, Visualizaรงรฃo, Controlador. Separaรงรฃo de tarefas de aplicaรงรฃo, viz. lรณgica de negรณcios, lรณgica Ul e lรณgica de entrada
- URL Roteamento otimizado para SEO URLs. Poderoso URL-mapping para ser compreensรญvel e pesquisรกvel URLs
- Suporte para Desenvolvimento Orientado a Testes (TDD)
MVC Archiarquitetura
Agora que os benefรญcios estรฃo claros, aqui estรก a arquitetura detalhada do framework MVC:

Trรชs componentes importantes do MVC sรฃo:
- Modelo: Inclui todos os dados e sua lรณgica relacionada
- Visualizar: apresenta dados ao usuรกrio ou lida com a interaรงรฃo do usuรกrio
- Controlador: uma interface entre os componentes Model e View
Vamos analisar cada um desses componentes em detalhes:
Consultar
Uma View รฉ a parte do aplicativo que representa a apresentaรงรฃo dos dados.
As visualizaรงรตes sรฃo criadas a partir dos dados coletados do modelo. Uma visualizaรงรฃo solicita informaรงรตes ao modelo para que ele apresente a saรญda ao usuรกrio.
A visualizaรงรฃo tambรฉm representa os dados de grรกficos, diagramas e tabelas. Por exemplo, qualquer visualizaรงรฃo do cliente incluirรก todos os componentes da IU, como caixas de texto, menus suspensos, etc.
Responsรกvel pelo Tratamento
O Controlador รฉ a parte da aplicaรงรฃo que lida com a interaรงรฃo do usuรกrio. Ele interpreta as entradas do mouse e do teclado do usuรกrio, informando o modelo e a visualizaรงรฃo para que se alterem conforme necessรกrio.
Um controlador envia comandos ao modelo para atualizar seu estado (por exemplo, salvar um documento especรญfico). O controlador tambรฉm envia comandos ร sua visualizaรงรฃo associada para alterar a apresentaรงรฃo da visualizaรงรฃo (por exemplo, rolar um documento especรญfico).
Modelo
O componente do modelo armazena dados e sua lรณgica relacionada. Representa dados que estรฃo sendo transferidos entre componentes do controlador ou qualquer outra lรณgica de negรณcios relacionada. Por exemplo, um objeto Controller recuperarรก as informaรงรตes do cliente do banco de dados. Ele manipula dados e os envia de volta ao banco de dados ou os utiliza para renderizar os mesmos dados.
Ele responde ร s solicitaรงรตes das visualizaรงรตes e tambรฉm ร s instruรงรตes do controlador para se atualizar. ร tambรฉm o nรญvel mais baixo do padrรฃo, responsรกvel pela manutenรงรฃo dos dados.
Exemplos de MVC
Vamos ver o exemplo do Model View Controller da vida diรกria:
Exemplo 1
- Vamos supor que vocรช vรก a um restaurante. Vocรช nรฃo irรก para a cozinha preparar comida, o que certamente poderรก fazer em sua casa. Em vez disso, vocรช vai lรก e espera o garรงom chegar.
- Agora o garรงom vem atรฉ vocรช e vocรช pede a comida. O garรงom nรฃo sabe quem vocรช รฉ e o que vocรช quer, ele apenas anotou os detalhes do seu pedido de comida.
- Em seguida, o garรงom segue para a cozinha. Na cozinha, o garรงom nรฃo prepara a comida.
- O cozinheiro prepara sua comida. O garรงom recebe seu pedido junto com o nรบmero da mesa.
- Cozinhe e prepare a comida para vocรช. Ele usa ingredientes para cozinhar a comida. Vamos supor que vocรช peรงa um sanduรญche de vegetais. Entรฃo ele precisa de pรฃo, tomate, batata, pimentรฃo, cebola, pedaรงo, queijo, etc., que ele compra na geladeira
- Cozinhe e entregue a comida ao garรงom. Agora รฉ funรงรฃo do garรงom levar a comida para fora da cozinha.
- Agora o garรงom sabe quais alimentos vocรช pediu e como sรฃo servidos.
Neste exemplo de arquitetura MVC,
View= You Waiter= Controller Cook= Model Refrigerator= Data
Vamos ver mais um exemplo de modelo MVC,
Exemplo 2
O mecanismo de conduรงรฃo do carro รฉ outro exemplo do modelo MVC.
- Cada carro consiste em trรชs partes principais.
- Visรฃo: Interface do usuรกrio: (Alavanca de cรขmbio, painรฉis, volante, freio, etc.)
- Controlador- Mecanismo (Motor)
- Modelo - Armazenamento (tanque de Gasolina ou Diesel)
O carro funciona a partir do motor e consome combustรญvel do armazenamento, mas funciona apenas usando os dispositivos de interface do usuรกrio mencionados.
Estruturas Web MVC populares
Aqui estรก uma lista de algumas estruturas MVC populares:
- Ruby on Rails
- Django
- CakePHP
- Yii
- CerejaPy
- Primavera MVC
- Catalisador
- Rails
- Zend Framework
- CodeIgnorar
- Laravel
- Combustรญvel PHP
- Symphony
Vantagens do MVC: principais benefรญcios
Aqui estรฃo os principais benefรญcios do uso da arquitetura MVC:
- Fรกcil manutenรงรฃo de cรณdigo que รฉ fรกcil de estender e crescer
- O componente do modelo MVC pode ser testado separadamente do usuรกrio
- Suporte mais fรกcil para novos tipos de clientes
- O desenvolvimento dos vรกrios componentes pode ser realizado paralelamente.
- Ajuda a evitar complexidade, dividindo um aplicativo em trรชs unidades. Modelo, visualizaรงรฃo e controlador
- Ele usa apenas um padrรฃo Front Controller que processa solicitaรงรตes de aplicativos da web por meio de um รบnico controlador.
- Oferece o melhor suporte para desenvolvimento dirigido por teste
- Funciona bem para aplicativos da Web que sรฃo suportados por grandes equipes de web designers e desenvolvedores.
- Garante uma clara separaรงรฃo de responsabilidades (SoC).
- Otimizaรงรฃo de mecanismos de pesquisa (SEO) amigรกvel.
- Todas as classes e objetos sรฃo independentes uns dos outros para que vocรช possa testรก-los separadamente.
- O padrรฃo de projeto MVC permite agrupamento lรณgicoping de aรงรตes relacionadas em um controlador em conjunto.
Desvantagens de usar MVC
- Difรญcil de ler, alterar, testar unidade e reutilizar este modelo
- A navegaรงรฃo pela estrutura pode, por vezes, ser complexa, pois introduz novas camadas de abstraรงรฃo.tracรงรฃo que exige que os usuรกrios se adaptem aos critรฉrios de decomposiรงรฃo do MVC.
- Sem suporte formal de validaรงรฃo
- Aumento da complexidade e ineficiรชncia dos dados
- A dificuldade de usar MVC com a interface de usuรกrio moderna
- ร necessรกrio que vรกrios programadores conduzam programaรงรฃo paralela.
- ร necessรกrio conhecimento de mรบltiplas tecnologias.
- Manutenรงรฃo de muitos cรณdigos no Controller
De 3 camadas Archiarquitetura vs. MVC Archiarquitetura
| Parรขmetro | 3-Tier Archiarquitetura | MVC Archiarquitetura |
|---|---|---|
| Comunicaรงรฃo | Este tipo de padrรฃo de arquitetura nunca se comunica diretamente com a camada de dados. | Todas as camadas se comunicam diretamente usando a topologia triangular. |
| Uso | 3 camadas: amplamente utilizado em aplicaรงรตes web onde o cliente, as camadas de dados e o middleware sรฃo executados em plataformas fisicamente separadas. | Geralmente usado em aplicativos executados em uma รบnica estaรงรฃo de trabalho grรกfica. |


