欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2.什么是ASP.NET MVC?

程序员文章站 2023-08-26 00:01:51
1.2      什么是asp.net mvc? asp.net mvc提供了基于.net framework开发web应用程序另一种选择。最早发布...

1.2      什么是asp.net mvc?

asp.net mvc提供了基于.net framework开发web应用程序另一种选择。最早发布于2007年11月份,现在已经发布了4个版本。发布于2011年1月的asp.net mvc 3.0是第一个基于.net框架 4.0的版本。asp.net mvc 4.0可以运行在.net 4.0和.net 4.5之上。

mvc是model-view-controller的缩写,是web开发领域非常流行的设计模式。

作为web窗体的另一个分支技术,asp.net mvc采取了不同的构建web应用程序的方式。这以为你可以不用处理aspx页面、控件、回发、视图状态(viewstate)和复杂的基于事件的页面生命周期。你只需要定义控制器(controller)、活动(action)和视图(view),底层的asp.net平台保持不变,像http处理程序(http handler)和http模块(http modules)仍然可用,你甚至可以在一个web应用程序中混合使用mvc和web窗体两种技术。asp.net mvc和asp.net web form将在核心asp.net framework之上并肩前行。

asp.net web pageswww.2cto.com

你可能在图1.2上发现第三种基于asp.net framework的技术—asp.net web pages。

asp.net web pages与asp.net mvc3同时发布,作为初学者,如果你想学习asp.net的话,可以选择除了web forms和mvc的asp.net web pages技术。它也比较适合开发简单的网站,它的很多技术是和asp.net mvc共享的,如果你学习了asp.net web pages,那么你可以非常轻松的迁移到mvc开发。

你可以用visual studio开发asp.net web pages程序,但微软发布了专门针对它开发的平台:webmatrix。他没有visual studio那些复杂的特性,只提供了web开发必须的功能。介绍webmatrix超出了本书的范围,但本书中的一些例子是牵涉到asp.net web pages的内容的。其中就包括razor模板引擎,它是asp.net mvc中使用c#或vb生成html的新方法。

 

                            

图1.2 不同的asp.net技术之间的关系

我们将在本书讲解asp.net框架的所有核心特性。以下是你想学到的asp.net mvc一些优势:

对html代码完全控制;
对url完全控制;
更好的关注点分离;
可扩展性;
可测试性;
随着对本书的深入,这些优势将逐个呈现。现在,我们将学习一下asp.net mvc框架所依赖的底层模式。为什么选择mvc模式?它来自哪里?

1.2.1 mvc模式

上世纪70年代,mvc模式起源于smalltalk开发组织,然而却是随着ruby on rails(2003年)的出现变得普及开来。

mvc模式有3个组成部分

模型——软件开发围绕的领域。如果正在构建blog,涉及的模型可能是post和comment。在一些上下文中,术语model有可能指代视图特定模型,视图特定模型指只针对用户界面显示目的的领域模型。

视图——模型的呈现,框架通常用视图将内容呈现给,呈现结果的形式一般是标记语言。比如通过html显示一篇博客的内容。

控制器——是将视图和模型联系在一起,是视图与模型的协调者,主要负责接收客户端输入,操作模型并决定执行哪个action(是显示一个视图还是跳转到其他页面),在博客系统中,可以通过控制器查找某篇文章的最近回复信息并调用恰当的视图,将之呈现出来。

图1.3展示了视图、模型和控制器之间是如何关联到一起的。

 


图1.3 mvc。

控制器接收用户输入,构建恰当的模型传递给视图。控制器和视图都依赖模型,但模型本身的构建不依赖控制器和视图。

 

在.net framework中,asp.net mvc并不是首先实现mvc模式的。受ruby on rails的启发,开源框架monorail早在2005年就在web开发中引入了mvc模式。我们现在在asp.net mvc中仍能看到它的一些理念和影响。

另外,在.net平台上,除了asp.net mvc和monorail,还有一些其他的基于mvc的框架。包括:fubum(http://mvc.fubu-project.org,一个开源的基于约定(convention)的框架;openrasta(http://openrasta.org),一个致力于web应用程序和web服务开发的,基于资源和http模块概念的开源项目。

通过引入mvc模式,asp.net mvc具有asp.net web form没有的一些优势。

1.2.2 asp.net mvc的改进

作为在.net平台开发web应用程序更好的选择,asp.net mvc解决了asp.net web form很多不足之处。

更接近协议

http协议是无状态的,asp.net web form框架努力隐藏这个http的本质。然而asp.net通过引入mvc模式,将一个http请求映射到一个方法调用,具有web开发背景的程序员通常会非常熟悉这种开发体验。模型也被彻底简化了,脱离了web form中基于事件的复杂的页面生命周期,同时对http的抽象也是最小化的。

关注点分离

asp.net web form中用户界面和代码是紧耦合的。asp.net mvc提倡用户界面和代码(用于驱动界面显示)分离的设计。这意味着程序员可以更好的控制和维护应用程序,因为当你改变控制器代码时,不必必须改变用户界面。

增强的可测试性

通过将应用程序逻辑和界面相分离,asp.net mvc使得可以很容易独立测试各个组件。可以单独测试控制器类而不必测试实际的用户界面。不像传统的web forms,mvc控制器并不依赖于臭名昭著的httpcontext类,而是依赖于一个抽象功能约定,所以这很容易做自动化的单元测试。

迄今为止,你已经知道了asp.net mvc的一些优势,接下来我们将简单学习一下该框架的第3个版本相对于老版本有什么新的特性。