Delphi——多层分布式应用的开发

上传人:油条 文档编号:47618849 上传时间:2018-07-03 格式:PPT 页数:29 大小:671KB
返回 下载 相关 举报
Delphi——多层分布式应用的开发_第1页
第1页 / 共29页
Delphi——多层分布式应用的开发_第2页
第2页 / 共29页
Delphi——多层分布式应用的开发_第3页
第3页 / 共29页
Delphi——多层分布式应用的开发_第4页
第4页 / 共29页
Delphi——多层分布式应用的开发_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《Delphi——多层分布式应用的开发》由会员分享,可在线阅读,更多相关《Delphi——多层分布式应用的开发(29页珍藏版)》请在金锄头文库上搜索。

1、第11章 多层分布式应用的开发本章主要内容: 多层分布式系统的概念 开发多层应用程序的有关组件 如何开发多层分布式数据库应用程序11.1 多层数据库应用程序概述 11.1.1 数据库应用的体系结构研究一下数据库应用的结构,可以发现它是由数据层、 应用逻辑层、用户接口层构成的。数据层用于存取我们的数 据,应用逻辑层用于规定用户如何使用数据,而用户接口层 提供了用户访问数据的操作界面,而层间通过接口相连。这 里只是在逻辑上将一个数据库应用分为三个层次。实际开发数据应用系统时,可以在一个程序内实现所有 三层功能,这就是单层数据库应用。前面所介绍的 ACCESS数据库应用程序就是这种类型。也可以将这三

2、层分开,由不同的程序实现,并且还可以 分别放在不同的机器上运行。这样就形成了双层、三层,甚 至多层的数据库应用体系结构。 11.1 多层数据库应用程序概述1. 单层结构在单层数据库应用程序中,其体 系结构如图11-1所示。 单层结构是一种早期的最简单的 数据库系统,整个数据库应用系统安 装在一台微机上,由一个用户独占, 不同机器之间不能共享数据。 图11-1 单层结构的数据库应用系统11.1 多层数据库应用程序概述2. 双层结构图11-2所示的是客户/服务器(Client/Server)体系结 构,这是最典型的双层结构。 图11-2 客户/服务器体系结构 11.1 多层数据库应用程序概述3.

3、三层结构与多层结构三层结构如图11-3所示。在三层结构中,多了一个中间 层,它把客户端和数据库服务器隔离开来,这样客户端对数 据的所有操作都需要经过中间层的应用服务器,由应用服务 器连接数据库服务器,应用服务器根据设定的应用逻辑对数 据进行相应的处理,最后提交给后端数据库服务器。图11-3 三层体系结构 11.1 多层数据库应用程序概述图11-4是一个基于B/W体系结构的多层数据库应用系统。图11-4 基于B/W体系结构的多层数据库应用系统 11.1 多层数据库应用程序概述11.1.2 Delphi的多层数据库应用体系结构Delphi提出的 MIDAS是把原来双 层的数据连接访问 放到了应用服

4、务器 上,客户端只剩下 了执行文件和 MIDAS.DLL,前台 和后台服务器通过 DCOM机制互相沟 通。其结构如图11 -5所示。图11-5 MIDAS应用程序的结构 11.1 多层数据库应用程序概述1. 应用服务器的结构应用服务器的关键部件是TRemoteDataModule(远程数 据模块),它提供了IAppServer接口。当客户程序与应用服 务器建立了连接,就通过IAppServer接口来获得数据集提供 者列表(list of providers)。TRemoteDataModule组件是一个支持双重接口的自动化 服务器,这种类型的远程数据模块适合于DCOM, HTTP, Socke

5、ts通讯方式。远程数据模块可以作为容器,但只能放置 非可视化的组件。另外,远程数据模块上一般要放一个或几 个TDataSetProvider或TProvider构件来提供IProvider接口 。TDataSetProvider组件存在于应用服务器端的远程数据 模块中,用于连接数据模块中的数据集,并向客户端发送数 据。11.1 多层数据库应用程序概述2. 客户端的结构对于最终用户来说,多层体系结构中的客户程序与两层 体系结构中的应用程序没有什么区别,在结构上,客户程序 仍然通过标准的数据控件与用户交互。但与单机模式应用程 序不同的是,多层体系结构中的客户程序是通过应用服务器 提供的IAppSe

6、rver接口获得数据的,也通过IAppServer接口 申请更新数据。在客户程序中,MIDAS连接组件TDispatchConnection 扮演着极其重要的角色。不同的MIDAS连接组件使用不同的 通讯协议将客户端连接到一个远程应用服务器,以获取一个 IAppServer接口服务,然后获取数据集提供者列表。 通常使用TDispatchConnection派生的组件:(1) TDCOMConnection组件使用DCOM将客户端连接到 一个远程应用服务器。11.1 多层数据库应用程序概述(2) TSocketConnection组件使用Sockets (TCP/IP)将客户 端连接到一个远程应

7、用服务器。(3) TWebConnection组件使用HTTP将客户端连接到一个 远程应用服务器。(4) TSoapConnection组件使用SOAP将客户端连接到一 个远程应用服务器。TClientDataSet组件是客户端的数据集组件,用于连接应 用服务器中的TDatasetProvider,提供了客户端访问应用服务 器商的IAppServer接口。11.2 开发多层数据库应用的组件11.2.1 TRemoteDataModule组件TRemoteDataModule封装了多层数据库应用程序的对 象和接口,它是由TDataModule类派生而来的。使用 TRemoteDataModule

