《ASP.NET MVC 4 实战》----1.2 ASP.NET MVC是什么-阿里云开发者社区

开发者社区> 开发与运维> 正文

《ASP.NET MVC 4 实战》----1.2 ASP.NET MVC是什么

简介: ASP.NET MVC为在.NET平台上构建Web应用程序的Web Form提供了一个替代品。它是微软在2007年11月第一次披露的,现在已有四个主要版本。第三版,即ASP.NET MVC 3,发布于2011年1月,是第一个依赖于.NET 4的ASP.NET MVC版本。

本节书摘来自异步社区《ASP.NET MVC 4 实战》一书中的第1章,第1.2节,作者: 【美】Jeffrey Palermo , 【美】Jimmy Bogard , 【美】Eric Hexter , 【美】Matthew Hinze , 【英】Jeremy Skinner,译者: 徐燕萍 , 李萍 , 林逸 , 更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 ASP.NET MVC是什么

ASP.NET MVC 4 实战
ASP.NET MVC为在.NET平台上构建Web应用程序的Web Form提供了一个替代品。它是微软在2007年11月第一次披露的,现在已有四个主要版本。第三版,即ASP.NET MVC 3,发布于2011年1月,是第一个依赖于.NET 4的ASP.NET MVC版本。ASP.NET MVC 4可以与.NET 4以及.NET 4.5一起工作,此刻尚未正式发布(ASP.NET MVC 4在本书出版时还只是预览版—译者注)。

MVC代表模型-视图-控制器(Model-View-Controller),这是一种在Web开发领域非常流行的设计模式。

作为Web Form的一个替代品,在构造Web应用程序时,ASP.NET MVC采用了一种不同的方法。这意味着你不必处理ASPX页面和控件、回递或视图状态,或复杂的事件生命周期。相反,你要定义控制器、动作以及视图。然而,底层的ASP.NET平台是相同的,因此,HTTP处理程序和HTTP模块等仍然适用,而且,你可以在同一个应用程序中混合使用MVC和Web Form页面。ASP.NET Web Form和ASP.NET MVC都并驾于核心的ASP.NET平台之上,如图1.2所示。


6b07a3fcd8cab976df2b13d211e8ca84a3adca17

ASP.NET Web Pages

在图1.2所示中,你可能已经注意到位于ASP.NET核心之上的第三种基于ASP.NET的技术― ASP.NET Web Pages(也叫作ASP.NET Web页面—译者注)。

ASP.NET Web Pages是与ASP.NET MVC 3同一时间发布的,它是为期望学习使用ASP.NET平台的新手而设计的,并作为Web Form与MVC的一种更简单的替代品。它也适用于十分简单的网站,在这种场合下,不必使用成熟的MVC应用程序。它与ASP.NET MVC共享了许多技术,这些技术使新开发人员易于将使用ASP.NET Web Pages所学到的技能转换到MVC场合。

虽然ASP.NET Web Pages项目可以在Visual Studio中开发,但微软还是发布了一个简化的IDE,叫作WebMatrix。它提供了一种更精简的开发体验,以便完全专注于Web开发,而不需要Visual Studio的高级特性。尽管WebMatrix本身超出了本书的范围,但一些与ASP.NET Web Pages相关的技术,在本书的许多例子中将起重要作用。这包括Razor模板引擎,它是一种也由ASP.NET MVC使用的、通过使用C#或VB.NET生成HTML的新方式。
本书将涉及ASP.NET MVC框架的所有主要特性。以下是你将了解到的一些好处:


6d1af341741e95d03f42f07ec9462b02470805fd

随着本书的展开介绍,这些好处会变得越为清晰。而现在,我们将简要考察建立该框架的底层模式。为什么要用MVC?它从哪里来的呢?

1.2.1 MVC模式

“模型-视图-控制器” (Model-View-Controller)模式起源于20世纪70年代的Smalltalk开发社区—尽管它是2003年随着Ruby on Rails的出现才在Web上流行使用的。

MVC模式有三个部分:

boll 模型(Model)—建立软件所围绕的主域(这种模型称为“主域模型”,或简称“域模型”—译者注)。如果你正在建立一个博客,则模型可能是帖子和评论。在某些上下文中,术语“模型”可能是指视图专用的模型(这种模型称为“视图模型”—译者注)—专用于在用户界面上显示的模型。

boll 视图(View)—模型的可视化表示。它通常是框架渲染给浏览器的结果标记,比如表现博客帖子的HTML。

boll 控制器(Controller)—提供视图和模型之间关联的协调程序。控制器负责处理输入、对模型进行操作,并决定执行哪一个动作,如渲染一个视图,或重定向到另一个页面。仍以博客为例,控制器可能要找出一篇帖子的最新评论(模型),并将它们传递给视图进行渲染。

图1.3展示了这三个组件是如何关联的。控制器接受用户输入,构造适当的模型,然后将其传递给视图。控制器和视图对模型都有依赖性,但模型本身对控制器和视图是一无所知的。

图像说明文字


4a97bc0452b374651113f4bbe5744448bbc5f228

ASP.NET MVC不是.NET框架上第一个实现MVC模式的。开源的MonoRail框架,最初的灵感来自于Ruby on Rails,2005年将MVC范例带到了.NET的Web开发。今天的ASP.NET MVC中仍可以看到它的许多影子。

另外,除ASP.NET MVC和MonoRail之外,现在.NET平台上还有其他几个MVC风格的框架。这些框架包括:FubuMVC(http://mvc.fubu-project.org/) ,这是一个开源的约定驱动式框架;OpenRasta (http://openrasta.org ),这是另一个开源项目,其目标是基于资源与HTTP方法的概念来建立Web应用程序与服务。

通过利用MVC模式,ASP.NET MVC提供了几个优于ASP.NET Web Form的好处。

1.2.2 ASP.NET MVC的好处

ASP.NET MVC解决了ASP.NET Web Form的许多缺点。当在.NET平台上开发新的应用程序时,这使ASP.NET MVC成为一种更好的选择。

与协议更接近
ASP.NET Web Form试图完全隐藏HTTP的无状态本质,而ASP.NET MVC却不是。通过采纳MVC模式,并将一个HTTP请求映射成一个方法调用,ASP.NET MVC为许多具有Web开发背景的人提供了更加熟悉的开发体验。其模型也彻底被简化—Web Form的那种复杂的页面生命周期不存在了,而且HTTP上的抽象是最小限度的。

关注分离
ASP.NET Web Form将用户界面与其后台代码紧密地耦合在一起,而ASP.NET MVC却是鼓励将用户界面(视图)与驱动界面的代码(控制器)保持分离的一种设计方式。如果实现良好,便意味着开发人员更易于理清应用程序的脉络,也使应用程序更易于维护—对控制器的修改不一定意味着也必须修改用户界面。

可测试性
通过将应用逻辑从用户界面中分离出来,ASP.NET MVC更易于独立地测试个别组件。可以测试控制器类,而不必测试实际的用户界面(意即,控制器与界面的测试是可以分开进行的―译者注)。与Web Form不同,MVC控制器对完全不可测试的HttpContext类没有直接的依赖性,而只是依赖于抽象,这使得编写出自动化的单元测试要容易得多。

现在,你已经看到了ASP.NET MVC的一些好处,以下将简要探讨该框架第三版的新特性。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章