Delphi多层分布计算应用服务技术-MIDAS
·林大滨
当今信息技术部门所面临的困境是如何能够创建通向未来的、无中断的、跨越LAN、WAN 和Internet平台的分布式应用结构,以满足复杂的、不断发展变化的业务需求,同时又能确保企业在系统、应用、信息及人员上的投资。能够适应这种困境的结构是多层分布式计算体系结构。多层体系结构能够在低费用的条件下比现行的PC LAN 、二层客户/服务器或主机/终端应用结构能够提供更好、更及时的信息。多层分布计算应用服务技术是目前数据库应用发展的潮流,传统的客户/服务器(二层)的应用正朝着三层或N-Tier 结构发展。
一.多层分布计算应用服务结构
Borland MIDAS(Multi-tier Distributed Applications Services)多层分布应用服务为开发者开发多层应用提供了一套高级组件、服务器及核心技术。在Delphi 3中针对多层结构有三种代理(Broker)和新一代的数据库引擎来适应它:
* Remote Data Broker
* Business Object Broker
* Constraint Broker
Remote Data Broker结构的精髓是让每个客户端不再需要BDE,取而代之的是集中化的BDE,以集中管理的方式降低每个客户在BDE上所需调整的开销和复杂性。Business Object Broker 的目的是给一些关键性的商业应用程序提供一个快速而且可信赖的使用环境。为了达到这种高层次的要求,Business Object Broker自动地将应用程序加以区分,并把重要的业务规则复制到第一个区间,以满足对速度的要求。Constraint Broker的作用是保证所有客户数据的一致性和完整性。典型的多层结构是三层结构:1.数据库服务器;2.应用服务器;3.瘦客户端。
数据库服务器可以是InterBase、Oracle、Sybase、Ms SQLServer等。应用服务器和瘦客户端可以用Delphi创建。数据访问软件(如BDE、SQL*Net等)应该和应用服务器运行于同一台计算机上。分布式计算支持MIDAS OLEnterprise或微软的DCOM技术。在Delphi 3中有四个关键的工具用于创建分布数据集,前面两个位于服务器端。
1.Remote Data Modules的作用与标准的Data Modules一样,但它不是在你本机的应用中提供数据,而是在网络中广播数据。特别是,它能把简单的Data Module转换为一个COM对象,因此,它能允许远程客户借助于DCOM(分布式组件对象模型)访问Data Module。
2.TProvider包含在Remote Data Module中,正象TTable对象包含在一个标准的Data Module中一样。所不同的是,Provider对象通过网络广播一个表。Provider对象是作为TTable或TQuery对象的属性包含于其中的。
在客户端有两个组件用于访问服务器端提供的数据。
1.TRemoteServer组件提供客户端访问服务器端的Remote Data Modules的能力。更具体地说,它与Remote Data Module支持的COM 接口连接。虽然它的名称意思为“远程服务器”,但实际上它不是在服务器端的组件,而是在客户端的组件。它的功能是在网络上查找已注册的可用服务器,一但查找到,TRemoteServer就与它连接。
2.TClientDataSet组件是挂在TRemoteServer组件上的,并与服务器上的特定Provider联系,当客户端应用程序要与远程数据集相连接时,它为其提供数据源。实际上,TClientDataSet与传统应用中TQuery和TTable的作用相类似。以上四个组件的作用及相互关系可用图1表示。
<a href="/pcc/98_11/images/11001.gif">点击插图</a>
图1.远程数据集结构
二.创建多层结构的环境、步骤和方法
下面具体说明创建三层结构的环境、步骤与方法。
* 环境
1. 第一层数据库服务器
数据库服务器可以是各种流行的数据库系统,如Sybase、Ms SQLServer、Imformix、Interbase、Oracle或桌面数据库Dbase等等,只要在Windows 95或者Windows NT客户端环境下,通过BDE或ODBC能与之相连接即可。数据库系统所在的平台可以是Unix或Windows NT网络平台。
2. 第二层应用程序服务器
应用程序服务器所需的环境必须是Windows NT Server 4.0、Windows NT Workstation 4.0或Windows 95(Windows 95下必须安装Borland OLEnterprise),同时应用程序服务器所在的平台上必须安装Borland的BDE。
3.客户端应用程序
客户端应用程序所需的环境是Windows 95、Windows NT Workstation 4.0或Windows 98(Windows95 下必须安装DCOMCfg for Windows 95)。
* 应用程序服务器的创建(服务器端远程数据集)
首先创建一个Delphi数据库应用项目,然后,你可以按如下步骤进行操作。
1.用File | New 创建一个Remote data module,系统会弹出对一个话框,让你输入类名。建议你给Remote data module的命名与数据集描述相对应(如CustOrderRemoteData等)。
2.在Remote data module内放置一个或多个TProvider组件。
3.在Remote data module内放置一个或多个TTable或TTuery组件。把TProvider与TTable或TQuery对象相关联(在Tprovider对象的DataSet属性中填入对应的TTable或TQuery)。
4.鼠标点中TProvider对象,按鼠标右键为远程机器访问创建接口方法(COM对象)。这时,在弹出的菜单上选择“Export XXX from data module”,这里XXX是你的TProvider名。如果在你的菜单中没有上述选项,那么说明该选项已被选过。
5.保存好你的程序,然后,编译运行该程序,同时进行系统注册。
倒此为止,你已创建好了远程数据服务器,现在你可以把它放置在一个NT Server上,并配置好BDE。如果你使用OLEnterprise,你可以从网络的任何处访问它;如果你使用DCOM,那么你可以在NT域的任何处访问它。如果你把程序移到另一台机器中,则你必须在此机器上运行一遍程序以进行系统注册。从客户端访问这个服务器,只需安装单一的客户端可执行程序和大小为151Kb的文件DBClient.dll,无需安装数据库工具集。在服务器端,应包含文件STDVCL32.DLL,如果已经安装了Delphi,则该文件被自动安装。
* 创建远程客户端应用程序
应用程序服务器端设置好后,现在可以设置客户端的应用程序。我们假设客户机与应用程序服务器 在同一台机器上,程序调试好后再把应用程序服务器移到远程机器上。
首先创建一个新的应用程序项目,放置一个TRemoteServer组件,填写好如下所示的属性。如图2所示。
<a href="/pcc/98_11/images/11002.gif">点击插图</a>
图2.TremoteServer组件
ServerName—你可编辑下拉组合框查来找你所要的Server名,如果该项的域为空,或者不含有你所需要的Server名,那么,在客户端运行一遍应用程序服务器程序,这样就可以注册服务器了;ComputerName—填写远程计算机名称。
然后,把一个或多个TClientDataSet组件放置到窗体上,将其属性RemoteServer设置为前面设定的Server。从ProviderName属性下拉组合框列表中选择一个DataSet Provider。PacketRecords的属性值为-1时,表示一次从应用程序服务器取得所有的数据;为正值时,表示从应用程序服务器中取得PacketRecords属性数值个记录数的数据;而当其值为0时,则表示取得数据的 MetaData。如图3所示。
<a href="/pcc/98_11/images/11003.gif">点击插图</a>
图3.TClientDataSet组件
由此可知,使用TclientDataSet可以让应用程序控制数据存取的流量,以及从应用程序服务器存取数据的种类。正象你使用Ttable或Tquery组件一样,你也可以在TclientDataSet组件上使用数据库控件集。现在可以运行你的客户应用程序了。
1)使用OLEnterprise
OlEnterprise与DCOM相比较具有下列几点优势:
(1)即使在没有NT Server的情况下,它也能允许你在Windows 95的机器之间相互链接。而在DCOM下,没有服务器这种链接是不可能的,即使有服务器,在Windows 95的机器之间链接也是不可能的。总而言之,Windows 95在DCOM下不能作为应用服务器。
(2)OlEnterprise中有一个对象代理器(Broker)允许你把客户的链接负载分布到多台机器上。
2)使用DCOM
如果你的运行环境是Windows NT 40、Windows 98,则系统已经内置安装好DCOM。如果在Windows 95下,你同时安装了IE 4.0,那么DCOM 也安装好了。此外,你可以从Microsoft的Web站点下载DCOM for Windows 95。
在使用DCOM前首先必须设置域(domain),所有的你需要用于分布式应用的Windows NT工作站或Windows 95都必须成为该域的成员。对于Windows 95机器,你还需配置好网络属性,以确保你具有用户访问控制的级别。
3)用ActiveXForm实现运行于浏览器内的瘦客户机
Delphi的一项新技术ActiveForms可以使开发人员结合上面所述的三层应用技术开发出基于浏览器内的瘦客户机。将Delphi的Form转成ActiveXForm,ActiveXForm是ActiveX控件,它使用Delphi的Form为载体来装载其他的Delphi的组件,这样,我们可以通过TremoteServer、TClientDataSet等控件编写多层数据库应用程序。客户机通过浏览器下载一个ActiveXForm,ActiveXForm通过TremoteServer与远程应用服务器建立链接,再由远程服务器访问数据库。
上面简要概述了Delphi3的分布式应用服务技术MIDAS,在最新的Delphi 4.0版中,增强了MIDAS的功能,增加了COBAR等控件组件。使得客户机与远程应用服务器的链接的方法更加灵活方便。链接方法增强为:DCOM、TCP/IP Sockets、COBAR或OLEnterprise。
(作者地址:厦门市湖滨北路振业大厦3楼厦门市经济信息中心 361012 收稿日期:1998.09.01)