Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->编程语言 ->Delphi ->正文

多层数据库开发三:创建多层应用程序

来源:Linuxdby.com 作者:Webmaster 时间:2007-06-05 点击: [收藏] [投稿]
  第三章 创建多层应用程序
  一个多层的Client/Server应用程序在逻辑上划分为几个部分,分别在不同的机器上运行,这些机器既可以在一个局域网内,也可以在Internet上。多层体系结构最大的优势可以概括为两点,一是集中化的商业逻辑,另一个是客户程序可以做得很“瘦”。
  目前较常见的是三层的体系结构,其中,最关键的是应用服务器,它在三层体系结构中起了承上启下的作用,所以,应用服务器又叫Data Broker。Delphi4可以创建应用服务器,也可以创建“瘦”客户。如果不怕麻烦的话,也可以创建数据库后端。
  在更复杂的多层体系结构中,“瘦”客户与远程服务器之间可以加入更多的服务中间件,例如,可以加入一个安全服务中间件,或者加入一个转换中间件,专门用来处理不同平台共享数据的问题。一旦您真正理解了三层的体系结构,多层的体系结构就迎刃而解。
3.1 多层体系结构的概述
  Delphi 4对多层体系结构的支持主要得益于它的MIDAS技术。MIDAS是Multi-tier Distributed Application Services Suite的简称。MIDAS技术与Delphi 4中的另一个关键技术DAX配合起来使用,可以使多层的体系结构分布在Intrenet/Intranet上。
3.1.1 多层体系结构的优势
  在多层体系结构中,由于服务器集中实现了应用逻辑(又称商业规则),客户程序可以把重点放在显示数据和与用户交互上,客户程序甚至都不需要知道数据存储在哪儿。
  具体来说,多层的体系结构具有如下优势:
  在一个共享的中间层封装了商业规则。不同的客户程序可以共享同一个中间层,而不必由每个客户程序单独实现商业规则。
  客户程序可以做得很“瘦”。因为很多复杂的工作由应用服务器代劳了,客户程序只需要关注用户界面本身。“瘦”客户程序更容易发布、安装、配置和维护。
  实现了分布式数据处理。把一个应用程序分布在几个机器上运行,可以提高应用程序的性能,通过冗余配置还可以保证不会因为局部故障导致整个应用程序崩溃。
  有利于安全。可以把一些敏感的功能放在有严密防护措施的层上,同时又不至于使用户界面变得复杂。Delphi 4中的CORBA或MTS支持较复杂的安全机制。
3.1.2 MIDAS技术
  MIDAS技术是多层体系结构的关键。无论是应用服务器端还是客户端,MIDAS技术需要有DBCLIENT.DLL的支持,这个动态链接库用于管理数据包。发布MIDAS应用程序时需要购买服务器许可。
  基于MIDAS的多层应用程序需要用到一些特殊的构件,这些构件分为四大种类:对象库中的远程数据模块。远程数据模块与普通的数据模块有些相似,不同的是,远程数据模块可以作为COM服务器或CORBA服务器让客户程序访问它的接口。
  TDataSetProvider和TProvider构件。这两个构件用在应用服务器端,主要作用是提供IProvider接口,客户程序通过IProvider接口获得数据和更新数据集。
  TClientDataSet构件。这是一个从TDataset继承下来的但不需要BDE的构件。MIDAS连接构件。包括TDCOMConnection、TSocketConnection、TCorbaConnection TOLEnterpriseConnection、TMIDASConnection和TRemoteServer。其中,TMIDASConnection和TRemoteServer是为了兼容Delphi3的代码而保留的。MIDAS连接构件的作用是为客户程序定位服务器和IProvider接口。每个MIDAS连接构件都以一种特定的通讯协议工作。
3.1.3 MIDAS应用程序是怎样工作的
  用户首先要启动客户程序,客户程序将试图连接应用服务器,如果应用服务器还没有运行,客户程序将激活应用服务器,并从中获得IProvider接口。
  客户程序向应用服务器请求数据。如果TClientDataSet的FetchOnDemand属性设为True,客户程序会根据需要自动检索附加的数据包如BLOB字段的值或嵌套表的内容。否则,客户程序需要显式地调用GetNextPacket才能获得这些附加的数据包。
  应用服务器收到客户程序的请求后,就从远程数据库服务器那儿检索数据,并打包返回给客户程序
  客户程序收到数据包后把包打开,然后显示或进行处理。
  用户对数据进行编辑修改,然后向应用服务器申请更新数据,实际上也要打包。
  应用服务器收到客户程序的申请后,就向远程数据库服务器申请更新数据。如果出错,应用服务器就把出错的记录返回给客户程序去核对。
  客户程序核对并修改了数据后,既可以放弃此次更新,也可以继续此次更新。
3.1.4 客户程序的结构
  对于最终用户来说,多层体系结构中的客户程序与两层体系结构中的应用程序没有什么区别,在结构上,客户程序就好像一个基于文件的单层应用程序一样,仍然通过标准的数据控件与用户交互。但与单层应用程序不同的是,多层体系结构中的客户程序是通过应用服务器提供的IProvider接口获得数据的,也通过IProvider接口申请更新数据。
  注意:当使用MTS的时候,可以选择不使用IProvider接口。不使用IProvider接口的好处是,可以充分发挥MTS在处理事务方面的特长。
  在客户程序中,MIDAS连接构件扮演着极其重要的角色。不同的MIDAS连接构件使用不同的通讯协议:
. TDCOMConnection DCOM
. TSocketConnection Windows Sockets (TCP/IP)l
. TOLEnterpriseConnection OLEnterprise (RPCs)
. TCorbaConnection CORBA (IIOP)
  TRemoteServer和TMIDASConnection是为了兼容Delphi 3的代码而保留的。
3.1.5 应用服务器的结构
  应用服务器的关键部件是远程数据模块,它提供了IDataBroker接口。当客户程序与应用服务器建立了连接,就通过IDataBroker接口来获得IProvider接口。
  Delphi 4支持三种类型的远程数据模块:
  TremoteDataModule。这是一个支持双重接口的自动化服务器,这种类型的远程数据模块适合于使用DCOM、TCP/IP或OLEnterprise方式。
  TMTSDataModule。这也是一个支持双重接口的自动化服务器,用这种类型的远程数据模块创建的应用服务器是Active Library即动态链接库,适合于使用DCOM、TCP/IP或OLEnterprise方式。
  TcorbaDataModule。这是CORBA服务器,适用于与CORBA客户通讯。
  上述三种远程数据模块都可以作为容器,但只能放置非可视的构件。另外,远程数据模块上一般要放一个或几个TDataSetProvider或TProvider构件来提供IProvider接口 。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:FAQ:如何访问WebBrowser的滚动条   下一篇:一些让我受益匪浅的delphi资源站点

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号