Bem, vamos dar início a uma série de posts falando sobre o novo Framework 4.0, sobre o C# 4.0, WCF 4.0, sobre o Asp Net 4.0 e muitas outras coisas.
Pois bem, iniciaremos falando um pouco sobre o Asp .Net MVC 2.0.
Mas o que é Asp .Net MVC?
A sigla MVC, que quer dizer "Model-View-Controller " é um padrão de arquitetura de software, sendo considerado um Design Pattern.
Basicamente o modelo se divide em: dados (Model) , layout (View) e a lógica (Controller).
Desta forma, alterações feitas no layout não afetam a manipulação de dados, e estes poderão ser reorganizados sem alterar o layout, sendo assim, o MVC resolve o problema da separação das tarefas de acesso aos dados e lógica de negócio, lógica de apresentação e de interação com o utilizador.
Bem, vocês podem estar se perguntando, trabalho a tanto tempo com o Web Forms e agora a Microsoft cria mais uma forma de desenvolvermos para Web, bem isso quer dizer que o Web Forms vai acabar?
A resposta é não, o web forms não vai acabar.
Então qual devo utilizar para criar meus projetos web?
A escolha de qual tipo de projeto você deve criar, deve ter como base que tipo de projeto pretende criar, qual será a complexibilidade dele, flexibilidade dentre muitas outras questões. Basicamente podemos definir que Web Forms seria para projetos mais simples, rápidos de serem implementados.
Já o MVC seria aplicado em projetos mais arrojados, com maior complexidade, um maior grau de detalhes em matéria de design e controle dos componentes.
Para quem já conhecia o Asp .Net MVC 1.0 isso não será um problema, aliás, a versão 2.0 vem com algumas melhorias. Estas melhorias são mais significativas do lado cliente onde foi adotado o jQuery 1.4 para realizar validações.
Ok, parece meio complexo mas na verdade não é, e para provar isso vamos criar nosso primeiro projeto Asp .Net MVC.
Para todos os post utilizaremos o Visual Studio 2010 Release Candidate ou superior…hehehehe.
Para aqueles que ainda não o baixaram, sugiro que façam o download do mesmo neste link: Visual Studio 2010 Release Candidate
Então, mãos a obra!!
Vamos criar um projeto do tipo ASP.NET MVC 2 Web Application na linguagem C#, para isso abra o Visual Studio, selecione C# Language –> Web -> ASP.NET MVC 2 Web Application, selecione um diretório e salve a aplicação com o nome de MeuSiteMVC conforme figura 01.
Figura 01
Feito isso, o Visual Studio irá perguntar se você deseja criar um projeto de teste para a aplicação, marque a opção “Yes, create a unit test project” e clique Ok.
Figura 02
Será criado um projeto exemplo.
Na figura abaixo você poderá observar a estrutura do projeto criado utilizando o Solution Explorer.
Figura 03
Nele temos nossos dois projetos criados, um projeto Asp Net MVC e outro Unit Test.
Quando criamos nosso projeto ASP.NET MVC Web, ele cria os componentes separados por pastas conforme veremos abaixo:
- App_data: Diretório onde é armazenado o banco de dados. Segue a mesma regra do Asp Net Web Site.
- Content: Na pasta Content armazenamos as imagens, os CSS, basicamente esta pasta guarda os arquivos estáticos.
- Controllers: Pasta onde ficam armazenados as classes de controle “Controller Classes”. Estas classes são responsáveis por controlar a interação com o usuário, manipulação do modelo (Model) e definir a visualização (View) a ser renderizada.
- Models: A pasta Models é responsável por guardar as classes que representam o modelo da aplicação. O modelo é responsável pela interação da lógica com o banco de dados.
- Scripts: Local para armazenar os arquivos JavaScript.
- Views: Pasta onde ficam guardados os componentes responsáveis pela visualização. Os Views podem ser .aspx, .ascx e também Master Pages .master. Esta pasta contem sub-pastas, sendo que estas devem seguir um padrão de nomenclatura, como por exemplo se você tiver a sub-pasta LoginController na pasta Controller, obrigatoriamente você deverá ter uma sub-pasta Login dentro da pasta View.
- Views\Shared: Por padrão, é criado uma sub-pasta chamada Shared dentro da pasta View. Ela é responsável por manter arquivos que são compartilhados por toda a aplicação e que não possuem nenhuma relação com a pasta Controller.
Na figura 04 vemos a estrutura de pastas conforme explicado acima.
Figura 04
Antes de prosseguirmos, rode a aplicação só para termos certeza que tudo está configurado de forma correta. Sua tela deverá estar como na figura 05.
Figura 05
Ok! Projeto funcionando, vamos ver agora como funciona o "life cycle" de uma aplicação MVC.
Basicamente teremos 5 etapas a serem seguidas.
- É criado a Tabela de Roteamento "Route Table" - assim que a aplicação é iniciada pela primeira vez é gerada uma tabela de roteamentos;
- Recebimento das requisições pelo UrlRoutingModule - assim que você fizer qualquer requisição, esta é interceptada pelo UrlRoutingModule que cria os eventos necessários;
- Execução do MvcHandler - o MvcHandler cria o controller, envia para o ControllerContext e executa o controle;
- Execução do Controller - o Controller determina qual método deve ser executado, cria os parâmetros e executa o método;
- Chamada ao método RenderView - o método do Controller chama RenderView() para retornar ao browser a requisição. Controller.RenderView() delega esta chamada para uma ViewEngine.
Figura 06 – MVC Lifecycle
Agora que você já conhece o MVC lifecycle, vamos entender o Model, o View e o Controller.
Controller
Um Controller é responsável por gerenciar a maneira como um usuário interage com uma aplicação Asp .Net MVC, basicamente ele possui o fluxo de controle lógico da aplicação isto porque, ele é o responsável por determinar que resposta será enviada de volta ao usuário quando ele fizer uma requisição via navegador.
Observe na listagem abaixo que temos dois métodos “Index()” e “About()” dentro da classe HomeController, toda vez que você fizer uma requisição, as chamadas serão roteadas para os métodos dentro das classes Controller da aplicação, desta forma a url /Home/Index chamará o método Index() e a url/Home/About chamará o método About().
Listagem 01
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MeuSiteMVC.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
}
}
View
Os dois métodos “Index()” e “About()”, do controlador expostos pela classe HomeController, retornam uma visão que contém o código HTML e o conteúdo que é enviado ao navegador; assim uma visão (view) é equivalente a uma página em uma aplicação ASP .NET MVC. Atente para a criação de novas visualizações, pois as mesmas devem ser criadas dentro da pasta “View” com o mesmo nome do Controller.
Figura 07
No exemplo o nosso controlador Home possui duas ações Index() e About(), logo foi criada a sub-pasta Home na pasta Views e dentro da sub-pasta Home foram criadas as páginas Index.aspx e About.aspx.
Model
O Model é responsável por conter toda a lógica que não estiver contida nas classes Controller, como exemplo temos acesso a dados.
Bem, chegamos ao fim deste post, mas não ao final do nosso Asp .Net MVC 2.0.
Nos próximos posts sobre MVC iremos abordar itens mais interessantes e mais complexos, além de darmos uma olhada mais a fundo entre MVC e Web Forms.