如果英语好的朋友可以去官方看下 MVC OverView,个人网站:www.itiask.com
MVC概述
MVC模式是一种软件架构模式。它把软件系统分为三个组件:模型(Model),视图(View)和控制器(Controller)。ASP.NET的MVC框架为web程序提供了一种可以替代Web Forms的方式,MVC框架是一个轻量级、高测试性强的框架,能够和现有的如Master Page和成员身份验证等ASP.NET特征(类似于Web Forms),很好的集成。MVC框架依赖于System.Web.Mvc程序集,也依赖于System.Web命名空间。
MVC 设计模式
模型(models): |
---|
模型对象是程序的数据域的逻辑部分,经常使用模型对象来检索和存储数据库中的数据对象。例如:一个产品数据对象需要从数据库检索、处理信息,并把信息更新到SQL的数据库中某个表中。 |
视图(views): |
视图是【显示与用户界面交互(UI)】的部分,通常,这是创建模型数据的界面,一个典型的示例就是一个产品表格的编辑视图。在此视图中,可以基于一个产品对象的当前状态显示TextBox、DropDownList和CheckBox等控件。 |
控制器(controllers): |
控制器是使用模型处理用户交互并最终选择要呈现的视图来显示 UI 的组件,在一个MVC程序中视图仅负责呈现信息-处理和相应用户的输入和交互是控制器的职责。例如,控制器处理查询字符串值,并将这些值传递给模型,而模型可能会使用这些值来查询数据库。 |
MVC 模式优点
优点(1) |
---|
MVC模式帮助您容易的创建分层的应用程序(输入逻辑、业务逻辑和UI 逻辑),同时提供一个松耦合关系连接这些因素。该模式指定每种逻辑在应用程序中应处的位置,UI逻辑属于View(视图),输入逻辑属于Controller(控制器),业务逻辑属于Model(模型),在您生成应用程序时,通过使用这种分离方式,可以帮助您化繁为简,因为它可以使您侧重于一次实现应用程序的一个方面。 |
优点(2) |
MVC 应用程序的这三个主要组件之间的松散耦合也可促进并行开发,例如,一个开发人员可以从事视图方面的工作,第二个开发人员可以从事控制器逻辑方面的工作,第三个开发人员可以侧重于模型中的业务逻辑。 |
优点(3) |
除了管理的复杂性外, 采用MVC模式设计的应用程序比基于Web Form的应用程序更易于测试。 例如, 例如,在一个传统型ASP.NET Web应用程序中,如果单个的类既用于显示输出也用于响应用户输入. 为这种ASP.NET Web Form应用程序写自动化测试可能比较复杂, 因为若要测试单个页面,您必须实例化应用程序中的页类、其所有子控件以及其他相关类。因为为运行页面而实例化的类如此之多,所以可能难以编写专门侧重于应用程序单个部件的测试。所以针对基于ASP.NET应用程序的测试很可能比实现一个使用MVC框架开发的应用程序的测试要复杂很多。而且,在测试时一个基于ASP.NET应用程序还需要使用一个Web服务器。相比之下,MVC框架把组件分离开来并且大量地使用接口,这使得独立于框架的其他部分比较容易地单独测试。 |
ASP.NET MVC框架特征
特征 (1) |
---|
实现应用程序各个模块(输入逻辑,业务逻辑和UI逻辑)的分离,支持测试及测试驱动开发(TDD)。MVC框架中的所有核心都是基于接口的,可以使用模仿对象测试。 你可以对应用程序进行单元测试,而不用在真正的ASP.NET进程中运行控制器,使用单元测试快速、灵活.当然你也可以使用任何与ASP.NET框架兼容的测试框架测试你的应用程序。 |
特征(2) |
提供了一个可扩展和插件化的框架. ASP.NET MVC框架组件的设计支持用户容易地对它们进行替换或定制. 你也可以自己设计自己的视图引擎, 自己的路由策略, 行为方法和其他一些组件。 ASP.NET MVC框架还支持使用现有依赖性注入(即“Dependency Injection”,简称“DI”)和控制反转(IOC)容器模型. DI 使您能够将对象注入到类中,而不是依靠类来创建对象本身。IOC指定某个对象是否需要其他对象,第一个对象应该从配置文件之类的外部源中获取第二个对象. 这使得测试容易。 |
特征(3) |
实现了比较强大的URL 映射组件,支持你在应用程序中创建比较容易理解的URL(而不是那种很多web应用程序中的极其复杂的URL表达式)。URL中不必包括扩展名,因此这种模式比较利于SEO(搜索引擎优化),和REST(表述性状态)寻址。 |
特征(4) |
支持使用现有的ASP.NET页面 (.aspx files), 用户控件 (.ascx files), 母版页 (.master files) 标记文件中把标记作为视图模版,你也可以在使用ASP.NET MVC框架的过程中继续使用ASP.NET模型的特征 . 像嵌套的母版页,或者内敛表达式(<%= %>), 服务器控件,模板,数据绑定和本地化等等。 |
特征(5) |
支持现在所有的ASP.NET特征。ASP.NET MVC框架可以让你使用例如表单和Windows认证,URL授权,成员和角色,输出缓冲和Sesson,回话和状态管理, 健康监控配置系统,提供者架构,以及其它ASP.NET特征。 |
创建MVC应用的条件
在你决定用MVC框架或Web Form模型做一个特定的网站是,权衡下每种方法的优势。
基于MVC框架Web应用程序的优点: |
---|
·通过将应用程序分为模型、视图和控制器,化繁为简的工作更加轻松 |
·不再使用视图状态或基于服务器的表单技术。开发人员如果想全面控制一个应用程序行为时,MVC框架特别有利 |
·使用前端控制器(Front Controller)模式并通过单一的控制器来处理Web应用程序的请求。 |
·它为测试驱动的开发 (TDD) 提供了更好的支持。 |
·方便大型团队开发,满足网页设计师(UI)的设计欲望 |
基于Web Form Web应用程序的优点: |
·它支持事件模型,可以通过HTTP保存视图状态, 有利于企业开发. 基于ASP.NET Web Forms的应用程序不但提供了很多事件还提供了很多服务器控件。 |
·它使用页面控制器模式向单个页面添加功能。想要了解更多。请看 Page Controller. |
·它针对基于服务器的窗体使用视图状态,这使得管理状态信息更加轻松。 |
·它比较适合一些小的团队开发者想利用大量的组件迅速开发应用程序。 |
·总体来说,这也不复杂,应用软件的开发,由于元件(页面类,控件等)紧密结合在一起,通常需要比MVC模型更少的代码 |