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

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

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