翻译自:http://www.codeguru.com/csharp/.net/net_asp/mvc/top-10-asp.net-mvc-best-practices.htm

ASP.NET MVC是一个轻量级的、高度可测试的展示框架。

问题:如何从ASP.NET MVC3迁移到ASP.NET MVC4?

1、在web.config文件定位下面文本:
     System.Web.Mvc, Version=3.0.0.0
     System.Web.WebPages, Version=1.0.0.0
     System.Web.Helpers, Version=1.0.0.0
     System.Web.WebPages.Razor, Version=1.0.0.0
2、将上面的文本用下面的文本替换:
     System.Web.Mvc, Version=4.0.0.0
     System.Web.WebPages, Version=2.0.0.0
     System.Web.Helpers, Version=2.0.0.0,
     System.Web.WebPages.Razor, Version=2.0.0.0,
3、删除所有项目中对ASP.NET MVC 3程序集的引用:
     System.Web.Mvc (v3.0.0.0)
     System.Web.WebPages (v1.0.0.0)
     System.Web.Razor (v1.0.0.0)
     System.Web.WebPages.Deployment (v1.0.0.0)
     System.Web.WebPages.Razor (v1.0.0.0)
4、添加对ASP.NET MVC 4程序集的引用:
     System.Web.Mvc (v4.0.0.0)
     System.Web.WebPages (v2.0.0.0) 
     System.Web.Razor (v2.0.0.0)
     System.Web.WebPages.Deployment (v2.0.0.0)
     System.Web.WebPages.Razor (v2.0.0.0)

以下是我们在开发ASP.NET MVC应用时常用的7个最佳实践。

1、缓存数据

     我们可以通过缓存不常变化的数据来改善应用的性能。这将节省服务端与客户端间的带宽(带宽就是钱)。但是注意不要缓存敏感数据,不要缓存需要验证的数据,不要缓存用户私人信息,也不宜缓存经常动态变化的数据。比如下面:

public class HomeController: Controller
{
   [OutputCache(Duration=3600, VaryByParam="none"]
   public ActionResult Index()
   {
      ...
   }
}

 

2、将数据访问逻辑从控制器中解耦

     这个最主要的就是体现职责分离原则。ASP.NET MVC控制器决不应该包含数据访问逻辑。ASP.NET MVC中的控制器的职责只是根据用户请求选择合适的视图返回给用户。我们应该利用Repository Pattern实现从控制器中分离数据访问逻辑。我们或许需要在运行时注入合适的Repository。比如下面的一个例子(.NET中常见,Java中我基本没见过,我自己写的一个例子):

public class HomeController: Controller
{
   public IRepository BookRepository {
      return BookRepository.Instance();
   }

   ...
}

 

3、使用Master视图模型

     在ASP.NET应用中,我们经常需要使用Master Pages。每个页面都继承Master Page以获得一致的外观和共同的功能(如工具栏)。我们可以使用下面的代码来设定Master视图模型:

public class ViewModelBase
{
   public ViewModeBase()
   {
      ...
   }
}


4、为视图指定强类型模型(Strongly Typed Model)

 

5、使用Data Annotation进行服务端代码数据验证

我们可以使用System.ComponentModel.DataAnnotations程序集的功能来验证服务端代码,只需要添加必需的属性,如下:

public class Employee
{
   [Required(ErrorMessage="Employee name must not be empty")]
   public string Name { get;set; }
}


6、利用模型绑定

     比如有如下代码:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create()
{
    Employee employee = new Employee();
    employee.Name = Request.Form["Name"];
    
    // ...
    
    return View();
}

   可以利用模型绑定,改写成下面的代码:

public ActionResult Create(FormCollection values)
{
    Employee employee = new Employee();
    employee.Name = values["Name"];      
            
    // ...
            
    return View();
}

 

7、使用缓存框架

    比如Microsoft的Velocity以及开源框架Memcache

posted on 2012-12-29 00:59  feichexia  阅读(540)  评论(0编辑  收藏  举报