ASP.NET MVC概览(C#)

Model-View-Controller(MVC) 架构模式将一个应用程序分为三个组成部分:模型,视图与控制器。ASP.NET MVC框架为创建基于MVC的Web应用程序提供了一种替代方案。ASP.NET MVC框架是一个轻量级的,可高度测试的展示框架(基于Web窗体的应用程序),它继承了现有的ASP.NET特性,比如母版页和成员资格权限。MVC框架定义在 System.Web.Mvc 命名空间下而且是System.Web 命名空间的基础和支持部分。

MVC是很多开发人员都熟悉的标准设计模式。使用MVC的Web应用程序将会从中获得好处,而其它不用的将会继续使用传统的基于Web窗体和回发的ASP.NET应用程序模式,还有的Web程序会结合两者同时使用,而两者却又互不相干。
MVC 框架包括以下三个部分:

图01: 调用一个带参数值的控制器动作(点击查看完整大小)

  • 模型. 模型对象是应用程序中实现程序数据域逻辑的部分。通常情况下,模型对象在数据库中存取模型状态。例如,一个Product对象可以从SQL Server数据库中取得信息,对其进行操作,然后将更新后的信息写回到Products表里。

在小型的应用程序里,模型一般是概念上的分隔而不是物理上的。例如,如果应用程序只是读取一个数据集并把它发送到视图中的话,应用程序并不需要一个物理的模型层和隔离类。在这种情况下,数据集就扮演了模型对象的角色。

  • 视图. 视图是用来显示应用程序用户界面(UI)的组成部分。通常,这个UI是从模型数据里创建的。举个例子,Products表的编辑视图就会用几个输入框,下拉框和复选框来表示当前Products对象的状态。
  • 控制器. 控制器是处理用户交互,与模型打交道并最终选择用来显示UI的视图的。在MVC应用程序中,视图仅仅是显示信息;控制器处理并回应用户的输入与交互。例如,控制器处理查询字符串的值,并将这些值传给模型,模型反过来用这些值来查询数据库。


MVC 模式帮助你将应用程序分为几个不同的方面(输入逻辑,业务逻辑和UI逻辑),而降低了这几个方面的耦合。此模式指定了各个逻辑分别应该位于应用程序的何处。UI逻辑属于视图。输入逻辑属于控制器。业务逻辑属于模型。这样划分能帮你在生成应用程序的时候管理复杂度,因为它能让你一次只专注于一个实现方面。例如,你可以只专注于视图而不用依赖于业务逻辑。

除了管理复杂度,用MVC模式来测试程序比基于Web窗体的应用程序更容易。例如,在基于Web窗体的ASP.NET Web程序中,一个简单的类,显示输出和响应用户输入都要做到。为基于Web窗体的ASP.NET应用程序编写自动化测试可能会很复杂,因为好比说测试个别页面,你就得实例化页面类,它的子控件和其他的程序里的依赖类。由于有这么多的类被实例化来运行网页,就会很难仅仅专注于测试程序中个别页的部分。基于Web窗体的ASP.NET程序的测试因此变得比MVC程序难以实现。而且,基于Web窗体的ASP.NET程序需要一个Web服务器。MVC框架将组件解耦并大量使用接口,这使得从其他框架中分离个别组件来进行测试成为可能。

MVC应用程序中的这三大组件的松耦合同时促进了并行开发。例如,一个开发人员可以做视图,另一个可以做控制器逻辑,第三个可以专注于模型中的业务逻辑。

决定何时使用MVC程序

你必须考虑清楚到底是用ASP.NET MVC框架还是ASP.NET Web窗体模型来实现Web应用程序。MVC框架并没有替代Web窗体模型;这两个框架都可以用来开发Web程序。(如果你已经在用基于Web窗体的程序,继续使用它们也是没错的。)
在你决定要为网站使用MVC框架或Web窗体模型之前,最好先权衡一下两者哪个更好。

基于MVC的Web程序的优势

ASP.NET MVC 框架有以下两个优势:

  • 将应用程序分为模型,视图和控制器利于管理复杂度。
  • 不必使用视图状态(View State)或者服务器表单。这使得MVC框架非常适合想要完全控制程序行为的开发人员。
  • 使用前端控制器模式通过一个简单的控制器来处理Web应用请求。这使你能够设计支持丰富的路由基础结构应用程序。更多信息,请参考MSDN网站中的前端控制器
  • 更好的支持测试驱动开发(TDD)。
  • 适合于需要高度控制整个程序行为的大型开发和设计团队所支持的Web程序。

基于Web窗体的程序的优势

基于Web窗体的程序有以下优势:

  • 支持通过HTTP预留状态的事件模型,有利于业务流水线的Web程序开发。基于Web窗体的程序提供了数十种支持数百种服务器控件的事件。
  • 使用页面控制器模式增加页面功能。更多信息,请参考MSDN网站中的页面控制器
  • 使用视图状态或服务器表单,能使管理状态信息更容易。
  • 适合于想要利用大量组件来进行快速开发的小型开发和设计团队。
  • 通常,程序开发相对没那么复杂,因为组件(页面类,控件等等)被紧密集成而且比MVC模型需要更少的代码量。

ASP.NET MVC 框架特性

ASP.NET MVC 框架提供以下特性:

  • 应用程序默认分为程序任务(输入逻辑,业务逻辑和UI逻辑),可测试性和测试驱动开发(TDD)。MVC框架中的核心协议是基于接口和通过使用模拟对象实现可测试,模拟对象是程序中模拟实际对象行为的对象。你可以不必运行ASP.NET进程来对程序进行单元测试,这使得单元测试更快而且更可靠。 你可以使用任何兼容.NET Framework的单元测试框架。
  • 可扩展和可插拔的框架。 ASP.NET MVC 框架组件这种设计方法使得它们可以轻松地替换和自定义。你可以插入你自己的视图引擎,URL路由策略,action方法参数的序列化,还有其他的组件。 ASP.NET MVC 框架同时支持依赖注入(DI)和控制反转(IOC)容器模型。DI允许你注入对象到类中,而不是依靠类来创建对象自己。IOC 指定如果一个对象需要另一个对象,第一个对象应该从外部源如配置来获得第二个对象。这使得测试更为简单。
  • 强大的URL映射组件让你生成能够解析和检索URL的程序。 URL不需要包括文件扩展名,并且被设计成支持URL命名模式,有利于搜索引擎优化(SEO)和表象化状态转变(REST)。
  • 支持使用现有ASP.NET页面(.aspx文件),用户控件(.ascx文件)和母版页(.master文件)等标记文件的标记作为视图模板。你可以使用带有ASP.NET MVC框架的现有ASP.NET特性,如嵌套母版页,内联表达式(<%= %>),声明服务器控件,模板,数据绑定,本地化等等。
  • 支持现有ASP.NET特性。ASP.NET MVC 让你使用如forms身份验证和Windows身份验证,URL身份验证,成员资格和角色,输出和数据缓存,session和profile状态管理,健康监控,配置系统和provider架构等特性。

原文地址:http://www.asp.net/learn/mvc/tutorial-01-cs.aspx

没有更多推荐了,返回首页