前往顾页
以后地位: 主页 > 收集编程 > .Net实例教程 >

ASP.NET下MVC设想形式的实现

时候:2010-06-30 23:40来源:知行网www.zhixing123.cn 编辑:麦田守望者

ASP.NET是微软最新推出的新型体系布局.NET框架的一部分,它为机关新一代静态网站和基于收集的漫衍式利用供应了强有力的支撑。与之前的 Web 开辟模型比拟,ASP.NET 供应了很多首要的长处比方: 简略单纯性;宁静性;可办理性等。并且与基于过程的ASP页面技术比拟,面向工具技术在ASP.NET中获得了完整实现。用传统ASP技术建立的Web利用实例中,在页面中同时实现显现,业务逻辑和流程节制,这从工程化的角度考虑,它有很多不足的地方。用户界面承担着向用户显现问题模型和与用户进行操纵和I/O交互的感化。用户希望连交友互操纵界面的相对不变,但更希望按照需求改变和调剂显现的内容和情势。在.NET框架下ASP.NET技术连络MVC设想形式很好地处理了上述问题。

  1 MVC设想形式简介

  MVC由Trygve Reenskaug提出,起首被利用在SmallTalk-80环境中,是很多交互和界面体系的构成根本。MVC布局是为那些需求为一样的数据供应多个视图的利用法度而设想的,它很好的实现了数据层与表示层的分离。MVC作为一种开辟模型,凡是常利用于漫衍式利用体系的设想和阐发中,和用于肯定体系各部分间的构造关系。对界面设想可变性的需求,MVC(Model-View-Controller)把交互体系的构成分化成模型、视图、节制器三种部件。

  视图部件把表示模型数据及逻辑关系和状况的信息以特定情势揭示给用户。它从模型获得显现信息,对不异的信息可以有多个不合的显现情势或视图。

  节制器部件是措置用户与软件的交互操纵的,其职责是节制供应模型中任何转变的传播,确保用户界面于模型间的对应联系;它接管用户的输入,将输入反应给模型,进而实现对模型的计较节制,是使模型和视图调和事情的部件。

  模型部件保存由视图显现,由节制器节制的数据;它封装了问题的核心数据、逻辑和服从的计较关系,它自力于详细的界面表达和I/O操纵。

  模型、视图与节制器的分离,使得一个模型可以具有多个显现视图。如果用户经由过程某个视图的节制器改变了模型的数据,所有别的依靠于这些数据的视图都应反应到这些转变。是以,不管甚么时候产生了何种数据转变,节制器都会将转变告诉所有的视图,导致显现的更新。这实际上是一种模型的转变-传播机制。模型、视图、节制器三者之间的关系和各自的首要服从,如图1所示。

 

