组件技术是新一代软件技术发展的标志,作为著名的RAD开发工具,Delphi可以轻松地实现组件的开发。本文将详细介绍Delphi中DCOM/CORBA的实现步骤。
■创建应用服务器
要创建一个多层Client/Server应用程序,首先要创建应用服务器,然后注册或安装应用服务器,只有应用服务器已注册并且正在运行的情况下,才能创建客户程序。对于客户程序来说,既可以在设计期连接应用服务器,也可以在运行期连接应用服务器。注意:如果客户程序与应用服务器不在同一个系统中,必须在客户计算机上注册或安装应用服务器,这样,在设计期就可以连接应用服务器。创建应用服务器的一般步骤是:
1.使用File选单上的New Application命令开始一个新项目,然后使用File选单上的New命令,选取Multi页。如果通过DCOM方式访问服务器,则选择远程数据模块“Remote Data Module”;如果通过CORBA方式访问服务器,则选择CORBA数据模块“CORBA Data Module”。
2.把一个数据集构件,如TTable、TQuery或TStoredProc放到远程数据模块上并进行相关设置,使得它们能访问远程的SQL数据库。注意尽量不要把TDatabase构件放到远程数据模块上,因为这可能引起名称冲突,如果需要用TDatabase构件来连接SQL数据库,建议把TDatabase构件放到另一个数据模块上,然后引用这个数据模块的单元文件。
3.把TDataSetProvider或TProvider构件放到远程数据模块上,有一个数据集构件,就要有一个TDataSetProvider或TProvider构件与之对应。然后,用鼠标右键单击TDataSetProvider或TProvider构件,在弹出的选单中选择“ExportFrom in Data Module”命令,这是为了引出IProvider接口,在类型库中注册。
4.设置TDataSetProvider或TProvider构件的DataSet属性指定要访问的数据库,实际上就是第二步所放的数据集构件。
5.编写代码,实现规则。
6.保存、编译、注册并安装应用服务器。对于DCOM协议而言,应用服务器就好像一个自动化服务器一样,必须像ActiveX或COM服务器那样注册。如果使用CORBA,可以不注册,但最好注册。如果要使客户程序对服务器接口的调用在运行期是动态确定的,就要在接口库(Interface Repository)中安装服务器的接口。如果要使客户程序能自动激活应用服务器(如果还没有运行的话),应用服务器就必须用OAD(Object Activation Daemon)进行注册。
7.如果应用服务器没有使用DCOM,必须安装有关的运行期软件,因为其他连接方式需要这些运行期软件的支持。对于CORBA来说,需要安装VisiBroker ORB。
■远程数据模块
应用服务器的关键部件是远程数据模块。Delphi 4支持三种类型的远程数据模块,分别是TRemoteDataModule、TMTSDataModule和TCorbaDataModule。其中TRemoteDataModule在生成DCOM应用时加入,在设置其属性的“Remote Data Module Wizard”对话框中,在“Class Name”框内键入远程数据模块的类名,不必以T打头。Delphi 将以此名生成一个TRemoteDataModule的派生类,并以此名生成有关接口。在“Threading Model”框内选择一种线程模式,在“Instancing”框内选择是否根据客户的请求生成远程数据模块的多个实例。
在CORBA应用中,要加入一个TCorbaDataModule类型的远程数据模块,在“CORBA Data Module Wizard”对话框中需要在“Class Name”框内键入远程数据模块的类名, Delphi将生成一个TCorbaDataModule的派生类,并以此名生成有关接口。在“Threading Model”框内选择一种线程模式。在“Instancing”框内指定应用服务器怎样创建远程数据模块的实例,可以选“Shared Instance”或者“Instance-Per-Client”。如果选“Shared Instance”,应用服务器只创建远程数据模块的一个实例来处理所有客户的请求。如果选“Instance-Per-Client”,每当一个客户试图连接时,远程数据模块都会生成一个实例,只要客户与应用服务器的连接没有断开,远程数据模块的实例就一直存在。 [next]
■创建客户程序
下面我们将开始设计客户端程序。创建客户程序的一般步骤是:
1.使用“File”选单上的“New Application”命令开始一个新的项目,然后使用“File”选单上的“New”命令,再双击“Data Module”图标加入一个数据模块。
2.把一个或几个MIDAS连接构件如TDCOMConnection、TCorbaConnection、TRemoteServer或TMIDASConnection加到数据模块上。至于究竟选择哪一种MIDAS连接构件,这取决于通讯协议。
3.设置有关属性指定和连接应用服务器,这与具体的MIDAS连接构件有关。
4.把一个或几个TClientDataSet构件放到数据模块上,设置RemoteServer属性指定一个MIDAS连接构件,设置ProviderName属性指定应用服务器上的TDataSetResolver 或TProvider构件,这样,客户程序就可以通过IProvider接口与应用服务器通讯。
5.把一个TDataSource构件放到数据模块上,设置它的DataSet属性指定TClie