65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET MVC 最佳实践

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.91/5 (21投票s)

2013 年 10 月 11 日

CPOL

3分钟阅读

viewsIcon

76353

ASP.NET MVC 变得越来越流行。随着应用程序规模的增长,维护也变得越来越麻烦。以下是一些

ASP.NET MVC 变得越来越流行。随着应用程序规模的增长,维护也变得越来越麻烦。以下是一些较好的实践,如果遵循这些实践,可能有助于维护我们的应用程序,并提供随着需求增加的可扩展性手段。欢迎随时添加/更新所需的实践/技巧。

请注意,此清单仅供快速参考,并非详细材料,可用作快速参考。

  1. 隔离控制器
    将控制器与对 HttpContext、数据访问类、配置、日志记录等的依赖项隔离。可以通过创建包装类并使用 IOC 容器传入这些依赖项来实现隔离。

  2. IoC 容器
    使用 IoC 容器管理所有外部依赖项。以下是一些著名的容器/框架。
    1. Ninject
    2. Autofac
    3. StructureMap
    4. Unity Block
    5. Castle Windsor

  3. 没有“魔法字符串”
    永远不要在代码中使用魔法字符串。这意味着将视图名称、链接文本等硬编码到视图中。诸如 T4MVC 之类的框架可以帮助解决这个问题。 更多相关内容即将推出。

  4. 为每个视图创建一个 ViewModel
    为每个视图创建一个专门的 ViewModel。ViewModel 的作用仅限于数据绑定。 它不应包含任何表示逻辑。

  5. HtmlHelper
    对于生成视图 HTML,请使用 HtmlHelper。如果当前的 HtmlHelper 不够用,请使用扩展方法扩展它。 这将保持设计的合理性。

  6. Action 方法
    使用适当的动词(如 Get 或 Post)修饰您的 action 方法,视情况而定。

  7. 缓存
    使用 OutputCache 属性修饰最常用的 action 方法。

  8. 控制器和领域逻辑
    尽量将领域逻辑与控制器分离。控制器只应负责:
    1. 输入验证和清理。
    2. 从模型中获取与视图相关的数据。
    3. 返回适当的视图或重定向到另一个适当的 action 方法

  9. 使用 PRG 模式进行数据修改
    PRG 代表 Post-Redirect-Get,以避免在 post 后刷新页面时出现的经典浏览器警告。无论何时发出 POST 请求,一旦请求完成,请执行重定向,以便触发 GET 请求。 这样,当用户刷新页面时,将执行最后一个 GET 请求,而不是 POST,从而避免不必要的用户体验问题。 它还可以防止初始请求被执行两次,从而避免可能的重复问题。

  10. 路由
    仔细设计您的路由。 经典的路由调试器可以派上用场 http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

  11. 视图中不应包含领域逻辑。视图必须只负责显示数据。

  12. 视图不应包含表示逻辑
    视图不应包含任何表示逻辑。例如,如果要仅为“管理员”角色显示“删除”按钮,则应将其抽象到 Html Helper 中。 这只是一个示例,并且会有许多场景需要这种抽象,以便于维护视图。

  13. 对于“删除”链接,请使用 POST 代替 GET
    使用删除链接 (GET) 比使用 POST 更容易受到攻击。以下是一篇关于此的详细文章,以及一些替代方案。
    http://stephenwalther.com/blog/archive/2009/01/21/asp.net-mvc-tip-46-ndash-donrsquot-use-delete-links-because.aspx

   

© . All rights reserved.