Delphi-多层分布式应用的开发.ppt

上传人:xin****828 文档编号:7158905 上传时间:2020-03-14 格式:PPT 页数:29 大小:671KB
返回 下载 相关 举报
Delphi-多层分布式应用的开发.ppt_第1页
第1页 / 共29页
Delphi-多层分布式应用的开发.ppt_第2页
第2页 / 共29页
Delphi-多层分布式应用的开发.ppt_第3页
第3页 / 共29页
点击查看更多>>
资源描述
第11章多层分布式应用的开发 本章主要内容 多层分布式系统的概念开发多层应用程序的有关组件如何开发多层分布式数据库应用程序 11 1多层数据库应用程序概述 11 1 1数据库应用的体系结构研究一下数据库应用的结构 可以发现它是由数据层 应用逻辑层 用户接口层构成的 数据层用于存取我们的数据 应用逻辑层用于规定用户如何使用数据 而用户接口层提供了用户访问数据的操作界面 而层间通过接口相连 这里只是在逻辑上将一个数据库应用分为三个层次 实际开发数据应用系统时 可以在一个程序内实现所有三层功能 这就是单层数据库应用 前面所介绍的ACCESS数据库应用程序就是这种类型 也可以将这三层分开 由不同的程序实现 并且还可以分别放在不同的机器上运行 这样就形成了双层 三层 甚至多层的数据库应用体系结构 11 1多层数据库应用程序概述 1 单层结构在单层数据库应用程序中 其体系结构如图11 1所示 单层结构是一种早期的最简单的数据库系统 整个数据库应用系统安装在一台微机上 由一个用户独占 不同机器之间不能共享数据 图11 1单层结构的数据库应用系统 11 1多层数据库应用程序概述 2 双层结构图11 2所示的是客户 服务器 Client Server 体系结构 这是最典型的双层结构 图11 2客户 服务器体系结构 11 1多层数据库应用程序概述 3 三层结构与多层结构三层结构如图11 3所示 在三层结构中 多了一个中间层 它把客户端和数据库服务器隔离开来 这样客户端对数据的所有操作都需要经过中间层的应用服务器 由应用服务器连接数据库服务器 应用服务器根据设定的应用逻辑对数据进行相应的处理 最后提交给后端数据库服务器 图11 3三层体系结构 11 1多层数据库应用程序概述 图11 4是一个基于B W体系结构的多层数据库应用系统 图11 4基于B W体系结构的多层数据库应用系统 11 1多层数据库应用程序概述 11 1 2Delphi的多层数据库应用体系结构 Delphi提出的MIDAS是把原来双层的数据连接访问放到了应用服务器上 客户端只剩下了执行文件和MIDAS DLL 前台和后台服务器通过DCOM机制互相沟通 其结构如图11 5所示 图11 5MIDAS应用程序的结构 11 1多层数据库应用程序概述 1 应用服务器的结构应用服务器的关键部件是TRemoteDataModule 远程数据模块 它提供了IAppServer接口 当客户程序与应用服务器建立了连接 就通过IAppServer接口来获得数据集提供者列表 listofproviders TRemoteDataModule组件是一个支持双重接口的自动化服务器 这种类型的远程数据模块适合于DCOM HTTP Sockets通讯方式 远程数据模块可以作为容器 但只能放置非可视化的组件 另外 远程数据模块上一般要放一个或几个TDataSetProvider或TProvider构件来提供IProvider接口 TDataSetProvider组件存在于应用服务器端的远程数据模块中 用于连接数据模块中的数据集 并向客户端发送数据 11 1多层数据库应用程序概述 2 客户端的结构对于最终用户来说 多层体系结构中的客户程序与两层体系结构中的应用程序没有什么区别 在结构上 客户程序仍然通过标准的数据控件与用户交互 但与单机模式应用程序不同的是 多层体系结构中的客户程序是通过应用服务器提供的IAppServer接口获得数据的 也通过IAppServer接口申请更新数据 在客户程序中 MIDAS连接组件TDispatchConnection扮演着极其重要的角色 不同的MIDAS连接组件使用不同的通讯协议将客户端连接到一个远程应用服务器 以获取一个IAppServer接口服务 然后获取数据集提供者列表 通常使用TDispatchConnection派生的组件 1 TDCOMConnection组件使用DCOM将客户端连接到一个远程应用服务器 11 1多层数据库应用程序概述 2 TSocketConnection组件使用Sockets TCP IP 将客户端连接到一个远程应用服务器 3 TWebConnection组件使用HTTP将客户端连接到一个远程应用服务器 4 TSoapConnection组件使用SOAP将客户端连接到一个远程应用服务器 TClientDataSet组件是客户端的数据集组件 用于连接应用服务器中的TDatasetProvider 提供了客户端访问应用服务器商的IAppServer接口 11 2开发多层数据库应用的组件 11 2 1TRemoteDataModule组件TRemoteDataModule封装了多层数据库应用程序的对象和接口 它是由TDataModule类派生而来的 使用TRemoteDataModule向导建立DCOM应用服务器 会自动地添加TRemoteDataModule对象 在数据模块单元中会自动建立UpdateRegistry方法 用于注册该应用服务器 1 TRemoteDataModule的基本属性 1 Providers属性表示远程数据模块中包含的已注册的Provider的集合 2 ProviderCount属性表示远程数据模块中包含的已注册的Provider的数量 3 OldCreateOrder属性指定何时发OnCreate事件和OnDestroy事件 11 2开发多层数据库应用的组件 2 TRemoteDataModule的基本方法 1 Lock方法锁定数据模块 防止线程冲突 2 RegisterProvider方法用于在程序运行时调用底层的IAppServer接口获取一个可用的provider 3 UnLock方法解除对数据模块的锁定 4 UnRegisterProvider方法从AS GetProviderName方法返回的列表中删除一个Provider 11 2开发多层数据库应用的组件 9 2 2TDataSetProvider组件客户端的数据集是通过Provider 提供者 组件获取数据的 Provider接收来自客户端数据集的数据请求 然后索取所请求的数据 封装成可传输的数据包 并把数据传到客户端数据集 Provider接收来自客户端的数据更新 然后应用更新内容到数据库服务器 来源数据集 返回未能实施的更新到客户端数据集 作进一步调整 1 TDataSetProvider的属性 11 2开发多层数据库应用的组件 表11 1TDataSetProvider的属性及说明 11 2开发多层数据库应用的组件 2 TDataSetProvider提交数据更新的方式TDataSetProvider组件提供了两种方式来提交客户端的数据更新 向数据集提交数据更新和向数据库提交数据更新 1 向数据集提交数据更新设置ResolveToDataSet属性为True 2 向数据库提交数据更新设置ResolveToDataSet属性为False 表明TDataSetProvider使用的更新组件为内部的TSQLResolver 它可直接提交客户的数据更新到数据集连接的数据库中 这样就绕开了使用的数据集 11 2 3TDCOMConnection组件该组件使用DCOM建立客户端和应用服务器的连接 适用于建立企业内部网络 Intranet 11 2开发多层数据库应用的组件 该组件的ComputerName属性用于设置服务器主机名称或者IP 该属性为空 表示服务器主机就为本地机器 11 2 4TSocketConnection组件要使用TCP IP方式来连接应用服务器 就需用到TSocketConnection组件 TSocketConnection用Address属性或Host属性来定位应用服务器所在的计算机 前者用于指定IP地址 后者用于指定主机名 这两个属性是互斥的 只需要设置其中一个 此外 还要设置Port属性指定端口号 必须与应用服务器上运行的Scktsrver exe或Scktsrvc exe所使用的端口号一致 默认值是211 11 2开发多层数据库应用的组件 11 2 5TClientDataSet组件TClientDataSet组件用于获取远程数据模块的数据并建立本地的副本 提供了浏览和编辑数据的方法和属性 另外还提供了向数据库提交和调用数据的功能 该组件与TADOTable TADODataSet等数据集组件一样 都是由TDataSet组件继承来的 因此具有许多数据集组件的公共属性 方法 事件 而最大的不同就是它是利用底层的IAppServer接口获取数据的 在Delphi7中 TClientDataSet有三种途径获取数据 1 从文件中获取数据 2 从本地的另一个数据集中获取数据 3 通过IProvider接口从远程数据库服务器获取数据 11 2开发多层数据库应用的组件 1 TClientDataSet的属性2 TClientDataSet的主要方法3 TClientDataSet的主要事件4 提取数据客户端通过TDispatchConnection组件与服务器建立了联系后 需要用TClientDataset组件连接到服务器中的provider上 从而连接到源数据集上 首先 需要指定TClientDataset组件的RemoteServer属性为所连接的TDispatchConnection组件 使两者联系起来 完成之后 TClientDataset组件的列表框中就可以列出服务器的Provider列表 从中选择provider 最后 设置Active属性为True以打开TClientDataset从服务器上提取数据 11 3多层数据库应用程序开发 主要想解决这样几个问题 如何建立一个简单的分布式系统 如何使用SQL 如何传递附加信息和向客户提供服务器方法 如何建立主从表结构 11 3 1基于DCOM的客户 服务器程序开发 例11 1 编写一个服务器端程序 服务器端程序实际上是个COM项目 它本身连接数据源 再通过接口与客户端联系 这个COM项目必须注册在服务器上 连接的数据库是位于服务器My Server上的数据库dbdemos 这个数据库是由Delphi自带的dbdemos mdb导入到MSSQL服务器上的 11 2开发多层数据库应用的组件 例9 2 编写一个客户端程序 在两层模式中 客户端 Client 程序是直接和服务器的数据源相连的 而多层模式 多个客户端连接的是一个应用程序服务器 应用程序服务器再连接到数据库服务器 因为收费是按客户数计算的 所以 数据库的使用费用比较低 例9 3 在 例9 1 中的服务器端程序中加入进行客户计数的功能 由于这个应用程序执行模式是MultipleInstance执行模式 所以当某个前台第一次连上线后 应用程序服务器会触发RemoteDataModule的OnCreate事件程序 而断线后又会执行OnDestroy事件的处理程序 因此就可以用这两个事件计算连上服务器的用户个数 至于查询个数的计算 则由TADODataSet的OnAfterOpen事件函数判断 11 2开发多层数据库应用的组件 例9 4 在 例9 3 中的服务器端程序中为服务器接口添加属性和方法 TRemoteDataModule提供的属性和方法是有限的 要增强应用服务器的服务可考虑为IDcomServer添加属性和方法 而客户端应用程序则可以通过IAppServer接口来调用服务器的属性和方法 例9 5 通过TClientdataSet发送SQL命令 前面在服务端执行由客户端输入SQL查询命令是通过添加新接口实现的 其实还有更简单的实现方法 通过设置TClientDataSet的CommandText属性 并在服务器端设置DataSetProvider1的Options属性为poAllowCommandText 11 2开发多层数据库应用的组件 Params属性用于向Provider提供查询参数值 可以在设计或是在运行期间设置 调用Execute或Open方法时一起传递给provider 如果运行带有参数的查询或是调用存储过程 在调用Execute时 Params属性会一起传递给provider 另外 若调用的是存储过程 执行后会返回输出参数 11 2开发多层数据库应用的组件 11 3 2基于Socket的客户 服务器程序开发1 TCP IP协议和Socket 插座 在客户端 用一个新的控件TSocketConnection代替原来的TDCOMConnection 其余的连接不变 这就大大简化了客户端的设计 但是 TSocketConnection使用的是TCP IP协议进行通讯 因此 客户端总是连接到应用服务器的某个特定的端口 ServerPort 在服务器端需要另外配置和运行一个程序scktsrvr exe 可以在 Bin目录下找到这个程序 该服务程序用于监听服务端口 应用服务器使用该端口提供服务 1 选择服务端口 2 启动Scktsrvr exe程序在服务器端 找到Delphi的目录 找到 ProgramFiles Borland Delphi6 Bin Scktsrvr exe 11 2开发多层数据库应用的组件 双击运行 就可以在Windows任务栏看到一个TCP IP的Service启动的图标 下图圆圈中的图标就是 图11 21任务栏上显示的Scktsrvr exe图标 在图标上单击右键 选Properties 就出现一个对话框 11 2开发多层数据库应用的组件 图11 22BorlandSocketServer设置界面 11 2开发多层数据库应用的组件 把SockedServer变成WindowsServer的方法 在DOS命令提示符下 进入C ProgramFiles Borland Delphi7 Bin目录 然后执行Scktsrvr inatall命令 安装成功后可以看到一个安装成功的信息显示 如图所示 图11 23从命令行安装Scktsrvr exe 11 2开发多层数据库应用的组件 这时打开 控制面板 的 管理工具 启动 服务 工具程序 图11 24Windows服务管理器 11 2开发多层数据库应用的组件 3 客户端程序设计 本章实训指导 1 掌握创建多层应用程序的机制 2 了解多层应用程序的组件 3 掌握服务器程序的编写 4 掌握客户程序的编写 5 上机模仿本章实例 并理解程序设计思想
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!