8、向导建立DCOM应用服务器,会自动 地添加TRemoteDataModule对象。在数据模块单元中会自 动建立UpdateRegistry方法,用于注册该应用服务器。 1. TRemoteDataModule的基本属性(1) Providers属性表示远程数据模块中包含的已注册的Provider的集合。(2) ProviderCount属性表示远程数据模块中包含的已注册的Provider的数量。(3) OldCreateOrder属性指定何时发OnCreate事件和OnDestroy事件。 11.2 开发多层数据库应用的组件2. TRemoteDataModule的基本方法(1) Lock方法

9、锁定数据模块,防止线程冲突。(2) RegisterProvider方法用于在程序运行时调用底层的IAppServer接口获取一个 可用的provider。(3) UnLock方法解除对数据模块的锁定。(4) UnRegisterProvider方法从AS_GetProviderName方法返回的列表中删除一个 Provider。 11.2 开发多层数据库应用的组件9.2.2 TDataSetProvider组件客户端的数据集是通过Provider(提供者)组件获取数 据的。Provider接收来自客户端数据集的数据请求,然后索 取所请求的数据,封装成可传输的数据包,并把数据传到客 户端数据集

10、。Provider接收来自客户端的数据更新,然后应 用更新内容到数据库服务器、来源数据集,返回未能实施的 更新到客户端数据集,作进一步调整。 1. TDataSetProvider的属性11.2 开发多层数据库应用的组件属 性说 明Constraints是否传递数据库的约束给客户端,使得客户端能 够在本地进行约束性检查,减少提交数据更新时 产生的错误。缺省值为True。 DataSet指定连接的数据集。Params集合属性,存储当前使用的参数列表。ResolveToD ataSet指定数据更新是否直接提交给数据库服务器。缺省 值为False。 OptionsOptions属性是一个集合,用于控

11、制数据包的组成 。选项见 表 Resolver获取自动建立的TCustomResolver组件,用于提交 数据更新和调试更新错误。 UpdateMode确定数据更新时如何定位一个记录。Data读取该属性时组件会自动调用GetRecord方法,获 取所有的数据。 Exported允许客户端通过IAppServer接口调用该组件。通 常应该设为 True。表11-1 TDataSetProvider的属性及说明 11.2 开发多层数据库应用的组件2. TDataSetProvider提交数据更新的方式TDataSetProvider组件提供了两种方式来提交客户端的 数据更新,向数据集提交数据更新和

12、向数据库提交数据更新 。(1) 向数据集提交数据更新设置ResolveToDataSet属性为True。 (2) 向数据库提交数据更新设置ResolveToDataSet属性为False,表明 TDataSetProvider使用的更新组件为内部的TSQLResolver, 它可直接提交客户的数据更新到数据集连接的数据库中,这 样就绕开了使用的数据集。 11.2.3 TDCOMConnection组件该组件使用DCOM建立客户端和应用服务器的连接,适 用于建立企业内部网络(Intranet)。 11.2 开发多层数据库应用的组件该组件的ComputerName属性用于设置服务器主机名称 或者I

13、P。该属性为空,表示服务器主机就为本地机器。 11.2.4 TSocketConnection组件要使用TCP/IP 方式来连接应用服务器,就需用到 TSocketConnection组件。TSocketConnection用Address属性或Host属性来定位 应用服务器所在的计算机,前者用于指定IP地址,后者用于 指定主机名,这两个属性是互斥的,只需要设置其中一个。 此外,还要设置Port属性指定端口号,必须与应用服务器上 运行的Scktsrver.exe或Scktsrvc.exe所使用的端口号一致, 默认值是211。11.2 开发多层数据库应用的组件11.2.5 TClientData

14、Set组件TClientDataSet组件用于获取远程数据模块的数据并建 立本地的副本,提供了浏览和编辑数据的方法和属性,另外 还提供了向数据库提交和调用数据的功能。该组件与 TADOTable、TADODataSet等数据集组件一样,都是由 TDataSet组件继承来的,因此具有许多数据集组件的公共 属性、方法、事件;而最大的不同就是它是利用底层的 IAppServer接口获取数据的。 在Delphi7中,TClientDataSet有三种途径获取数据: (1) 从文件中获取数据。 (2) 从本地的另一个数据集中获取数据。 (3) 通过IProvider接口从远程数据库服务器获取数据。11.

15、2 开发多层数据库应用的组件1. TClientDataSet的属性2. TClientDataSet的主要方法3. TClientDataSet的主要事件 4. 提取数据客户端通过TDispatchConnection组件与服务器建立了 联系后,需要用TClientDataset组件连接到服务器中的 provider上(从而连接到源数据集上)。首先,需要指定 TClientDataset组件的RemoteServer属性为所连接的 TDispatchConnection组件,使两者联系起来。完成之后, TClientDataset组件的列表框中就可以列出服务器的 Provider列表,从中选

16、择provider。最后,设置Active属性 为True以打开TClientDataset从服务器上提取数据。 11.3 多层数据库应用程序开发主要想解决这样几个问题:如何建立一个简单的分布式 系统,如何使用SQL,如何传递附加信息和向客户提供服务 器方法,如何建立主从表结构。11.3.1 基于DCOM的客户/服务器程序开发 【例11-1】编写一个服务器端程序。服务器端程序实际上是个COM 项目,它本身连接数据 源,再通过接口与客户端联系,这个COM 项目必须注册在 服务器上。连接的数据库是位于服务器My-Server上的数据库 dbdemos。这个数据库是由Delphi自带的dbdemos.mdb导入 到MS SQL服务器上的。 11.2 开发多层数据库应用的组件【例9-2】编写一个客户端程序。在两层模式中,客户端(Client)程序是直接和服务器的数 据源相连的。而多层模式,多个客户端连接的是一个应用程 序服务器,应用程序服务器再连接到数据库服务器,因为收 费是按客户数计算的,所以,数据库的使用费用比较低。 【例9-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号