组件技术在Delphi中的实现(1)

2016-01-29 14:14 3 1 收藏

组件技术在Delphi中的实现(1),组件技术在Delphi中的实现(1)

【 tulaoshi.com - Delphi 】

 

  
  组件技术是新一代软件技术发展的标志,作为著名的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]

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/delphi/)

  
  ■创建客户程序
  下面我们将开始设计客户端程序。创建客户程序的一般步骤是:
  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

来源:https://www.tulaoshi.com/n/20160129/1492830.html

延伸阅读
本文对“组件”这个术语进行定义并提供特别是与组件编程相关的 .NET 框架编程概念的概述。虽然“组件”这个术语有多种含义,但在 .NET 框架中,组件是指实现 System.ComponentModel.IComponent 接口的一个类,或从实现该接口的类中直接或间接导出的类。 如果想要您的组件或控件在其他编程语言中可以使用,您必须以符合公共语言规范 (CLS) 的语...
标签: Web开发
  未来的Web将是以服务为中心的Web,XML_RPC标准使得编写和应用服务变得非常简单。本文介绍XML_RPC标准及其PHP实现,并通过实例示范了如何在PHP中开发XML_RPC服务和客户程序。 一、服务式Web 从内容提供商所采用的简单方法到UDDI(Universal Description,Discovery and Integration)的未来构想,业界已经有大量关于“服务式Web”的...
BCB中提供了大量的VCL组件,有时难免要在程序中动态创建组件,VCL是用Object Pascal写的,她与C++语言还是存在着一些不同点的,要掌握正确的方法,不防我们先来看一下栈(stack)与堆(heap)的关系。 栈(stack)是存放函数的所有动态局部变量及函数调用和返回的有关信息的一块内存。栈的内存管理严格遵循先进后出的顺序,这一点正是实现函...
标签: Delphi
  Delphi作为一种面向对象的可视化开发工具,以其开发程序的高速度和编译代码的高效率越来越受到广大编程人员的喜爱。尽管Delphi已经提供了非常强大的开发组件(VCL),但灵活使用API函数一定可以使你的程序增色不少。 状态键的检查 当今不少流行软件的编辑窗口(包括Delphi的代码编辑窗口)的底部都有一个状态条...
delphi 开发的应用中,每一个窗体都有一个对应的窗体文件(.dfm),用来记录该窗体的属性以及窗体上所有控件的属性,以便在窗体关闭后能准确地重新生成窗体。几乎所有的DELPHI参考书都没有提到过该文件的具体情况,偶尔提到,也都泛泛而谈,因为窗体文件是二进制文件,只有在DELPHI提供的编辑环境中才能看到它的本来面目,对其进行操作可能...