ASP.NET MVC小结之基础篇(二)(2)


 public IEnumerable<ValidationResult> Validate(ValidationContext validationResult)
   {
   if(EndDate<=StartDate)
  {
   yield return new ValidationResult("结束时间必须大于开始时间");
   }
   }

10. 最佳实践

  (1) 分层设计

   1)多个项目

  2)分离关注点

  3)可替换的数据访问层

  (2)Repository模式(业务层)

   1)将数据的增删改查(CRUD)操作封装到Repository中

  2)业务逻辑/数据验证封装到Service中

   3)Controller调用Respository和Service

  (3)PRG模式(方法)

   1)POST

   2)Redirect

   3)GET

   4)PRG模式是用来确保修改数据只发生一次

  (4)保持视图中代码量最小化

   1)视图中不要含有数据处理的逻辑代码

   2)视图中要避免包含大的代码块

   3)构建多个试图/局部视图

   4)使用适当的@Helper和@Function语法

  (5)跟神奇的字符串说"拜拜了"

   1)ASPX模式

  @ViewData["Message"]

  @ViewData["TotalCount"]

   2)Razor模式

  @Model.Message

   @Model.TotalCount

   3)尽量使用特定的Model,而避免使用ViewData/ViewBag

  (6)DomainModel(领域模型)!=ViewModel(视图模型)

   1)符合需求的最小化ViewModel

  1)有效验证

   2)高安全性

  3)高性能

  2)使用一些Mapping工具,做双向映射填充

   1)AutoMapper,EmitMapper,ValueInjecter

   2)自定义的ORM-GenerPoint.ORM

   3)使用专门的ViewModel填充逻辑,轻松解决国际化/本地化

  (7)使用新的AJAX Helper

  1)Web.Config中德appSettings

   <add key="UnobtrusiveJavaScriptEnabled" value="true">

   2)视图中引用jquery.unobtrusive-ajax.js

   3)视图中调用AJAX Helpers

   1)@Ajax.ActionLink("Home","Index",new AjaxOptions{UpdateTargetId="main"})

   2)<a data-ajax="true" data-ajax-mode="replace" data-ajax-update="#content" href="https://www.jb51.net/">Home</a>

  (8)视图中尽可能的写HTML代码

  1)尽可能写纯HTML代码

  2)不要为了隐藏HTMl,而故意自定义Html.Submit之类的Helper

  3)尽可能不使用WebForm控件做视图代码渲染

  (9)IIS Express 7.5

  1)具有完整的Web服务器功能

   1)SSL

   2)网址重写

   3)可对<System.webServer>的配置进行本地测试

   4)IIS7.X其他的模版集合

   2)轻量级

   1)<5M

   2)不需要管理员账户

  3)高性能

11. 关于性能优化的软实力

  (1) 了解HTTP,Cache,Ajax各种基础知识

  (2)能够针对整体Web执行环境进行分析与架构规划

  (3)能够设计出妥当的缓存策略

  (4)能够进一步针对网站性能进行数据话分析

12. 关于性能优化的硬功夫

  (1) 熟悉.net/C#/ASP.NET MVC框架与核心原理

  (2)能够进一步针对项目进行妥善规划,做好关注点分离设计

  (3)熟悉Profiling技术,能够分析出个环节的性能瓶颈

  (4)能够针对各种环境进行代码优化,提升程序的执行性能

13. 决定WEB性能的关键要素

  (1) Web性能优化基础-HTTP

1)http是无状态的

2)一个网页包含了N次HTTP请求

(2)分析网页打开时的Http状态

1)Fiddler

2)IE10 Developer Tools

(3)客户端优化

1)HTTP请求次数减少

2)下载所使用的带宽

3)DNS查询的时间长短

4)CSS显示的速度

5)JavaScript调用的速度

(4)服务端优化

1)IIS

->控制客户端

HTTP Cache Control

->控制服务器端

将数出缓存(Output Caching)

提升数据库查询速度

2)ASP.NET MVC

->调用性能改善

->适当的缓存策略

(5)[SeesionState]

1)使用SessionState属性

控制Controller访问阶段状态数据(Session)的方式

2)注意:关闭Session后不能在使用TempData传递信息

(6)[OutputCache]

1)Html.Action与Html.RenderAction支持Output Caching

->@{Html.RenderAction("ActionName")}

->@Html.Action("ActionName")

2)ChildAction终于支持OutputCache属性

->[ChildActionOnly]

->仅支持Duration,VaryByCustom与VaryByParam参数

->不能使用CacheProfile参数

(7)改变ViewEngine的默认设置

1)移除多余的ViewEngine以提升解析View的速度

->ViewEngines.Engines.Clear();

->ViewEngines.Engines.Add(new RazorViewEngine());

2)也可以通过这种方式变更载入View的顺序

->默认是WebFormViewEngine优先处理

->ViewEngines.Engines.Add(new WebFormViewEngine());

(8)避免闯入为null给视图(View)

1)Html.TextBoxFor(m=>m.Name)

->当传入null时会引发Exception,但会被try/catch掉

->public ActionResultInsert(){

return View(new Products());

}

(9)关闭Web.Config的debug模式

1)<compilation debug="False" targetFramework="4.0" />

基础篇就到这里了,下面的文章我们来些深入点的知识,大家期待下吧

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjzgwd.html