Grande galera do 100loop, como vão? Ivan, gostei do novo layout, agora sim ficou show de bola heim!!.

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.

mvc_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.

mvc_03
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.

mvc_04
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.

mvc_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.

  1. É criado a Tabela de Roteamento “Route Table” – assim que a aplicação é iniciada pela primeira vez é gerada uma tabela de roteamentos;
  2. Recebimento das requisições pelo UrlRoutingModule – assim que você fizer qualquer requisição, esta é interceptada pelo UrlRoutingModule que cria os eventos necessários;
  3. Execução do MvcHandler – o MvcHandler cria o controller, envia para o ControllerContext e executa o controle;
  4. Execução do Controller – o Controller determina qual método deve ser executado, cria os parâmetros e executa o método;
  5. 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.

mvc_06
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.

mvc_07

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.

Espero que tenham gostado e nos vemos no próximo post!

Até mais.