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.

  • ๐Ÿงฑ Trรชs componentes: O padrรฃo MVC divide uma aplicaรงรฃo em Modelo (dados), Visรฃo (apresentaรงรฃo) e Controlador (interaรงรฃo com o usuรกrio).
  • ๐Ÿ—„๏ธ Modelo: Armazena dados e lรณgica de negรณcios, respondendo a solicitaรงรตes da View e instruรงรตes do Controller.
  • ๐Ÿ–ผ๏ธ Vista: Apresenta dados ao usuรกrio por meio de elementos de interface do usuรกrio, como caixas de texto, menus suspensos, grรกficos e tabelas.
  • ๐ŸŽฎ Controlador: Interpreta a entrada do usuรกrio e, em seguida, atualiza o Modelo e a Visualizaรงรฃo de acordo.
  • โš™๏ธ Estruturas populares: Spring MVC, Django, Ruby on Rails, CakePHP, Laravel e CodeO Igniter implementa o padrรฃo MVC.
  • โš–๏ธ Vantagens e Desvantagens: O MVC melhora a testabilidade e o desenvolvimento paralelo, mas adiciona abstraรงรตes.traccamadas de navegaรงรฃo e complexidade de navegaรงรฃo.

MVC ArchiArquitetura e Estrutura

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:

MVC Archiarquitetura
MVC Archidiagrama de arquitetura

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

Exemplos de MVC

  • 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

Exemplos de MVC

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:

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.

Perguntas Frequentes

MVC รฉ um padrรฃo arquitetural, nรฃo um simples padrรฃo de projeto. Ele organiza toda uma aplicaรงรฃo em camadas de Modelo, Visรฃo e Controlador, separando a lรณgica de dados, apresentaรงรฃo e interaรงรฃo com o usuรกrio.

O MVC utiliza um Controller para lidar com a entrada de dados e atualizar o Model e a View, enquanto o MVVM utiliza um ViewModel com data binding. O MVVM reduz o cรณdigo repetitivo e รฉ comum em frameworks de interface de usuรกrio modernos.

Use o padrรฃo MVC ao desenvolver aplicaรงรตes que precisam de uma clara separaรงรฃo entre dados, interface do usuรกrio e lรณgica, especialmente aplicaรงรตes web mantidas por equipes maiores. Ele melhora a testabilidade, o desenvolvimento paralelo e o roteamento otimizado para SEO.

Os recursos de IA geralmente sรฃo adicionados na camada de Modelo ou de serviรงo de uma aplicaรงรฃo MVC. O Controlador passa a entrada do usuรกrio para os modelos de IA, e a Visรฃo exibe previsรตes, recomendaรงรตes ou conteรบdo gerado para os usuรกrios.

Sim. Assistentes de codificaรงรฃo com IA podem criar componentes MVC, gerar controladores, modelos e visualizaรงรตes, e sugerir rotas. Os desenvolvedores ainda revisam o resultado para garantir a lรณgica de negรณcios correta e a seguranรงa.

Resuma esta postagem com: