长时间以来,MVC是一种为众多开发人员所熟悉的标准设计模式。本文介绍有关ASP.NET MVC框架的一些基础知识,针对ASP.NET 3.5。

MVC(模型—视图—操控器)结构方法把一个运用程序拆分红三个首要组件:模型、视图和操控器。在创立根据MVC结构的Web运用程序时,你能够把ASP.NET MVC结构作为ASP.NET Web表单方法计划的一种重要候选。较之于根据Web表单的运用程序,ASP.NET MVC结构是一个轻量级的、测验性强的描绘结构,它能够与现有ASP.NET特征(例如母版页面和根据成员身份的认证)严密集成。MVC结构界说于System.Web.Mvc命名空间中。

有关ASP.NET MVC结构的一些基础知识(asp.net mvc架构)  ASP.NET MVC框架 第1张

长期以来,MVC是一种为很多开发人员所了解的规范规划方法。一些类型的Web运用程序获益于MVC结构,而另一些将持续运用根据Web表单与回寄技能的传统型ASP.NET运用程序方法,还有一些类型的Web运用程序则有或许把这两种方法结合到一同运用。总归,MVC结构计划与Web表单计划并非彼此排挤的。

整体来看,MVC结构包含下列组件:

(一)模型。模型目标是完成运用程序数据域逻辑的部分。常常情况下,模型目标还担任从数据库中检索和存储模型状况。例如,一个产品目标有或许从一个数据库中检索信息,操作其间的数据,然后把更新信息写回SQL Server数据库中的某一个产品表格内。

【提示】在小型运用程序中,模型常常是一个概念上的别离而不是一个物理概念。例如,假如运用程序仅读取一个数据集而且要把它发送到视图中,那么运用程序就不用专门创立一个物理模型层和相关联的类。在这种情况下,数据就直接承当了一个模型目标的人物。

(二)视图。视图是担任显现运用程序的用户接口(UI)的组件。典型情况下,这个UI是根据模型数据创立的。一个典型的示例便是一个产品表格的修改视图。在此视图中,能够根据一个产品目标的当时状况显现文本框、下拉列表框和复选框等控件。

(三)操控器。操控器组件的作用是担任处理用户交互,操作模型,而且终究挑选一个要显现UI的视图并生成之。在一个MVC运用程序中,视图只是担任显现信息,而由操控器担任处理和呼运用户输入与交互。例如,由操控器来处理查询字符串值,而且把这些值传递到模型,然后在模型中运用该值进行数据库查询。

MVC方法在帮助你把运用程序的不同方面(输入逻辑,事务逻辑和UI逻辑)别离开来的一同,供给了这些元素之间的松耦合。MVC方法要求每一种不同的逻辑应该存在于运用程序中的特定方位。例如,UI逻辑隶属于视图,而输入逻辑隶属于操控器,事务逻辑则隶属于模型。这种别离有助于你在构建一个运用程序办理杂乱性,由于它能够使你在某一时间仅专心于完成的一个方面。例如,你能够专心于视图而不去关怀事务逻辑。

除了办理杂乱性外,较于测验一个传统型ASP.NET Web运用程序,根据MVC方法进行开发使得测验运用程序愈加简单。例如,在一个传统型ASP.NET Web运用程序中,单个的类既用于显现输出也用于呼运用户输入。因而,为传统型ASP.NET运用程序编写自动化测验或许非常杂乱,由于为了测验单个页面,你有必要实例化页面类,它一切的子控件以及运用程序中的其他依靠类。总归,你需求实例化很多的类才能够运转该页面,所以这种情况下要比针对运用程序的单个部件编写测验困难得多。所以,针对传统型ASP.NET运用程序的测验很或许比完成一个运用MVC结构开发的运用程序的测验要杂乱和困难得多。而且,一个传统型ASP.NET运用程序在测验时还需求运用一个Web服务器。相比之下,MVC结构把组件别离开来而且很多地运用接口,这使得有或许独立于结构的其他部分而较简单地独自测验单个组件。

此外,一个MVC运用程序的三个首要组件之间的松耦合特征还推动了平行开发。例如,一名开发人员能够开发视图,而另一名开发人员则在开发操控器逻辑,第三名程序员则能够专心于模型部分的事务逻辑的开发。

根据MVC结构Web运用程序的长处

归纳来看,ASP.NET MVC结构首要供给了下列长处:

经过把一个运用程序别离成彼此独立的模型、视图和操控器三部分而进一步提高了运用程序杂乱性的办理。

不再运用视图状况或根据服务器的表单技能。这使得MVC结构特别有利于想全面操控一个运用程序的行为的开发人员。

运用一种前端操控器(Front Controller)方法并经过单一的操控器来处理Web运用程序恳求。这一特征使你有或许规划出一个支撑极端丰富的路由根底结构的运用程序。有关于前端操控器的更多的信息,请参阅http://go.microsoft.com/fwlink/?LinkId=106357。

供给关于测验驱动开发(TDD)的大力支撑。

根据Web表单Web运用程序的长处

传统型根据Web表单的结构能够供给下列长处:

支撑事情模型。此模型能够保存HTTP传输过程中的状况,而这非常有利于在线事务式Web运用程序的开发。根据Web表单的运用程序供给很多的事情,一切这些事情都得到数以百计的服务器控件的支撑。

