1. Introdução
O PDF deste documento está disponível |AQUI|.
Os exemplos deste documento estão disponíveis |AQUI|.
O objetivo deste documento é apresentar, através de exemplos, os conceitos-chave do ASP.NET MVC, uma estrutura web .NET que fornece um ambiente para o desenvolvimento de aplicações web de acordo com o padrão MVC (Modelo–Visão–Controlador).
A compreensão dos exemplos deste documento requer poucos pré-requisitos. Apenas é necessário um conhecimento básico da linguagem C#. Este pode ser encontrado no documento Introdução à Linguagem C#, na URL [https://stahe.github.io/pt-csharp-mai-2008/]. É fornecido um estudo de caso para pôr em prática os conhecimentos adquiridos sobre o ASP.NET MVC. Este utiliza o ORM (Object-Relational Mapper) Entity Framework. Este ORM é apresentado no documento Introdução ao Entity Framework 5 Code First, disponível em [https://stahe.github.io/pt-ef5cf-oct-2012/].
Os vários exemplos deste documento estão disponíveis no URL [https://stahe.github.io/pt-aspnetmvc-nov-2013/] como um ficheiro ZIP para download.
Este documento está incompleto em muitos aspetos. Para saber mais sobre o ASP.NET MVC, pode consultar as seguintes referências:
- [ref1]: o livro «Pro ASP.NET MVC 4», escrito por Adam Freeman e publicado pela Apress. É um livro excelente. Se estivesse disponível online gratuitamente e em francês, este documento seria desnecessário. Recomendo que quem puder o faça, aprenda ASP.NET MVC utilizando este livro. O código-fonte dos exemplos do livro está disponível gratuitamente em [http://www.apress.com/9781430242369];
- [ref2]: o site do framework [http://www.asp.net/mvc]. Aí encontrará todos os materiais necessários para o autoaprendizagem. Está disponível uma versão em francês no URL [http://dotnet.developpez.com/mvc/];
- o site [developpez.com] dedicado ao ASP.NET [http://dotnet.developpez.com/aspnet/ ].
Este documento foi escrito de forma a poder ser lido sem um computador à mão. Por isso, estão incluídas muitas capturas de ecrã.
1.1. O papel do ASP.NET MVC numa aplicação Web
Primeiro, vamos contextualizar o ASP.NET MVC no âmbito do desenvolvimento de uma aplicação web. Na maioria das vezes, esta será construída com base numa arquitetura multicamadas, como a seguinte:
![]() |
- a camada [Web] é a camada em contacto com o utilizador da aplicação web. O utilizador interage com a aplicação web através de páginas web apresentadas por um navegador. É nesta camada que o ASP.NET MVC reside, e apenas nesta camada;
- a camada [business] implementa a lógica de negócio da aplicação, como o cálculo de um salário ou de uma fatura. Esta camada utiliza dados do utilizador através da camada [Web] e do SGBD através da camada [DAO];
- A camada [DAO] (Data Access Objects), a camada [ORM] (Object Relational Mapper) e o conector ADO.NET gerem o acesso aos dados no SGBD. A camada [ORM] atua como uma ponte entre os objetos tratados pela camada [DAO] e as linhas e colunas das tabelas numa base de dados relacional. Dois ORMs são comumente utilizados no mundo .NET: NHibernate (http://sourceforge.net/projects/nhibernate/) e Entity Framework (http://msdn.microsoft.com/en-us/data/ef.aspx);
- a integração destas camadas pode ser alcançada utilizando um contentor de injeção de dependências, como o Spring (http://www.springframework.net/);
A maioria dos exemplos apresentados abaixo utilizará apenas uma única camada, a camada [Web]:
![]() |
No entanto, este documento terminará com a construção de uma aplicação web multicamadas:
![]() |
1.2. O modelo de desenvolvimento ASP.NET MVC
O ASP.NET MVC implementa o padrão arquitetónico MVC (Modelo–Vista–Controlador) da seguinte forma:
![]() |
O processamento de um pedido do cliente decorre da seguinte forma:
- solicitação - as URLs solicitadas têm o formato http://machine:port/contexte/Controlleur/Action/param1/param2/....?p1=v1&p2=v2&... O [Front Controller] utiliza um ficheiro de configuração para «encaminhar» a solicitação para o controlador correto e para a ação correta dentro desse controlador. Para tal, utiliza o caminho [Controller/Action] da URL. O resto da URL [/param1/param2/...] consiste em parâmetros opcionais que serão passados para a ação. O «C» em MVC aqui refere-se à cadeia [Front Controller, Controller, Action]. Se o caminho [Controller/Action] não conduzir a um controlador ou ação existente, o servidor web responderá que a URL solicitada não foi encontrada.
- Processamento
- A ação selecionada pode utilizar os parâmetros que o [Controlador Frontal] lhe passou. Estes podem provir de várias fontes:
- o caminho [/param1/param2/...] da URL,
- os parâmetros [p1=v1&p2=v2] da URL,
- parâmetros enviados pelo navegador com o seu pedido;
- ao processar a solicitação do utilizador, a ação pode necessitar da camada [business] [2b]. Uma vez processada a solicitação do cliente, ela pode desencadear várias respostas. Um exemplo clássico é:
- uma página de erro, se a solicitação não puder ser processada corretamente
- uma página de confirmação, caso contrário
- a ação instrui que uma vista específica seja exibida [3]. Esta vista exibirá dados conhecidos como o modelo de vista. Este é o M em MVC. A ação criará este modelo M [2c] e instruirá que uma vista V seja exibida [3];
- resposta — a vista V selecionada utiliza o modelo M construído pela ação para inicializar as partes dinâmicas da resposta HTML que 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 de como definimos o modelo, estes dois conceitos podem ou não estar relacionados. Considere uma aplicação web ASP.NET MVC de camada única:
![]() |
Se implementarmos a camada [Web] com ASP.NET MVC, teremos de facto uma arquitetura web MVC, mas não uma arquitetura multicamadas. Aqui, a camada [Web] tratará de tudo: apresentação, lógica de negócio e acesso aos dados. São as ações que realizarão este trabalho.
Agora, vamos considerar uma arquitetura web multicamadas:
![]() |
A camada [Web] pode ser implementada sem um framework e sem seguir o modelo MVC. Temos então uma arquitetura multicamadas, mas a camada Web não implementa o modelo MVC.
Assim, a camada [Web] acima pode ser implementada com ASP.NET MVC, resultando numa arquitetura em camadas com uma camada [Web] de estilo MVC. Uma vez feito isto, podemos substituir esta camada ASP.NET MVC por uma camada ASP.NET clássica (WebForms), mantendo o resto (lógica de negócio, DAO, ORM) inalterado. Ficamos então com uma arquitetura em camadas com uma camada [Web] que já não é baseada em MVC.
No MVC, dissemos que o modelo M era o da vista V, ou seja, o conjunto de dados exibidos pela vista V. É apresentada outra definição do modelo M no MVC:
![]() |
Muitos autores consideram que o que se encontra à direita da camada [Web] constitui o modelo M do MVC. Para evitar ambiguidades, podemos referir-nos a:
- o modelo de domínio quando nos referimos a tudo à direita da camada [Web]
- o modelo de vista quando nos referimos aos dados apresentados por uma vista V
Daqui em diante, o termo «modelo M» referir-se-á exclusivamente ao modelo de uma vista V.
1.3. Ferramentas utilizadas
De agora em diante, estamos a utilizar (a partir de 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 aplicações de ambiente de trabalho;
- [http://www.microsoft.com/visualstudio/fra/products/visual-studio-express-for-Web ] para aplicações web.
Para instalar as versões mais recentes destes produtos, pode utilizar o [Web Platform Installer] da Microsoft (http://www.microsoft.com/Web/downloads/platform.aspx).
Além disso, utilize o navegador Chrome da Google (http://www.google.fr/intl/fr/chrome/browser/). Instale a extensão [ Advanced Rest Client] ( ). Veja como fazê-lo:
- Aceda à [Google Web Store] (https://chrome.google.com/webstore) utilizando o navegador Chrome;
- procure a aplicação [Advanced Rest Client]:

- o aplicativo estará então disponível para download:

- Para o obter, terá de criar uma conta Google. A [Google Web Store] irá então solicitar a sua confirmação [1]:
![]() |
- Em [2], a extensão adicionada está disponível na opção [Aplicações] [3]. Esta opção aparece em cada nova guia que criar (CTRL-T) no navegador.
1.4. Exemplos
A maioria dos exemplos de aprendizagem limitar-se-á apenas à camada web:
![]() |
Assim que este tutorial estiver concluído, apresentaremos uma aplicação web multicamadas:
![]() |









