| 1、 用户界面与应用逻辑的分离,有效的隔离开发人员的角色。用户界面与应用逻辑的紧密耦合是Web应用程序的天生缺陷,在编写CGI时甚至要使用printf将整个页面输出。为了追求Web 页面的完美通常界面的设计与应用逻辑的实现是两种类型的工程师。一个擅长使用Photoshop与Dreamwave毕业于艺术院校,一个只懂得C++与Java整天敲击键盘,要让这两种人才合并简直是Mission Impossible。在这种背景下,用户界面与应用逻辑紧密耦合的矛盾与日俱增,同时能使这两种开发人员的工作有效分离的设计模式将会大大提高生产效率。
2、 提供中心控制机制。Web页面之间相互连接,这在给用户提供方面的同时使得整个系统难以维护,系统逻辑混乱。好的设计模式应提供中心控制机制,减少页面间耦合,系统逻辑清晰。
3、 给单元测试和维护提供的有效的机制。
4、 提高系统中各种组件的可复用性。目前通常采用配置的方式提高组件的可复用性,一个标准的组件只要经过简单的配置即可应用在不同的系统中。
5、 减少培训的时间和成本。
解决之道
目前对Web Tier Application 的设计模式主要有两种,它们是Microsoft的.NET ASP和Sun的Web Tier Application Framework。Sun的Web Tier Application Framework为JSP和Servelet的Web编程提供了较好的解决方案。
对两种模式优略的比较,非我的能力所及,也不是本文讨论的要旨。下面将着重讨论ASP.NET的设计模式。
ASP.NET的设计模式
将ASP.NET与传统的Windows应用程序来比较,将有助于建立良好的设计思路,这也是设计结构良好的ASP.NET应用的关键。Windows应用程序很好的解决了前面提出的问题,界面与逻辑的分离、中心控制机制、可以进行有效的单元测试等;最重要的是WebForm与Windows应用程序有太多的相似之处,你完全可以将许多以前的经验应用到WebForm中。
下图将ASP.NET与Windows应用程序对应起来将更易于对ASP.NET设计模式的理解。

由此可见:
- Web Page的Header bar 可以和应用程序Menu bar对应,他们都起着大的功能点的跳转作用。
- Bottom Bar可以和 Status Bar 对应可以显示一些不重要的信息如Copyright 等。
- Web Page 的主体部分,在ASP.NET中的WebForm可以和 Dialog对应。如前所述WebForm 基于事件驱动的编程模式与Dialog及其类似。
这种设计模式利用到了page template 技术,具体实现如下图所示:

由于ASP.NET支持自定义的WebControl,可以实现<waf:header> <waf:bottom>, Microsoft 在其实现的PetStore中,有相应的实例代码这里将不再讨论。
下面就前文中提出的设计目标详细讨论ASP.NET的解决方案:
1、用户界面与应用逻辑的分离
ASP.NET已很好的解决了这个问题,界面保存在*.aspx文件中,而事件的处理代码保存在*.aspx.cs中,可以在 *.aspx中用如下代码建立连接。
<%@ Page language="c#" Codebehind="waf_ctrl.aspx.cs" Inherits="waf.WAFControl" %>
在设计和实现 WebForm时,应尽量将代码放入 *.aspx.cs 中。
2、提供中心控制机制
ASP.NET似乎没有提供一种中心控制机制,从Microsoft实现的PetStore中可以看出,页面之间的相互连接关系十分复杂,如下图所示,页面之间是一种网状关系。对于大型的应用系统此情况将会更加糟糕。Waf提供的中心控制机制,下一章将着重介绍。

3、给单元测试和维护提供的有效的机制
WebForm的事件驱动机制,已经将各个功能单元的耦合减到最小。如比较常见的用户注册功能,你可以将用户的注册界面、信息填写、审核、在数据库中的保存等功能,在一个*.aspx 、aspx.cs和 *.cs中完成,就如同在传统的Dialog 中一样,这将使系统更加易于测试。
4、提高系统中各种组件的可复用性
ASP.NET为开发常见标准组件提供了良好的基础。在系统设计中应设计、实现更多的标准组件,并通过配置的方式使其更加标准化。
5、减少培训的时间和成本
如果你熟悉传统的Windows窗口编程技术,你会发现以前的很多经验可以应用到 ASP.NET中。
Web Application Framework
简介
Web Application Framework(WAF)是一种基于ASP.NET的软件体系结构。其提供一种中心控制机制不但可以使系统逻辑清晰,代码易于维护,其还有如下益处:
1、 系统功能易于扩展
2、 支持集中身份认证
上一页 [1] [2] [3] [4] 下一页 |