2 MVC设想形式的实现

  ASP.NET供应了一个很好的实现这类典范设想形式的近似环境。开辟者经由过程在ASPX页面中开辟用户接口来实现视图;节制器的服从在逻辑服从代码(.cs)中实现;模型凡是对应利用体系的业务部分。在ASP.NET中实现这类设想而供应的一个多层体系,较典范的ASP布局实现的体系来讲有较着的长处。将用户显现(视图)从行动(节制器)平分离出来,进步了代码的重用性。将数据(模型)从对其操纵的行动(节制器)分离出来可让你设想一个与背景存储数据无关的体系。就MVC布局的本质而言,它是一种处理耦合体系问题的体例。

  2.1 视图

  视图是模型的表示,它供应用户交互界面。利用多个包含单显现页面的用户部件,复杂的Web页面可以揭示来自多个数据源的内容,并且网页职员,美工能单独参与这些Web页面的开辟和保护。

  在ASP.NET下,视图的实现很简朴。可以像开辟WINDOWS界面一样直接在集成开辟环境下经由过程拖动控件来完成页面开辟本。本文中介绍每个页面都采取复合视图的情势即:一个页面由多个子视图(用户部件)构成;子视图可所以最简朴HTML 控件、办事器控件或多个控件嵌套构而成的Web自定义控件。页面都由模板定义,模板定义了页面的布局,用户部件的标签和数量,用户指定一个模板,平台按照这些信息主动建立页面。针对静态的模板内容,如页面上的站点导航,菜单,友好链接,这些利用缺省的模板内容建设;针对静态的模板内容(主如果业务内容),因为用户的请求不合,只能利用后期绑定,并且针对用户的不合,用户部件的显现内容进行过滤。利用由用户部件按照模板建设构成的组合页面,它加强了可重用性,并原型化了站点的布局。

  视图部分年夜致措置流程以下:起首,页面模板定义了页面的布局;页面建设文件定义视图标签的详细内容(用户部件);然后,由页面布局战略类初始化并加载页面;每个用户部件按照它本身的建设进行初始化,加载校验器并设置参数,和事件的拜托等;用户提交后,经由过程了表示层的校验,用户部件把数据主动提交给业务虚体即模型。

  这一部分首要定义了WEB页面基类PageBase;页面布局战略类PageLayout,完成页面布局,用于加载用户部件到页面;用户部件基类UserControlBase即用户部件框架,用于静态加载查验部件,和实现用户部件的个性化。为了实现WEB利用的矫捷性,视图部分也用到了很多建设文件比方:置文件有模板建设、页面建设、途径建设、考证建设等。

  2.2 节制器

  为了可以或许节制和调和每个用户超越多个请求的措置,节制机制应当以集合的体例进行办理。是以,为了到达集合办理的目标引入了节制器。利用法度的节制器集合从客户端领受请求(典范环境下是一个运行浏览器的用户),决定履行甚么贸易逻辑服从,然后将产生下一步用户界面的任务委派给一个恰当的视图组件。

  用节制器供应一个节制和措置请求的集合入口点,它卖力领受、截取并措置用户请求;并将请求拜托给分发者类,按照以后状况和业务操纵的成果断定向客户闪现的视图。在这一部分首要定义了HttpReqDispatcher(分发者类)、HttpCapture(请求捕获者类)、Controller(节制器类)等,它们相互共同来完成节制器的服从。请求捕获者类捕获HTTP请求并转发给节制器类。节制器类是体系中措置所有请求的最后入口点。节制器完成一些需求的措置后把请求拜托给分发者类;分发者类分发者卖力视图的办理和导航,它办理将挑选哪个视图供应给用户,并供应给分发资本节制。在这一部分别离采取了分发者、战略、工厂体例、适配器等设想形式。

  为了使请求捕获者类主动捕获用户请求并进行措置,ASP.NET 供应初级别的请求/呼应 API,使开辟职员可以或许利用 .NET 框架类为传入的 HTTP 请求供应办事。为此,必须创作支撑 System.Web.IHTTPHandler 接口和实现 ProcessRequest() 体例的类即:请求捕获者类,并在web.config 的 <httphandlers> 节中增加类。ASP.NET 收到的每个传入 HTTP 请求终究由实现 IHTTPHandler 的类的特定实例来措置。IHttpHandlerFactory 供应了措置 IHttpHandler 实例 URL 请求的实际剖析的布局。HTTP 措置法度和工厂在 ASP.NET 建设中声明为 web.config 文件的一部分。ASP.NET 定义了一个 <httphandlers> 建设节,在此中可以增加和移除措置法度和工厂。子目次继承 HttpHandlerFactory 和 HttpHandler 的设置。 HTTP 措置法度和工厂是 ASP.NET 页框架的主体。工厂将每个请求分派给一个措置法度,后者措置该请求。 比方,在全局 machine.config 文件中,ASP.NET 将所有对 ASPx 文件的请求映照到 HttpCapture类:


<httphandlers>
...
<add verb="*" path="*.ASPx" type="Sys.UI.HttpCapture, Sys.UI"/>
...
</httphandlers>


  2.3 模型

  MVC体系中的模型从观点上可以分为两类――体系的外部状况和改变体系状况的行动。模型是你所有的贸易逻辑代码片段地点。本文为模型供应了业务虚体工具和业务措置工具:所有的业务措置工具都是从ProcessBase类派生的子类。业务措置工具封装了详细的措置逻辑,调用业务逻辑模型,并且把呼应提交到适合的视图组件以产生呼应。业务虚体工具可以经由过程定义属性描述客户端表双数据。所有业务虚体工具都EntityBase派生子类工具,业务措置工具可以直接对它进行读写,而不再需求和request、response工具进行数据交互。经由过程业务虚体工具实现了对视图和模型之间交互的支撑。实现时把"做甚么"(业务措置)和"若何做"(业务虚体)分离。如许可以实现业务逻辑的重用。因为各个利用的详细业务是不合的,这里不再枚举其详细代码实例。

  3 MVC设想形式的扩展


  经由过程在ASP.NET中的MVC形式编写的,具有极其杰出的可扩展性。它可以轻松实现以下服从:

  ①实现一个模型的多个视图;

  ②采取多个节制器;

  ③当模型改变时,所有视图将主动革新;

  ④所有的节制器将相互自力事情。

  这就是MVC形式的好处,只需在之前的法度上稍作点窜或增加新的类,便可轻松增加很多法度服从。之前开辟的很多类可以重用,而法度布局底子不再需求改变,各种之间相互自力,便于个人开辟,进步开辟效力。下面会商若何实现一个模型、两个视图和一个节制器的法度。此中模型类及视图类底子不需求改变,与前面的完整一样,这就是面向工具编程的好处。对节制器中的类,只需求增加另外一个视图,并与模型产生关联便可。该形式下视图、节制器、模型三者之间的示企图如图2所示。

 


图 2 视图、节制器、模型三者之间关系的示企图

  一样也能够实现别的情势的MVC比方:一个模型、两个视图和两个节制器。从下面可以看出,经由过程MVC形式实现的利用法度具有极其杰出的可扩展性,是ASP.NET面向工具编程的将来标的目标。

  4 MVC设想形式的长处及不足的地方

  4.1 MVC的长处

  MVC的长处表现在以下几个方面:

  (1) 可以为一个模型在运行时同时建立和利用多个视图。转变-传播机制可以确保所有相关的视图及时获得模型数据转变,从而使所有关联的视图和节制器做到行动同步。

  (2) 视图与节制器的可接插性,许可改换视图和节制器工具,并且可以按照需求静态的翻开或封闭、乃至在运行期间进行工具替代。

  (3) 模型的可移植性。因为模型是自力于视图的,所以可以把一个模型自力地移植到新的平台事情。需求做的只是在新平台上对视图和节制器进行新的点窜。

  (4) 潜伏的框架布局。可以基于此模型建立利用法度框架,不但仅是用在设想界面的设想中。

  4.2 MVC的不足的地方

  MVC的不足表现在以下几个方面:

  (1)增加了体系布局和实现的复杂性。对简朴的界面,严格遵守MVC,使模型、视图与节制器分离,会增加布局的复杂性,并可能产生过量的更新操纵,降落运行效力。

  (2)视图与节制器间的过于紧密的连接。视图与节制器是相互分离,但确切联系紧密的部件,视图没有节制器的存在,其利用是很无限的,反之亦然,如许就毛病了他们的自力重用。

  (3)视图对模型数据的低效力拜候。根据模型操纵接口的不合,视图可能需求多次调用才气获得充足的显现数据。对未转变数据的不需求的频繁拜候,也将侵害操纵机能。

  (4) 目前,一般高级的界面东西或机关器不支撑MVC形式。改革这些东西以适应MVC需求和建立分离的部件的代价是很高的,从而造成利用MVC的坚苦。

  5 结束语

  与软件所措置问题的内涵模型比拟较,用户界面是需求常常产生转变的,采取MVC设想形式可以在满足对界面请求的同时,使软件的计较模型自力于界面的构成。也能够基于此模型建立年夜型漫衍式利用法度框架。本文介绍了MVC设想形式的道理;MVC设想形式三个构成构件(模型部件、视图部件和节制部件)和在ASP.NET环境下实现基于MVC的利用需求完成的事情;MVC设想形式的扩展;最后对MVC的长处及不足的地方进行了阐发。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/21aspnet/archive/2004/10/22/147021.aspx

顶一下
(0)
0%
踩一下
(0)
0%
------分开线----------------------------
标签(Tag):ASP.NET asp.Net实例教程 ASP.NET教程 ASP.NET代码
------分开线----------------------------
颁发评论
请自发遵循互联网相关的政策法规,严禁公布色情、暴力、革命的谈吐。
评价:
神色:
考证码:点击我更换图片
猜你感兴趣