Skip to content

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:

  1. 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.
  2. 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];
  1. 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:

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:

Image

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

Image

  • 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: