Convertendo um Website para asp.net MVC

by Cássio R Eskelsen 13. novembro 2008 17:28

A Microsoft jura que não mas ao que tudo indica, para aplicações WEB será adotado o padrão MVC, através do ASP.NET MVC, ficando os Web Forms em segundo plano.

Apesar de ser uma grande quebra de paradigma em relação aos “antigos” Web Forms, a introdução deste padrão traz consigo uma série de vantagens, entre as quais eu destaco a maior facilidade de deixar o site dentro dos webstandards, a testabilidade e uma série de recursos que deixam o trabalho mais produtivo.

Dificilmente alguém irá converter todo um projeto web já pronto em Web Forms de uma só vez para MVC, afinal isso exigiria tempo e dinheiro que ninguém tem.
Felizmente, é possível conviver com os dois tipos de padrões ao mesmo tempo, possibilitando uma conversão gradual e/ou usar o que cada  padrão tem de melhor.

Por outro lado você pode preferir (como eu), usar o tipo de projeto “Website” ao invés do tipo Web Application que vem por default no ASP.Net MVC. As dicas abaixo servirão para esse caso também.

Instalando o Kit-Gás no seu Web Site.

É extremamente simples deixar seu site preparado para trabalhar de forma híbrida:

a) Referencie as DLLs do ASP.NET MVC.  Por padrão elas ficam em C:\Program Files\Microsoft ASP.NET\ASP.NET MVC Beta\Assemblies;

b) no web.config, adicione as seguintes chaves dentro da seção <system.web:

<system.web> 
    <httpModules>
       <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, 
Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
/> </httpModules> </system.web>

c) Como iremos usar muito código "embedded" nas Views, vamos facilitar colocando os namespaces no web.config, dentro de :

<pages>            
   <namespaces>
      <add namespace="System.Web.Mvc"/>
      <add namespace="System.Web.Mvc.Ajax"/>
      <add namespace="System.Web.Mvc.Html"/>
      <add namespace="System.Web.Routing"/>
      <add namespace="System.Linq"/>
      <add namespace="System.Collections.Generic"/>
    </namespaces>

d) (apenas para Web Applications). Mude as páginas de CODEBEHIND pra CODEFILE. Para fazer isso basta alterar na diretiva <% Page o parâmetro CodeBehind=”xxx.asp.cs” para CodeFile=”xxx.asp.cs”.

e) O global.asax também deve ser mudado conforme acima. No caso das aplicações “website”, é interessante (mas não obrigatório) colocar o código do global.asax em um arquivo .cs também ao invés de ficar tudo no próprio global.asax. 

Altere a diretiva

<%@ Application Language="C#" %>

Para:

<%@ Application CodeFile="Global.asax.cs" Inherits="MvcApplication1.MvcApplication" 
Language="C#" %>

Você deve trocar o MvcApplication1 pelo seu namespace.

Preencha o arquivo Global.asax.cs com o código de roteamento, como por exemplo:

using System.Web.Mvc;
using System.Web.Routing;

namespace MvcApplication1
{ 
    public partial class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameter
                new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
            );
        }

        protected void Application_Start()
        {
            RegisterRoutes(RouteTable.Routes);
        }
    }
}

f) Coloque os CONTROLLERS e MODELS do MVC dentro da pasta App_Code. Eles não poderão ficar na raíz pois não serão compilados.

Se você for usar a versão 6 do IIS para rodar seu website MVC, você precisa adicionar um mapeamento para que todas as requisições passem pelo interpretador do asp.net (aspnet_isapi.dll).

Veja abaixo como fazer esse mapeamento:

image

Não esqueça de desmarcar a opção "Verify that file exists"

Você pode encontrar informações mais detalhadas sobre esse mapeamento em http://go.microsoft.com/?LinkId=9394801

O arquivo abaixo contém um exemplo de projeto website convertido para funcionar com MVC também:

Tags:

asp.net

Comentários

Comentar




  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading