zoukankan      html  css  js  c++  java
  • 【翻译】7个ASP.NET MVC最佳实践

    翻译自: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

  • 相关阅读:
    学而时习之,不亦乐乎。
    uva10025 The ? 1 ? 2 ? ... ? n = k problem
    uva591 Box of Bricks
    uva253 Cube painting
    uva10194 Football (aka Soccer)
    用WORD2007发布博客文章
    Microsoft Silverlight 1.0 SDK 中文版推出
    vista sp1/office 2007 sp1和xp sp3都出来了
    scrollLeft,scrollWidth,clientWidth,offsetWidth,screen.width全解析(转帖)
    在C#中使用My命名空间
  • 原文地址:https://www.cnblogs.com/feichexia/p/ASPDoNET_7_Best_Practices.html
Copyright © 2011-2022 走看看