Neste artigo, faremos uma pequena descrição sobre o padrão de arquitetura de software MVC.
Apresentaremos brevemente o funcionamento das camadas MVC, exemplificando o funcionamento básico com o Node.JS, assim como, mostramos algumas vantagens de se utilizar este padrão.

MVC – CAMADAS

Model-view-controller (MVC) é um padrão de arquitetura de software que divide a aplicação em três camadas: Model, View e Controller.

M (MODEL)

A camada Model (modelo) é responsável pela leitura, escrita e validação dos dados. Nesta camada são implementadas as regras de negócios.

Regras de negócios são as definições, de como a empresa em questão faz negócios. É a declaração de como a empresa trabalha todos os processos para a execução do serviço ou para a entrega do produto.

V (VIEW)

A camada View (visão) é responsável pela interação com o usuário. Nesta camada são apresentados os dados ao usuário.

Os dados podem ser entregues em vários formatos, dependendo do que for preciso, como páginas HTML, arquivos XML, documentos, vídeos, fotos, músicas, entre outros.

C (CONTROLLER)

A camada Controller (controlador) é responsável por lidar com as requisições do usuário. Ela gerencia as ações realizadas, fala qual Model e qual View utilizar, para que a ação seja completada.

MVC – Exemplo básico do funcionamento em Node.JS

O padrão MVC é simples na utilização, mas sua implementação no código pode ser um tanto complexa.  Segue um exemplo simples e básico que utiliza do conceito MVC em Node.JS.
Este é o fluxo que a aplicação MVC irá seguir:

A aplicação para exemplificação do MVC em Node.JS, consiste em uma tela onde serão listadas as últimas notícias fictícias. Para simplificação do exemplo, não utilizarei um banco de dados, mas um arquivo JSON onde estarão salvas as notícias que serão exibidas. O código da aplicação está disponível no GitHub: https://github.com/andersonirias/mvc-exemplo-nodejs.

Nosso projeto conterá a estrutura apresentada abaixo:

O arquivo package.json, possui vários metadados relevantes para o projeto. Este arquivo é utilizado para fornecer informações que permitem identificar o projeto e trabalhar com suas dependências.



O arquivo app.js é o arquivo principal do projeto. Primeiramente incluímos as dependências do projeto. Depois configuramos o módulo ejs, que é para trabalharmos com as views. Após isso configuramos o módulo consign, que faz o carregamento automático dos scripts do nosso projeto. E por fim configuramos o servidor web do framework express para escutar requisições http na porta 3000.

O arquivo data/noticias.json é o JSON que estamos utilizando como base de dados do projeto, para armazenar as notícias que serão exibidas.

O arquivo src/routes/news.js é o responsável por realizar o roteamento da aplicação. Nele falamos que ao se acessar a raiz da aplicação, com o método GET http://localhost:3000/”. Será chamado o controller news.

O arquivo src/controller/news.js é o controller da aplicação. Primeiramente estamos criando um objeto do model news. Depois estamos utilizando a função getLastNews para recuperar as últimas 5 notícias do arquivo noticias.json. E por fim passamos as notícias para a view news/index.

O arquivo src/models/news.js é o model da aplicação. Primeiramente incluímos o módulo fs que auxiliará na leitura do arquivo JSON. Depois criamos a função news que vai funcionar como uma classe news. Após isto temos a função getLastNews, que realiza a leitura das notícias contidas no arquivo noticias.json e recupera somente as 5 ultimas, conforme a regra de negócio fictícia que foi estabelecida.

O arquivo src/views/news/index.ejs é a view da aplicação. Ela é um arquivo HTML simples, onde pegamos as notícias enviadas pelo controller e realizamos uma iteração sobre elas, para exibir todas na tela inicial.

Este será o resultado da aplicação:



MVC – Vantagens no desenvolvimento

O padrão de desenvolvimento de software MVC (Model view controller), traz consigo grandes vantagens para o desenvolvimento de aplicações, entre elas:

Reusabilidade de código: uma funcionalidade já implementada em uma parte do sistema, pode ser novamente utilizada em outra parte, sem ser necessário o seu re-desenvolvimento.

Exemplo: em um sistema toda vez que um usuário altera sua senha, ele recebe um e-mail informando a alteração. Neste mesmo sistema quando ocorre uma venda, também é enviado um e-mail informando este usuário. Os e-mails enviados possuem assunto e conteúdo diferentes, mas ambos utilizam a funcionalidade de envio de e-mail. Sendo assim, não é necessário realizar o desenvolvimento de um novo código de envio de e-mails. Basta somente utilizar a funcionalidade existente, modificando os dados a serem enviados.

Desenvolvimento rápido: neste modelo é possível que desenvolvedores e designers trabalhem simultaneamente na aplicação. Cada um trabalharia em uma camada diferente da aplicação, tornando o desenvolvimento produtivo.

Fácil manutenção: como o código é dividido em partes distintas, se torna fácil adicionar novas funcionalidades e alterar características antigas. O código também fica mais fácil de ser compreendido por outros desenvolvedores.

Exemplo: um sistema de uma transportadora foi feito por um desenvolvedor que não presta mais serviços para mesma. No futuro esta transportadora precisa realizar uma modificação em uma parte específica do sistema, é contratado outro desenvolvedor para a tarefa. Quando o responsável pela rotina na transportadora informar o mesmo ao desenvolvedor, ele conseguirá facilmente identificar o reportado no código do sistema.

The following two tabs change content below.

Anderson Irias

Latest posts by Anderson Irias (see all)

Nenhum comentário

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *