1. Introdução
O PDF deste documento está disponível |AQUI|.
Os exemplos deste documento estão disponíveis |AQUI|.
Propomos aqui apresentar, através de exemplos, os conceitos importantes do ASP.NET MVC, um framework Web.NET, que fornece um quadro para o desenvolvimento de aplicações Web de acordo com o modelo MVC (Modelo – Vista – Controlador).
A compreensão dos exemplos deste documento requer poucos pré-requisitos. São necessários apenas conhecimentos básicos da linguagem C#. Estes podem ser consultados no documento «Introdução à linguagem C#» em URL [Aprender C# versão 3.0 com o .NET Framework 3.5 (2008)]. É apresentado um estudo de caso para pôr em prática os conhecimentos adquiridos em ASP.NET MVC. Este estudo de caso 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 ao Entity Framework 5 Code First através de exemplos (2012)].
Os vários exemplos deste documento estão disponíveis em URL [AQUI] sob a forma de um ficheiro zip para descarregar.
Este documento está incompleto em muitos aspetos. Para aprofundar o tema ASP.NET MVC, podem ser consultadas as seguintes referências:
- [ref1]: o livro «Pro ASP.NET MVC 4», escrito por Adam Freeman e publicado pela editora Apress. Trata-se de um excelente livro. Se estivesse disponível online gratuitamente e em francês, o presente documento não teria razão de ser. Recomendo a todos aqueles que o possam fazer 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]. Aí encontrará todo o material necessário para a autoformação. Está disponível uma versão em francês em 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 redigido de forma a poder ser lido sem necessidade de um computador à mão. Por isso, são apresentadas muitas capturas de ecrã.
1.1. O papel de ASP.NET e MVC numa aplicação Web
Em primeiro lugar, vamos situar o ASP.NET MVC no contexto do desenvolvimento de uma aplicação Web. Na maioria das vezes, esta será construída com base numa arquitetura multicamadas, tal como a seguinte:
![]() |
- a camada [Web] é a camada em contacto com o utilizador da aplicação Web. Este interage com a aplicação Web através de páginas Web visualizadas por um navegador. É nesta camada que se situam ASP.NET e MVC, e apenas nesta 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. Esta camada utiliza dados provenientes do utilizador através da camada [Web] e da camada 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 do SGBD. A camada [ORM] faz a ponte entre os objetos manipulados pela camada [DAO] e as linhas e colunas das tabelas de uma base de dados relacional. Dois ORM são habitualmente 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 um contentor 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 terminará 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 – Vista – Controlador) da seguinte forma:
![]() |
O processamento de um pedido de um cliente decorre da seguinte forma:
- pedido — os URL solicitados 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» o pedido para o controlador correto e para a ação correta dentro desse controlador. Para tal, 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 cadeia [Front Controller, Contrôleur, Action]. Se o caminho [Controlleur/Action] não conduzir 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. Estes 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 juntamente com o seu pedido;
- no processamento do pedido do utilizador, a ação pode necessitar da camada [métier] [2b]. Uma vez processado o pedido do cliente, este pode gerar várias respostas. Um exemplo clássico é:
- uma página de erro, caso a solicitação não tenha podido ser processada corretamente
- uma página de confirmação, caso contrário
- a ação solicita que uma determinada vista seja apresentada: [3]. Esta vista irá apresentar dados a que se chama o modelo da vista. É o M de MVC. A ação irá criar este modelo M [2c] e solicitar que uma vista V seja apresentada [3];
- resposta — a vista V selecionada utiliza o modelo M criado 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 da definição que se atribuir ao modelo, estes 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 facto, uma arquitetura Web MVC, mas não uma arquitetura multicamadas. Neste caso, a camada [Web] encarregar-se-á de tudo: apresentação, lógica de negócio e acesso aos dados. São as ações que realizarão esse trabalho.
Agora, consideremos uma arquitetura Web multicamadas:
![]() |
A camada [Web] pode ser implementada sem 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] acimaacima pode ser implementada com ASP.NET e MVC, obtendo-se assim uma arquitetura em camadas com uma camada [Web] do tipo MVC. Feito isto, é possível substituir esta camada ASP.NET MVC por uma camada ASP.NET clássica (WebForms), mantendo o resto (de negócio, DAO, ORM) inalterado. Temos então uma arquitetura em camadas com uma camada [Web] que já não é do tipo MVC.
Em MVC, afirmámos que o modelo M era o da vista V, c.a.d, ou seja, o conjunto de dados apresentados pela vista V. É fornecida outra definição do modelo M de MVC:
![]() |
Muitos autores consideram que o que se encontra à direita da camada [Web] constitui o modelo M do MVC. Para evitar ambiguidades, pode-se referir-se:
- do modelo do domínio quando nos referimos a tudo o que está à direita da camada [Web]
- do modelo da vista, quando nos referimos aos dados apresentados por uma vista V
Daqui em diante, o termo «modelo M» designará exclusivamente o 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 aplicações de secretária;
- [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-se o produto [Web Platform Installer] da Microsoft (http://www.microsoft.com/Web/downloads/platform.aspx).
Além disso, utilizar-se-á o navegador Chrome da Google (http://www.google.fr/intl/fr/chrome/browser/). Adicionar-se-á a extensão [Advanced Rest Client] . Pode-se proceder da seguinte forma:
- aceder ao site do [Google Web store] (https://chrome.google.com/webstore) com o navegador Chrome;
- procure a aplicação [Advanced Rest Client]:
![]() |
- a aplicação fica então disponível para download:
![]() |
- Para a obter, terá de criar uma conta Google. A aplicação [Google Web Store] solicita, em seguida, a confirmação [1]:
![]() |
- Em [2], a extensão adicionada está disponível na opção [Applications] [3]. Esta opção é apresentada em cada novo separador que criar (CTRL-T) no navegador.
1.4. Os exemplos
A maioria dos exemplos de aprendizagem limitar-se-á apenas à camada Web:
![]() |
Assim que concluir este tutorial, apresentaremos uma aplicação Web multicamadas:
![]() |











