软件的三层结构开发
随着互连网应用的深入和发展,三层体系结构的应用模式也得到更多人的青睐。本文介绍了三层结构应用程序的概念和优点,并结合一个实例介绍了如何建立三层结构的
ASP应用程序。
一、两层结构的
ASP应用有何缺点
在
Browser/Server 应用程序开发领域,微软公司的
IIS/ASP以其强大的功能,良好的扩展能力,及与其它微软产品的一致性,迅速地流行起来。它能使一个具有
VB/VC经验 的程序员,很快地成为一个
Web程序员,开发出看上去非常专业的应用。但是,
ASP有一个天生的缺点,就是
ASP代码和
HTML代码是混在一起的,
ASP 程序员既需要考虑与数据库打交道,需要关心如何与
HTML配合,有时还需要用
ASP直接生成
HTML代码。其结果是,当程序逻辑足够复杂时,
.asp源文 件非常长;而且,无论客户提出用户界面的改变,还是商业逻辑的改变
(比如,在考试系统中,
"合格
"的标准可能从达到
60分就算合格,改为进入前
100名才 算合格
),都需要对
.asp文件进行改动,而商业逻辑的改变,很可能需要改动很多文件。
二、三层结构的概念
在传统的
Client / Server应用中,也存在着上述同样的问题,多层结构的应用正是在对
C/S 结构的总结基础上产生的,并且也已经扩展到了
B/S应用开发领域。 即将应用划分为三层
(可以有更多层,但三层最常见
): 用户界面层
(ui),商业逻辑层
(biz),数据库层
(data)。 用户界面层负责处理用户的输入和向用户的输出,但并不负责解释其含义
(出于效率的考虑,它可能在向上传输用户输入前进行合法性验证
),这一层通常用前端工 具
(VB,
VC,
ASP等
)开发
;商业逻辑层是上下两层的纽带,它建立实际的数据库连接,根据用户的请求生成
SQL语句检索或更新数据库,并把结果返回给 客户端,这一层通常以动态链接库的形式存在并注册到服务器的注册簿
(Registry)中,它与客户端通讯的接口符合某一特定的组件标准
(如
COM,
CORBA),可以用任何支持这种标准的工具开发
;数据库层负责实际的数据存储和检索。 有了这样的结构,上面的问题迎刃而解
:还是以考试系统中的合格标准为例,在客户端所有需要显示合格人员名单的地方,调用这样一个函数
GetQualifiedList,至于这个函数如何编写,如何与数据库打交道,以至访问的是何种数据库都与其无关
(你一定有过这样的经历,在一种数据库 系统上运行得很好的
SQL语句,有时换到另一种数据库系统上必须加以修改
); 在中间层
DLL中实现这个
GetQualifiedList函数,如果用户对
"合格
"的定义变了,只需要修改这个函数就可以了,只要此函数的入口参数和返 回内容不变,在客户端不需作任何改动。在这里,我们看到了面向对象编程的特性之一封装性的优点,而这一点在开发大型应用时尤其有用
--我们可以把开发人员 分成两组,一组负责开发界面层,另一组负责开发商业逻辑层,双方只要按照事先商定的函数接口,并行地开发