asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

浅谈ASP.NET开发下的MVC设计模式的实现


发布日期:2024年05月17日
 
浅谈ASP.NET开发下的MVC设计模式的实现
ASPNET是微软最新推出的新型体系结构NET框架的一部分它为构造新一代动态网站和基于网络的分布式应用提供了强有力的支持与以前的 Web 开发模型相比ASPNET 提供了许多重要的优点例如: 简易性安全性可管理性等而且与基于过程的ASP页面技术相比面向对象技术在ASPNET中得到了完全实现用传统ASP技术建立的Web应用实例中在页面中同时实现显示业务逻辑和流程控制这从工程化的角度考虑它有许多不足之处用户界面承担着向用户显示问题模型和与用户进行操作和I/O交互的作用用户希望保持交互操作界面的相对稳定但更希望根据需要改变和调整显示的内容和形式NET框架下ASPNET技术结合MVC设计模式很好地解决了上述问题

MVC设计模式简介

MVC由Trygve Reenskaug提出首先被应用在SmallTalk环境中是许多交互和界面系统的构成基础MVC结构是为那些需要为同样的数据提供多个视图的应用程序而设计的它很好的实现了数据层与表示层的分离MVC作为一种开发模型通常用于分布式应用系统的设计和分析中以及用于确定系统各部分间的组织关系对于界面设计可变性的需求MVC(ModelViewController)把交互系统的组成分解成模型视图控制器三种部件

视图部件把表示模型数据及逻辑关系和状态的信息以特定形式展示给用户它从模型获得显示信息对于相同的信息可以有多个不同的显示形式或视图

控制器部件是处理用户与软件的交互操作的其职责是控制提供模型中任何变化的传播确保用户界面于模型间的对应联系它接受用户的输入将输入反馈给模型进而实现对模型的计算控制是使模型和视图协调工作的部件

模型部件保存由视图显示由控制器控制的数据它封装了问题的核心数据逻辑和功能的计算关系它独立于具体的界面表达和I/O操作

模型视图与控制器的分离使得一个模型可以具有多个显示视图如果用户通过某个视图的控制器改变了模型的数据所有其它依赖于这些数据的视图都应反映到这些变化因此无论何时发生了何种数据变化控制器都会将变化通知所有的视图导致显示的更新这实际上是一种模型的变化传播机制模型视图控制器三者之间的关系和各自的主要功能如图所示

MVC设计模式的实现

ASPNET提供了一个很好的实现这种经典设计模式的类似环境开发者通过在ASPX页面中开发用户接口来实现视图控制器的功能在逻辑功能代码(cs)中实现模型通常对应应用系统的业务部分在ASPNET中实现这种设计而提供的一个多层系统较经典的ASP结构实现的系统来说有明显的优点将用户显示(视图)从动作(控制器)中分离出来提高了代码的重用性将数据(模型)从对其操作的动作(控制器)分离出来可以让你设计一个与后台存储数据无关的系统就MVC结构的本质而言它是一种解决耦合系统问题的方法

视图

视图是模型的表示它提供用户交互界面使用多个包含单显示页面的用户部件复杂的Web页面可以展示来自多个数据源的内容并且网页人员美工能独自参与这些Web页面的开发和维护

在ASPNET下视图的实现很简单可以像开发WINDOWS界面一样直接在集成开发环境下通过拖动控件来完成页面开发本本文中介绍每一个页面都采用复合视图的形式即一个页面由多个子视图(用户部件)组成子视图可以是最简单HTML 控件服务器控件或多个控件嵌套构而成的Web自定义控件页面都由模板定义模板定义了页面的布局用户部件的标签和数目用户指定一个模板平台根据这些信息自动创建页面针对静态的模板内容如页面上的站点导航菜单友好链接这些使用缺省的模板内容配置针对动态的模板内容(主要是业务内容)由于用户的请求不同只能使用后期绑定并且针对用户的不同用户部件的显示内容进行过滤使用由用户部件根据模板配置组成的组合页面它增强了可重用性并原型化了站点的布局

视图部分大致处理流程如下首先页面模板定义了页面的布局页面配置文件定义视图标签的具体内容(用户部件)然后由页面布局策略类初始化并加载页面每个用户部件根据它自己的配置进行初始化加载校验器并设置参数以及事件的委托等用户提交后通过了表示层的校验用户部件把数据自动提交给业务实体即模型

这一部分主要定义了WEB页面基类PageBase页面布局策略类PageLayout完成页面布局用于加载用户部件到页面用户部件基类UserControlBase即用户部件框架用于动态加载检验部件以及实现用户部件的个性化为了实现WEB应用的灵活性视图部分也用到了许多配置文件例如置文件有模板配置页面配置路径配置验证配置等

控制器

为了能够控制和协调每个用户跨越多个请求的处理控制机制应该以集中的方式进行管理因此为了达到集中管理的目的引入了控制器应用程序的控制器集中从客户端接收请求(典型情况下是一个运行浏览器的用户)决定执行什么商业逻辑功能然后将产生下一步用户界面的责任委派给一个适当的视图组件

用控制器提供一个控制和处理请求的集中入口点它负责接收截取并处理用户请求并将请求委托给分发者类根据当前状态和业务操作的结果决定向客户呈现的视图在这一部分主要定义了HttpReqDispatcher(分发者类)HttpCapture(请求捕获者类)Controller(控制器类)等它们相互配合来完成控制器的功能请求捕获者类捕获HTTP请求并转发给控制器类控制器类是系统中处理所有请求的最初入口点控制器完成一些必要的处理后把请求委托给分发者类分发者类分发者负责视图的管理和导航它管理将选择哪个视图提供给用户并提供给分发资源控制在这一部分分别采用了分发者策略工厂方法适配器等设计模式

为了使请求捕获者类自动捕获用户请求并进行处理ASPNET 提供低级别的请求/响应 API使开发人员能够使用 NET 框架类为传入的 HTTP 请求提供服务为此必须创作支持 SystemWebIHTTPHandler 接口和实现 ProcessRequest() 方法的类即请求捕获者类并在nfig 的 <httphandlers> 节中添加类

上一篇:为ASP.NET 2.0菜单控件增加target属性

下一篇:Web应用程序ASP.NET开发电子商务网站购物车