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:
- 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.
- 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];
- 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:
- acesse o site do [Google Web store] (https://chrome.google.com/webstore) com o navegador Chrome;
- procure o aplicativo [Advanced Rest Client]:
![]() |
- 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:
![]() |











