天天加油 - 助您成才
ASP.NET下MVC设计模式的实现
您正在看的.Net是:ASP.NET下MVC设计模式的实现。
  摘要:本文从视图、控制器、模型三个方面简要介绍了在Asp.net环境下,经典MVC设计模式的实现,并讨论了MVC设计模式的扩展,最后对MVC的优点及不足之处进行了分析。   关键词:设计模式、视图、控制器、模型   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=* p

排行

  1. 在ASP.Net中应用javascript
  2. 用ASP.NET结合XML制作广告管理程
  3. 用ASP.NET写你自己的代码生成器
  4. 利用ASP.NET构建网上考试系统
  5. 设计ASP.NET新闻管理系统
  6. 创建用于ASP.NET的分页程序控件
  7. ASP.NET实现用户在线检测的类源码
  8. ASP.NET结合存储过程写的通用搜索
  9. 用photoshop制作破碎的蛋壳效果
  10. Photoshop 有关通道
  11. Photoshop给MM的黑白照片上色
  12. Photoshop高级图层技巧进阶篇
  13. Photoshop 关于图像的选取
  14. Photoshop金属效果的教程
  15. Photoshop中3D logo的制作技巧
  16. Photoshop制作玻璃球效果
  1. 在ASP.Net中应用javascript
  2. 用ASP.NET结合XML制作广告管理程
  3. 用ASP.NET写你自己的代码生成器
  4. 利用ASP.NET构建网上考试系统
  5. ASP.NET中利用Crystal Report创建
  6. 设计ASP.NET新闻管理系统
  7. 创建用于ASP.NET的分页程序控件
  8. ASP.NET实现用户在线检测的类源码
  9. ASP.NET结合存储过程写的通用搜索
  10. 用photoshop制作破碎的蛋壳效果
  11. PHOTOSHOP6技巧集锦(三) 图层技巧
  12. Photoshop 有关通道
  13. Photoshop给MM的黑白照片上色
  14. Photoshop高级图层技巧进阶篇
  15. Photoshop 关于图像的选取
  16. Photoshop金属效果的教程
  1. C#版的网站新闻发布系统
  2. ASP.NET窗体对话框的实现
  3. 在ASP.NET中上传图片并生成缩略图
  4. ASP.NET程序中用Repeater实现分页
  5. 用asp.net还原与恢复sqlserver数
  6. 为ASP.NET封装的SQL数据库访问类
  7. 用ASP.Net(C#)连接Oracle数据库的
  8. ASP.NET系统用户权限设计与实现
  9. 在asp.net中为Web用户控件添加属
  10. ASP.NET对IIS中的虚拟目录进行操
  11. ASP.NET中利用cookies保持客户端
  12. ASP.NET下MVC设计模式的实现
  13. Asp.net+Xml实现无数据库论坛一点
  14. ASP.NET编程中的十大技巧
  15. TreeView使用笔记
  16. 用PS+IR制作翻页动画

最近更新

  • 推荐阅读
  • .Net《ASP.NET下MVC设计模式的实现》ASP.NET下MVC设计模式的实现
    关于我们 | 版权申明 | 广告服务 | 友情链接 | 网站地图 | 使用帮助 | ©2006-2008 TTADD.COM