《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的一些好处,以下将简要探讨该框架第三版的新特性。

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

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

相关文章
Netty 源码阅读入门实战(一)-介绍
1 简介 以 Netty 为底层的框架 Netty 是什么 Netty 技术和方法的特点 设计 针对多种传输类型的统一接口 - 阻塞和非阻塞 简单但更强大的线程模型 真正的无连接的数据报套接字支持 链接逻辑支持复用 易用性 大量的 Javadoc 和 代码实例 除了在 JDK 1.6 + 额外的限制。
1318 0
《数据分析实战 基于EXCEL和SPSS系列工具的实践》一第1章 什么是数据分析
我们的企业其实是不需要数据分析的。 我们公司的业务情况,我很清楚,分析不分析都那样,反正我都知道了。 公司的数据好简单啊,就那么几列,有啥好分析的。 公司里面的很多数据都是造假的,没有分析的价值。
1451 0
《阿里巴巴Java Spring Boot 2.0开发实战课程》05课:三层MVC网站与架构分层误区、Java面试题
本期分享主题:三层架构MVC网站与分层架构误区、Java面试题,国内系统架构设计的文章和书籍。经常会搞错分层的概念,本课程进行了讲解。还有关于model概念的解析,以及Java Spring Boot2.0面试题。 另外java是免费的!
3152 0
Asp.net MVC 2 + Castle + NHibernate 项目实战(1)
本文将开始一步一步地使用Asp.net MVC 2 + Castle + NHibernate 开发一个项目。   在开始之前,我先对这三个组件做一个简单的介绍:  Asp.net MVC  它是微软提供的一个基于MVC标准的Web开发模式,其典型特点是有控制器和视图;在这之前,.NET下的Web开发模式大多是采用WebForm,其典型特点是服务端控件和后台触发事件;   NHibernate 它是一个ORM框架,使用Java的SSH做过项目开发的人就非常熟悉了,当前最新版本为NHibernate 3.0,听说完全支持Linq查询语句了,以前只支持HQL语句。
719 0
Netty4 实战精华EventLoop 和线程模型
简单地说,线程模型指定了操作系统、编程语言、框架或者应用程序的上下文中的线程管理的关键方面。 显而易见地,如何以及何时创建线程将对应用程序代码的执行产生显著的影响,因此开发人员需要理解与不同模型相关的权衡。
1214 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
11939
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载