关键词三层结构;中间件;连接技术;数据库应用系统
作者简介:邵泳兵,女,广东南海人,硕士,助教
1引言
当前的数据库应用系统中,按其结构划分为两类,一类是两层结构的数据库应系统,另一类是多层结构的数据库应用系统。
两层结构的数据库应用系统包括客户/服务器模式和浏览器/服务器模式,它的特点是数据和程序分离,数据库服务器端治理数据,客户机或浏览器显示、访 问和更新数据,因此可以分别进行开发和维护,同时也降低了数据库服务器的工作量,减小了网络的流量,具有较强的安全性,但当客户端程序或浏览器较多时,服 务器的性能会明显下降,而且应用逻辑安装在每个客户机上,假如系统要升级,就只能对客户机逐一进行,假如客户机分布在不同的地点,维护和升级任务将非常繁 重。为了解决两层结构应用系统的不足,人们提出了多层数据库应用系统的结构模式,具有代表性的是三层结构。
2三层系统的体系结构
所谓三层结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。在这种体系结构中,客户机只存放表示层软件,后台是数据库,业务逻辑包括 事务处理、监控、信息排队、Web服务等采用专门的中间件服务器,大大减少了与数据库服务器连接的次数。通常情况下客户端通过COM/DCOM通讯与中间 层建立连接,再经由中间层与数据库进行交互,客户端与数据库隔离,提高了整个系统的可靠性。在三层系统体系中,系统资源被统一治理和使用,用户可以通过网 格门户透明地使用整个网络资源。它的体系结构如图1所示。
三层结构功能如下:
表示层:提供简洁的人机交互界面,负责数据显示和客户端的数据处理,由客户机实现;
功能层:实现业务逻辑,即实现客户与数据库对话,同时,在这一层中,还应实现分布式治理、负载均衡、安全隔离等;它是一个远程模块,由应用服务器来实现;
数据层:负责数据治理,提供数据的存储服务,由数据库服务器来实现。
三层结构的主要特点:安全性。中间层隔离了客户直接对数据服务器的访问,保护了数据库的安全。稳定性。三层分布式体系提供了更可靠的稳定性:中间层 缓冲Client与数据库的实际连接,使数据库的实际连接数量远小于Client应用数量。当然,连接数越少,数据库系统就越稳定。易维护。由于业务逻辑 在中间服务器,当业务规则变化后,客户端程序基本不做改动。快速响应。通过负载均衡以及中间层缓存数据能力,可以提高对客户端的响应速度。系统扩展灵活。 基于三层分布体系,当业务增大时,可以在中间层部署更多的应用服务器,提高对客户端的响应,而所有变化对客户端透明。
3三层系统的连接技术
3。1前端连接技术
在三层数据库应用系统中,客户端与应用服务器端常处于不同的物理区域,它们之间的数据传送成了影响系统运行效率最关键的技术。在Delphi中要建 立与应用服务器的连接,客户程序必须使用一个或几个DataSnap连接组件,以及ClientDataSet等组件。首先 DataSetProvider组件把读取的DataSet数据源压缩并切割成一段一段的数据包,通过各种传输协议如DCOM、TCP/IP、HTTP协 议传给前端,前端的DataSnap连接组件会把接受到的数据包再还原成DataSet传给ClientDataSet组件,DataControl组件 就可以将ClientDataSet作为数据源对它进行操作。
DataSnap技术是Delphi开发多层数据库应用系统的核心技术,它不但提供了基于DCOM、TCP/IP、HTTP三种传输协议的数据传送 方式,还通过SimpleObjectBroker组件使系统轻易具备容错能力和负载平衡能力,使得Delphi开发的多层应用系统不但结构简洁、执行效 率高、应用范围广,而且安全稳定,而且现在DataSnap还能够同时在Windows和Linux上执行。
3。2应用服务器与数据库的连接ADO
ADO是Microsoft存取通用数据源的标准引擎,它通过封装OLE-DB来存取各种不同的数据,OLE-DB定义了统一的COM接口作为存取 各类异质数据源的标准,藉由OLE-DB,程序员就可以使用一致的方式来存取各种数据,但OLE-DB太底层化,在使用上非常复杂,而ADO组件以COM 技术封装OLE-DB为ADO对象,大量简化了程序员开发数据存取的工作,同时许多厂商也推出了ADO驱动程序,使得ADO应用日趋广泛。
4实现方法
本例使用DCOM协议,系统模型如图2所示。
应用服务器是一个远程数据模块,它是一个COM程序,它通过ADO与SQL语句和数据库服务器连接。它负责从数据库服务器存取数据并通过 DataSetProvider组件将数据分割成数据包,然后通过DCOM协议传递到网络上的客户端。客户端的组件负责还原数据,这项工作由 DCOMConnection来完成。ClientDataSet组件是客户端数据集组件,它负责接收DCOMConnection组件还原过来的数据, 并把数据传递给客户端数据处理组件,客户端数据处理和显示组件主要有ADOQuery、ADOTable、DataSource、DBGrid、 DBEdit、DBComboBox等等,反过来,ClientDataSet组件负责收集客户端处理的数据,并把处理后的数据提交 DCOMConnection组件,该组件通过DCOM协议和应用服务器正确地将数据写入数据库DB。
以显示学生数据库中学生基本信息表为例,具体地用Delphi语言实现步骤如下。
4。1创建数据库
在E盘建立文件夹E:“学生课程治理,在该文件夹中创建Access数据库Student。mdb,包含表jbqk、course、teacher、sle_course,jbqk表中设置主键为number,以备查询之用。建立的表如图3所示。
图3学生基本情况表jbqk
4。2建立应用服务器程序
建立一个应用程序,在窗体上添加ADOConnection1、ADOTable1、DataSource、DBGrid1四个组件,设置这四个组件的属性。
ADOConnection1的ConnectionString属性设置为Student。mdb,LoginPrompt属性设置为 false,ADOTable1的Connection属性设置为ADOConnection1,TableName属性设置为jbqk,Active属 性设置为true。保存所有文件,项目文件名为AppServer,单元文件名为Server1。
新建一个远程数据模块,设置类名为rdstu,在它的Uses子句中添加Server1,这样rdstu模块就可以访问Server1里面的组件 了。在模块中添加组件DataSetProvider,设置它的DataSet属性为Form1。Table1,这样可以将本地数据读到DCOM服务器 上,并由DataSetProvider组件提供给客户端。保存单元文件,命名为Server2。
运行程序后,系统自动在服务器注册程序,当有客户端程序运行时,系统会自动启动服务器程序。
4。3建立客户端程序
为了方便描述,这里把客户端程序和服务器程序放在同一台电脑上。实际应用中通常把客户端程序与服务器程序放置在不同的电脑上。
新建一个应用程序,在窗体上添加DCOMConnection1、ClientDataSet1、DataSource1、DBGrid1、DBNavigator1等组件。
设置DCOMConnection1的ComputerName属性为服务器所在的计算机名,这样程序可以在网络上寻找服务器,假如本服务器已在本 机注册,则不设置ComputerName属性;设置它的ServerName属性为AppServer。rdstu;设置它的Connected属性为 True,此时激活服务器程序。
设置ClientDataSet1的RemoteServer属性为DCOMConnection1;ProviderName属性为 DataSetProvider1。这样ClientDataSet1就可以通过DCOMConnection1从DataSetProvider1组件 读取数据了。
DataSource1的DataDet属性设置为ClientDataSet1。
DBGrid1和DBNavigator1的DataSource属性设置为DataSource1。
5结论
和两层C/S结构相比,三层C/S结构具有更灵活的硬件系统构成,对于各个层可以选择与其处理负荷和处理特性相适应的硬件。合理地分割三层结构并使 其独立,可以使系统的结构变得简单清楚,提高了程序的可维护性。三层C/S结构中,应用的各层可以并行开发,各层也可以选择各自最适合的开发语言,有利于 变更和维护应用技术规范。按层分割功能使各个程序的处理逻辑变得十分简单。在Delphi中主要通过DataSnap等技术来实现。随着基于Web的瘦客 户机结构的发展,基于多层分布体系的应用将会越来越广泛