运用一种页面操控器(Page Controller)方法,此方法能够把许多功用添加到单个的页面。有关于页面操控器的更多的信息,请参阅http://msdn.microsoft.com/zh-cn/library/ms978764.aspx。

运用视图状况或根据服务器的表单,这使得状况信息办理愈加简单。

ASP.NET MVC结构特征

归纳来看,ASP.NET MVC结构大致供给了下列重要特征:

完成运用程序基本任务(输入逻辑,事务逻辑和UI逻辑)的别离,支撑测验及测验驱动开发(TDD)。MVC结构中一切的中心契约都是根据接口的,因而非常利于运用mock目标(这是一些模仿运用程序中实践目标的模仿目标)测验工程。你能够对运用程序进行单元测验而不用在真实的ASP.NET进程中运转操控器,这加快了单元测验的速度和灵活性。你能够运用与.NET结构相兼容的任何单元测验结构测验你的工程。

供给了一个可扩展的和可插接的结构。ASP.NET MVC结构组件的规划支撑用户非常简单地对它们进行替换或定制。你能够规划并参加你自己的视图引擎,URL路由战略,行为办法参数串行化,以及其它组件。ASP.NET MVC结构还支撑运用现有依靠性注入(即“Dependency Injection”,简称“DI”)和操控回转(IOC)容器模型。其间,DI答应你把目标注入到一个类中,而不是依靠于类去创立目标自身。而IOC指定,假如一个目标要求运用另一个目标,那么第一个目标应该从一个外部源(例如一个装备文件)得到第二个目标。这一支撑极有利于对工程的测验。

完成了一个强有力的URL映射组件,支撑你在运用程序中构建易于了解的可查找的URL(而不是像许多Web运用URL中的那种极端杂乱的表达办法)。现在,URL中不用包含文件扩展名,而且其规划还支撑URL命名方法。因而,这种方法有利于查找引擎优化(SEO)和REST(表述性状况搬运)寻址。

支撑在现有ASP.NET页面(.aspx文件)、用户控件(.ascx文件)以及母版页面(.master文件)符号文件中把符号用作视图模板。你能够在运用ASP.NET MVC结构的过程中持续运用现有ASP.NET特征,例如嵌套的母版页面,内联表达式(<%=%>),声明性服务器控件,模板,数据绑定,本地化,等等。

支撑现有ASP.NET特征。ASP.NET MVC结构支撑你运用例如表单和Windows认证,URL授权,会员和人物,输出缓冲和数据缓冲,会话和装备状况办理,健康监督,装备体系,供给者架构,以及其它ASP.NET特征。

URL映射

典型情况下,在一个ASP.NET网站中,URL会被映射到存储在磁盘上的文件(首要是指.aspx文件)。这些.aspx文件中将包含针对客户端宣布的恳求要处理的代码或符号。

ASP.NET MVC结构以不同于ASP.NET网站运用程序的办法把URL映射到服务器代码。MVC结构不是把URL映射到ASP.NET页面或HTTP处理器程序,而是直接把URL映射到特定的操控器类。然后,由操控器类担任处理发来的恳求,例如用户输入与交互,以及根据用户输入履行恰当的运用程序及数据逻辑。典型地,一个操控器类调用一个独自的视图组件来生成相应的HTML输出作为对客户端宣布恳求的呼应。

在ASP.NET MVC结构中,模型、视图和操控器组件被别离开来。典型地,模型组件首要担任保护数据库中耐久数据的状况,而视图组件则由操控器进行挑选并终究在客户端生成相应的UI。默许情况下,ASP.NET MVC结构运用现有ASP.NET页面(.aspx),母版页面(.master)和用户控件(.ascx)类型作为在浏览器端的输出方法。操控器组件将定位操控器中恰当的行为办法,获得用作行为办法的参数值,处理履行行为期间一切或许发生的过错,并生成要求的视图。每一组组件各自存在于一个MVC Web运用程序工程的一个独自的文件夹下。

经过供给了一个URL映射引擎,ASP.NET MVC结构在把映射URL到操控器类方面供给了适当的灵活性。你能够运用这种映射引擎来界说路由规矩,然后ASP.NET MVC结构运用这些路由规矩来核算发来的URL恳求并挑选要履行的操控器。你还能够让路由引擎自动地剖析URL中界说的变量而且使ASP.NET MVC结构把这些内容以参数办法传递给操控器。

MVC结构与页面回寄

ASP.NET MVC结构并不运用传统的ASP.NET回寄模型来完成与服务器端的交互。代之的是,一切的终端用户交互都被路由到一个操控器类。这有利于坚持UI逻辑和事务逻辑的别离,而且有助于测验意图。结果是,ASP.NET视图状况和ASP.NET页面生命周期事情并没有与根据MVC的视图集成到一同。

本文节选自朱先忠的博客:《ASP.NET 3.5 MVC结构深度解析》。

【修改引荐】

  1. Scott Gu教你运用ASP.NET MVC 2新功用
  2. 微软发布ASP.NET MVC 2预览版 多项功用更新
  3. 13个不行不知的ASP.NET MVC扩展点
  4. 学习ASP.NET MVC的基本概念
  5. 学习ASP.NET MVC路由的运用办法
转载请说明出处
知优网 » 有关ASP.NET MVC结构的一些基础知识(asp.net mvc架构)

发表评论

您需要后才能发表评论