摘要:
1.ASP.NET支持的两层抽象
WebForm拖放控件方式缺点:混淆页面生命周期,生成不太理想的HTML页面
2.MVC的发展
MVC成为计算机科学领域重要的构建模式已有多年历史。
1979年,最初被命名为:事物-模型-视图-编辑器(Thing-Model-View-Editor),后来简化为模型-视图-控制器(Model-View-Controller)
在分离应用程序内部的关注点方面,MVC是一种强大而简洁的方法,尤其是应用在Web应用程序中。
MVC将应用程序的用户界面分为三个主要部分:
3.MVC在Web框架中的应用
在ASP.NET MVC中,MVC的三个主要部分的定义大致如下:
模型:模型是描述程序设计人员感兴趣问题域的一些类,这些类通常封装存储在数据库中的数据,以及操作这些数据和执行特定域业务逻辑的代码。在ASP.NET MVC中,模型就像是一个使用了某个工具的数据访问层,这个工具包括实体框架EF或者包含特定域逻辑的自定义代码组合在一起的NHibernate。
视图:一个动态生成HTML页面的末班。
控制器:一个协调视图和模型之间关系的特殊类。它响应用户的输入,与模型进行对话,并决定呈现哪个视图。后缀名为Controller。
4.ASP.NET MVC的优势
ASP.NET MVC的上下文是问题域(一个无状态的Web环境)和宿主系统(ASP.NET)
ASP.NET MVC依赖于许多与其它MVC平台所使用的相同的核心策略,再加上它提供的编译和托管代码的好处,以及利用.NET语言的新特性,比如Lambda表达式、动态和匿名类型,使其成为强大的开发框架。不过,本质上,ASP.NET采用了大部分基于MVC的Web框架所使用的一些基本原则:
5.MVC3的发展历程
2007年2月,Scott Guthrie在飞机上草拟了ASP.NET MVC的核心思想。
ASP.NET MVC1 于2009年3月13日正式发布。
ASP.NET MVC2 于2010年3月发布。发布的一个重要先例是无重大改动,验证了ASP.NET MVC结构化设计,可在核心不变情况下进行大量扩展。
部分主要特点:
增强的API功能:
ASP.NET MVC3于ASP.NET MVC2发布后的第10个月推出。主要改进:
6.Razor视图引擎
在10年前ASP.NET1.0发布以来,Razor是在渲染HTML方面的第一个重要更新。目标是支持图形编辑器中的编辑控件。
在ASP.NET MVC1 和ASP.NET MVC2中默认使用的视图引擎普遍被称为Web Forms视图引擎(Web Forms View Engine),因为和Web Forms使用了同样ASPX/ASCX/MASTER文件和语法。
Razor语法易于输入、易于阅读。不像WebForm视图引擎那样具有类似于XML的繁杂的语法规则。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 |
<%@ Page Language= "C#"
MasterPageFile= "</Views/Shared/Site.Master"
Inherits= "System.Web.Mvc.ViewPage<MvcMusicStore.ViewModels.StoreBrowseViewModel>" %> //Razor @model MvcMusicStore.Models.Genre <asp:Content ID= "Content1"
ContentPlaceHolderID= "TitleContent"
runat= "server" > Browse Albums </asp:Content> //Razor @{ViewBag.Title = "Browse Albums" ;} <asp:Content ID= "Content2"
ContenPlaceHolderID= "MainContent"
runat= "server" > <div class = "genre" > <h3><em><%:Model.Genre.Name %></em>Albums</h3> <ul id= "album-list" > <% foreach ( var
album in
Model.Albums) {%> <li> <a href= "<%:Url.Action(" Details ",new{id = album.AlbumId }) %>" > <img alt= "<%:album.Title%>"
src= "<%:album.AlbumArtUrl %>" /> <span><%:album.Title%></span> </a> </li> <% } %> </ul> </div> </asp:Content> //Razor <div class = "genre" > <h3><em>@Model.Name</em>Albums</h3> <ul id= "album-list" > @ foreach ( var
album in
Model.Albums) { <li> <a href= "@Url.Action(" Details ",new{id = album.AlbumId }) " > <img alt= "@album.Title"
src= "@album.AlbumArtUrl" /> <span>@album.Title</span> </a> </li> } </ul> </div> |
Razor语法的设计目标:
7.验证的改善(不太理解)
8.强大的JS支持
非侵入式JS
非侵入式JS是一个一般术语,它表达了一个哲理,类似于术语表述性状态转移。非侵入式JS的高层次描述就是不影响网页标记。
ASP.NET MVC3采用两种方式支持非侵入式JS,分别是:
JQery验证
ASP.NET MVC2用JQery进行传送,而用Ajax进行验证。MVC3通过将验证支持转换到流行的JQery验证插件上运行,完成了使用JQuery的Ajax支持的过渡。
JSON绑定
ASP.NET MVC3通过新的JsonValueProviderFactory支持JSON(JS Object Notation)绑定,这样可以使操作方法接受和模型绑定(model-bind)JSON格式的数据。
9.高级功能
ASP.NET MVC3通过依赖项解析和全局操作过滤器在简化比较复杂的应用程序级任务方面也取得了一些大的进展。
依赖项解析(dependency resolver)
简化了在应用程序中依赖注入的使用,使得分离应用程序组件更加容易,从而使组件更容易配置和测试。如:
全局操作过滤器
ASP.NET MVC2的操作过滤器可以提供一段执行代码的钩子,使得代码可以在一个方法执行之前或之后执行。这个功能通过自定义特性实现,自定义特性可以应用于控制器操作或者整个控制器。
ASP.NET MVC3扩展了这一功能,对于处理应用程序基础结构问题,像错误处理和日志记录尤其有用。
10.使用MVC3的必需组件
11.应用程序模板
Internet Application和Intranet Application区别:后者是作为MVC3工具更新的一部分添加的,账户管理功能不是针对ASP.NET Membership系统而是针对Windows账户
12.ASP.NET MVC应用程序结构
项目默认含有6个顶级目录
/Controllers:用于保存那些处理URL请求的Controller类
/Models:用于保存那些表示和操纵数据以及业务对象的类
/Views:用于保存那些辅助呈现输出结果的UI模板文件
/Scripts:用于保存JS库文件和脚本
/Content:用于保存CSS和图像文件以及其他费动态/非JS的内容
/App_Data:用于存储想要读取/写入的数据文件
13.ASP.NET MVC和约定
设计ASP.NET MVC是围绕一些明智的基于约定的默认项,这些默认项在需要的时候可以被覆盖,这个概念通常作为“约定优于配置”被引用
约定优于配置:没有必要再配置文件中设置文件夹名称—它们约定在配置文件中。这样避免了编辑XML的工作。
下面是预期的程序结构:
约定简化通信:约定可以帮助您清晰地与其他开发人员进行交流。不用详细地描述如何构建应用程序的每一方面。
原文:http://www.cnblogs.com/KevinG/p/3560320.html