浅析多层结构及其在Delphi中的实现第2页
个动态链接库用于管理数据包,发布MIDAS应用程序时需要发布这个文件。基于MIDAS的多层结构依然分为客户端应用程序,应用程序服务器和远程数据库服务器,如图三所示。
从图三可见,MIDAS的数据库应用程序需要一些特殊组件,这些组件共分为4类:
(1)远程数据模块。位于服务器端,作为COM服务器或CORBA服务器让客户端应用程序访问它的接口。
数据模块IAerver接口远程数据模块
客户端应用程序应用程序服务器远程数据库服务器
图三MIDAS结构
(2)DataSetProvider组件。位于服务器端,提供IAerver接口,客户端应用程序通过
IAerve接口获得数据。
(3)连接组件。位于客户端,包括DCOMCoection,SocketCoection,CORBACoection,
OLEnterpriseCoection,MIDASCoection和RemoteServer等连接组件,为客户端应用程序定位应用程序服务器和IAerve接口。
(4)ClientDataSet组件。位于客户端,访问服务器端的IAerve接口,它是从TdataSet继承下来的组件。
客户端应用程序通过IAerve接口与应用程序服务器通讯,通讯协议为DCOM,TCP/IP,HTTP,OLEnterprise和CORBA。通讯协议因客户端的MIDAS连接组件及应用程序服务器上的远程模块不同而不同。
2.1.1客户端应用程序结构
在结构上,客户端应用程序通过标准数据控制组件与用户交互,但是它是通过应用程序服务器提供的IAerve接口获得数据,也是通过IAerve接口更新数据。所谓“廋”客户即指不依赖BDE的数据集(TClientDataSet组件)构成的客户端应用程序。TClientDataSet组件是从TDataSet派生出来的客户端数据集组件,它扮演了与TTable或TQuery同样的角色,但它不需要BDE,它把通过IAerve接口获得的数据在客户端内存中建立副本,对数据进行操作。直接访问远程数据库服务器的是应用程序服务器。
远程数据模块说明
RemoteDataModule支持双重接口的自动化服务器,支持DCOM,TCP/IP或OLEnterprise协议。
MTSDataMoudle支持双重接口的自动化服务器,创建的应用程序服务器是动态链接库,支持DCOM,TCP/IP或OLEnterpris协议。
CORBADataMouduleCORBA服务器,支持CORBA协议
在客户端,MIDAS连接组件非常重要,不同连接组件使用不同的通讯协议,如表一所示。
连接组件通讯协议
DCOMCoectioDCOM
SocketCoectioTCP/IP
WebCoectioHTTP
OLEnterpriseOLEnterprise
CORBACoectioCORBA
表一MIDAS连接方式表二支持MIDAS的数据模块
2.1.2应用程序服务器
应用程序服务器的关键部件是远程数据模块,在远程数据模块上,TTable,TQuery等BDE数据集组件通过BDE与远程数据库服务器连接访问数据库,DataSetProvider组件输出IAerver接口,DataSetProvider组件通过DataSet属性与数据集组件相连,这样客户端通过IAerver接口就可以访问数据。
Delphi支持三种类型的远程数据模块,如表二示。
2.2用MIDAS创建多层结构数据库应用程序实例
建立多层结构应用系统,必须先建立应用程序服务器,并运行注册之,再建立客户端。下面就以笔者创建的一个三层结构为例来介绍用Delphi实现三层结构的步骤。(假设在应用程序服务器上已设好BDE连接,连到远程数据库服务器。)
2.2.1建立应用程序服务器。(在应用程序服务器上建立)
(1)使用File菜单下的NewAlication建立一个新应用程序。
(2)创建远程模块。使用File菜单下的New打开NewItems对话框,在Multitier选项下,双击RemoteDataModule,设置Claame为rdm,Itancing及ThreadingModule属性取默认值。
(3)在该远程模块上放一个Query1(Tqueyr组件),DatabaseName属性中指定为要访问的数据库,如“出版社”。在该远程模块上再增加一个DataSetProvider1(TDataSetProvider组件),DataSet属性设为Query1,Optio属性中令poAlloCommandtext为true。(设为true,则客户端应用程序中TClientDataSet的属性commandtext中的SQL语句就可以通过IAerver接口传递。)
至此,应用程序服务器已创建完毕,运行该应用程序服务器在系统中注册它,在应用程序服务器上运行ScktSrvr.exe文件,这样今后客户端程序就可以调用该应用程序服务器。
2.2.2创建客户端应用程序。(在客户端机器上创建)
(1)建立数据模块。使用File菜单下的NewAlication建立一个新应用程序。在NewItem中双击DataModule建立一个数据模块(命名为dm),在该模块上放一个连接组件SocketCoection1(TsocketCoection组件),其IP属性中指定应用程序服务器的IP地址,在Port属性中取默认值211,在ServerName属性中设置应用程序服务器(在这里,应用程序服务器就是上面创建的名为rdm的应用程序服务器。),这样就可以定位应用程序服务器和IAerver接口。在dm数据模块上再增加一个ClientDataSet1(TClientDataSet组件),其RemoteServer属性设为SocketCoection1,ProviderName为DataSetProvider1。保存该unit为dm。
(2)创建用户界面。使用File菜单下的NewForm新建一个unit,在该unit中引用上面建立的数据模块单元dm。在用户界面Form上添加DataSource1(TdataSource组件),其DataSet
属性设为dm.ClientDataSet1,即上面数据模块中的客户端数据集组件。添加一个DBGrid1(TDBGrid组件),DataSource属性设为DataSource1。添加一个Btton1组件,caption属性为“查询”,其click事件中程序代码为:
procedureTForm1.Button1click(sender:Tobject);
begin
withdm.ClientDataSet1do
begin
close;
commandtext:=’select*from书’;
ope
end;
end;
至此该三层结构已创建完毕,保存运行客户端应用程序,点击查询按钮(即Btton1按钮),则客户端应用程序将激活应用服务器程序,通过IAerver接口把dm.ClientDataSet1中的SQL语句传到Query1,Query1通过BDE访问数据库服务器,查到的数据再通过IAerver接口传给dm.ClientDataSet1,并在DBGrid1上显示出来。
3结束语
多层结构是因网络发展的需要而出现的产物,运用面向对象技术,分离用户界面和企业逻辑,解决了两层结构的维护成本高,客户端臃肿等弊端,且改善了延展性。在Delphi中采用MIDAS技术,运用COM/DCOM/COM 或CORBA标准,为多层结构的开发提供了强大功能,增加了开发人员的生产力。