Skip to content

1. Introdução

O PDF deste documento está disponível |AQUI|.

Os exemplos deste documento estão disponíveis |AQUI|.

Propomos aqui apresentar, por meio de exemplos, os conceitos importantes do ASP.NET MVC, um framework web.NET, que fornece uma estrutura para o desenvolvimento de aplicativos web de acordo com o modelo MVC (Modelo – Visão – Controlador).

A compreensão dos exemplos deste documento requer poucos pré-requisitos. São necessários apenas conhecimentos básicos da linguagem C#. Esses conhecimentos podem ser encontrados no documento “Introdução à linguagem C#” no URL [Aprendizado da linguagem C# versão 3.0 com o Framework .NET 3.5 (2008)]. É proposto um estudo de caso para colocar em prática os conhecimentos adquiridos em ASP.NET MVC. Ele utiliza o ORM (Mapeador Objeto-Relacional) Entity Framework. Este ORM é apresentado no documento “Introdução ao Entity Framework 5 Code First”, disponível no URL [Introdução prática ao Entity Framework 5 Code First (2012)].

Este documento está incompleto em muitos aspectos. Para aprofundar o assunto, pode-se consultar as seguintes referências:

  • [ref1]: o livro “Pro ASP.NET MVC 4”, escrito por Adam Freeman e publicado pela editora Apress. É um excelente livro. Se ele estivesse disponível online gratuitamente e em francês, este documento não teria razão de existir. Recomendo a todos que puderem que se iniciem no ASP.NET MVC com a ajuda deste livro. Os códigos-fonte dos exemplos do livro estão disponíveis gratuitamente no URL [http://www.apress.com/9781430242369];
  • [ref2]: o site do framework [http://www.asp.net/mvc]. Lá você encontrará todo o material necessário para o autoaprendizado. Uma versão em francês está disponível no URL [http://dotnet.developpez.com/mvc/ ];
  • o site do [developpez.com] dedicado ao ASP.NET e ao [http://dotnet.developpez.com/aspnet/ ].

O documento foi escrito de forma a poder ser lido sem a necessidade de um computador à mão. Por isso, são apresentadas muitas capturas de tela.

1.1. O papel de ASP.NET e MVC em um aplicativo web

Primeiramente, vamos situar o ASP.NET MVC no contexto do desenvolvimento de uma aplicação web. Na maioria das vezes, ela será construída sobre uma arquitetura multicamadas como a seguinte:

  • a camada [Web] é a camada que interage diretamente com o usuário da aplicação web. O usuário interage com a aplicação web por meio de páginas da web visualizadas em um navegador. É nessa camada que se situam ASP.NET e MVC, e exclusivamente nessa camada;
  • a camada [métier] implementa as regras de gestão da aplicação, tais como o cálculo de um salário ou de uma fatura. Essa camada utiliza dados provenientes do usuário por meio da camada [Web] e da camada SGBD por meio da camada [DAO];
  • A camada [DAO] (Data Access Objects), a camada [ORM] (Object Relational Mapper) e o conector ADO.NET gerenciam o acesso aos dados do SGBD. A camada [ORM] faz a ponte entre os objetos manipulados pela camada [DAO] e as linhas e colunas das tabelas de um banco de dados relacional. Dois ORM são comumente utilizados no mundo: o NET, NHibernate (http://sourceforge.net/projects/nhibernate/) e o Entity Framework (http://msdn.microsoft.com/en-us/data/ef.aspx);
  • a integração das camadas pode ser realizada por meio de um contêiner de injeção de dependências (Dependency Injection Container), como o Spring (http://www.springframework.net/);

A maioria dos exemplos apresentados a seguir utilizará apenas uma camada, a camada [Web]:

No entanto, este documento será concluído com a construção de uma aplicação web multicamadas:

1.2. O modelo de desenvolvimento de ASP.NET MVC

ASP.NET MVC implementa o modelo de arquitetura denominado MVC (Modelo – Visão – Controlador) da seguinte maneira:

O processamento de uma solicitação de um cliente ocorre da seguinte maneira:

  1. solicitação — as URL solicitadas têm o formato http://machine:port/contexte/Controlleur/Action/param1/param2/....?p1=v1&p2=v2&.... O [Front Controller] utiliza um arquivo de configuração para “rotear” a solicitação para o controlador correto e para a ação correta dentro desse controlador. Para isso, ele utiliza o caminho [Controlleur/Action] do URL. O restante do URL e do [/param1/param2/...] são parâmetros opcionais que serão transmitidos à ação. O C de MVC é, neste caso, a sequência [Front Controller, Contrôleur, Action]. Se o caminho [Controlleur/Action] não levar a um controlador ou a uma ação existente, o servidor web responderá que a ação URL solicitada não foi encontrada.
  1. processamento
  • a ação selecionada pode utilizar os parâmetros parami que o [Front Controller] lhe transmitiu. Esses parâmetros podem provir de várias fontes:
  • do caminho [/param1/param2/...] do URL,
  • dos parâmetros [p1=v1&p2=v2] do URL,
  • dos parâmetros enviados pelo navegador junto com sua solicitação;
  • no processamento da solicitação do usuário, a ação pode precisar das camadas [métier] e [2b]. Uma vez processada a solicitação do cliente, ela pode gerar diversas respostas. Um exemplo clássico é:
  • uma página de erro, caso a solicitação não tenha sido processada corretamente
  • uma página de confirmação, caso contrário
  • a ação solicita que uma determinada vista seja exibida: [3]. Essa vista exibirá dados chamados de modelo da vista. Esse é o M de MVC. A ação criará esse modelo M [2c] e solicitará que uma vista V seja exibida [3];
  1. resposta — a vista V selecionada utiliza o modelo M criado pela ação para inicializar as partes dinâmicas da resposta HTML que ela deve enviar ao cliente e, em seguida, envia essa resposta.

Agora, vamos esclarecer a relação entre a arquitetura web MVC e a arquitetura em camadas. Dependendo da definição que se dá ao modelo, esses dois conceitos podem estar ou não relacionados. Consideremos uma aplicação web ASP.NET MVC de uma camada:

Se implementarmos a camada [Web] com ASP.NET e MVC, teremos, de fato, uma arquitetura web MVC, mas não uma arquitetura multicamadas. Nesse caso, a camada [Web] cuidará de tudo: apresentação, lógica de negócios e acesso aos dados. São as ações que realizarão esse trabalho.

Agora, vamos considerar uma arquitetura web multicamadas:

A camada [Web] pode ser implementada sem framework e sem seguir o modelo MVC. Temos, portanto, uma arquitetura multicamadas, mas a camada Web não implementa o modelo MVC.

Assim, a camada [Web] acimaacima pode ser implementada com ASP.NET e MVC, obtendo-se assim uma arquitetura em camadas com uma camada [Web] do tipo MVC. Feito isso, é possível substituir essa camada ASP.NET MVC por uma camada ASP.NET clássica (WebForms), mantendo o restante (de negócio, DAO, ORM) inalterado. Temos, então, uma arquitetura em camadas com uma camada [Web] que não é mais do tipo MVC.

Em MVC, afirmamos que o modelo M era o da vista V, c.a.d, ou seja, o conjunto de dados exibidos pela vista V. É fornecida outra definição do modelo M de MVC:

Muitos autores consideram que o que está à direita da camada [Web] forma o modelo M do MVC. Para evitar ambiguidades, pode-se falar:

  • do modelo do domínio, ao se referir a tudo o que está à direita da camada [Web]
  • do modelo da visualização, quando se refere aos dados exibidos por uma visualização V

Daqui em diante, o termo “modelo M” se referirá exclusivamente ao modelo de uma vista V.

1.3. As ferramentas utilizadas

A seguir, utilizamos (setembro de 2013) as versões Express do Visual Studio 2012:

  • [http://www.microsoft.com/visualstudio/fra/products/visual-studio-express-for-windows-desktop ] para aplicativos de desktop;
  • [http://www.microsoft.com/visualstudio/fra/products/visual-studio-express-for-Web ] para aplicativos da Web.

Para instalar as versões mais recentes desses produtos, é possível utilizar o produto [Web Platform Installer] da Microsoft (http://www.microsoft.com/Web/downloads/platform.aspx).

Além disso, utilizar-se-á o navegador Chrome do Google (http://www.google.fr/intl/fr/chrome/browser/). Adicionar-se-á a ele a extensão [Advanced Rest Client] . Pode-se proceder da seguinte forma:

 
  • o aplicativo estará então disponível para download:
  • para obtê-la, você precisará criar uma conta do Google. O [Google Web Store] solicita, em seguida, a confirmação do [1]:
  • Em [2], a extensão adicionada fica disponível na opção [Applications] [3]. Essa opção é exibida em cada nova aba que você criar (CTRL-T) no navegador.

1.4. Os exemplos

A maioria dos exemplos de aprendizado se limitará apenas à camada da Web:

Após concluir este aprendizado, apresentaremos um aplicativo web multicamadas: