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 框架包括以下三个部分:
-
模型. 模型对象是应用程序中实现程序数据域逻辑的部分。通常情况下,模型对象在数据库中存取模型状态。例如,一个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
分享到:
相关推荐
Asp.Net MVC案例教程 Asp.Net MVC案例教程 Asp.Net MVC案例教程 Asp.Net MVC案例教程 Asp.Net MVC案例教程 Asp.Net MVC案例教程
本书共分为12章,以符合初学者思维的方式系统地介绍ASP.NET MVC的应用技巧,并结合实际项目详细地介绍如何基于ASP.NET MVC构建企业项目。通过本书的学习,读者可以全面掌握ASP.NET MVC的开发,并从代码中获取软件...
ASP.net MVC3 中文教程ASP.net MVC3 中文教程ASP.net MVC3 中文教程ASP.net MVC3 中文教程
asp.net MVC4 CMS 完整的源代码,学习和提高asp.net mvc4可以参考一下。
ASP.NET MVC作为微软官方的.NET平台下MVC解决方案,自诞生起就吸引了众多.NET平台开发人员的眼球。ASP.NET MVC从一开始的设计思路就与Struts不同,它的映射是利用路由配置而非xml,从而大大降低了开发复杂度,并且比...
ASP.NET MVC 5入门指南 (中文PDF+源碼) 1. ASP.NET MVC 5 - 开始MVC 5之旅 2. ASP.NET MVC 5 - 控制器 3. ASP.NET MVC 5 - 视图 4. ASP.NET MVC 5 - 将数据从控制器传递给视图 5. ASP.NET MVC 5 - 添加一个模型 6. ...
The power of ASP.NET MVC 5 stems from the underlying ASP.NET platform. To make your ASP.NET MVC applications the best they can be, you need to fully understand the platform features and know how they ...
MVC专家“梦之队”对ASP.NET MVC 4的全新诠释 由Microsoft专家和极受敬重的软件开发社区负责人撰写的《ASP.NET MVC 4高级编程(第4版)》将带您学习最前沿的Web框架:ASP.NET MVC 4。本书开篇简要介绍ASP.NET MVC框架...
Pro ASP.NET MVC 5 (精通ASP.NET MVC5框架) 中文+英文+配套源代码
ASP.NET MVC 4 in Action is a hands-on guide that shows you how to apply ASP.NET MVC effectively. After a high-speed ramp up, this thoroughly revised new edition explores each key topic with a self-...
AngularJS 开发 ASP.NET MVC.
用ASP.NET MVC C#语言实现WebSocket
dwz框架 asp.net mvc3;dwz框架 asp.net mvc3;dwz框架 asp.net mvc3
ASP.NET MVC5高级编程(第5版.NET开发经典名著)作为Microsoft备受欢迎的MVC技术的最新版本,MVC 5是一个成熟的Web应用程序框架,支持快速的、TDD友好的开发。MVC允许开发人员创建动态的、数据驱动的网站。这样的...
asp.net mvc 弹出窗口 技巧asp.net mvc 弹出窗口 技巧asp.net mvc 弹出窗口 技巧asp.net mvc 弹出窗口 技巧
ASP.NET MVC项目源代码设计资料
ASP.NET MVC5 高清完整版,适合新手学习,理解MVC架构
[Apress] ASP.NET MVC with Entity Framework and CSS (英文版) [Apress] ASP.NET MVC with Entity Framework and CSS (E-Book) ☆ 图书概要:☆ This book will teach readers how to build and deploy a fully ...
C# asp.net MVC 在线拍照 功能
ASP.NET MVC5 官网下载源码.rar ASP.NET MVC5 官网下载源码.rar ASP.NET MVC5 官网下载源码.rar ASP.NET MVC5 官网下载源码.rar ASP.NET MVC5 官网下载源码.rar ASP.NET MVC5 官网下载源码.rar