CoClass(即COM接口类),实例化模式和线程模型

然后将显示Remote Data Module向导(见图15.2)。该向导过程中,您需要输入CoClass(即COM接口类)的名字、实例化模式和线程模型。
COCLASS名  当在Remote Data Module向导中输入CoClass名字时,实际是在定义自动化接口的类名。该值将成为远程数据模块的name特性,加上前缀T后,就是数据模块的类名。新的远程数据模块继承了TRemoteDataModule类并实现了CoClass接口。例如,如果在向导过程的CoClass域键入server,那么远程数据模块的类名就是TServer,而CoClass名字则是CoServer,接口是IServer。使用给出的例子,数据模块中的类定义如下:
TServer = class(TRemoteDataModule, IServer)
该模块的var语句如下:
var
Server : TServer;
继续上面的例子,将创建包含Microsoft IDL(Interface Definition Language,接口定义语言)的类型库server.tlb,以及包含接口定义的Object Pascal语法的Pascal文件server_TLB.pas。
自动化服务器要支持的任何特性和方法都必须使用Type Library编辑器来定义(见图15.3)。如果使用类型库编辑器,则Delphi将负责维护类型库的Pascal代码和Microsoft IDL文件。稍后我们将继续讨论Type Library编辑器。
 
图15.3  用于定义接口和管理Microsoft IDL的Type Library编辑器
实例化模型  实例化模型表示如何启动应用程序。有三种实例化模型,分别是Internal Instance、Single Instance和Multiple Instance。对于进程内自动化服务器,可使用Internal Instance模型,即DLL服务器。如果每个客户程序都运行服务器程序的一个实例,则使用Single Instance模型。如果客户程序共享服务器程序,则使用Multiple Instance模型;但每个客户程序都有自己的服务器实例--即Remote Data Module,这些实例在同一进程空间中运行。
线程模型  可用的线程模型包括Single、Apartment、Free、Both和Neutral。Single线程模型的服务器将序列化对COM对象的调用。而远程数据模块每次只处理一个请求,从而避免了多线程的问题。Apartment线程模型对远程数据模块的单一实例,每次只允许发出一个请求;但可以有多个远程数据模块的实例存在,每个实例分别处理不同的请求。Apartment模型同样需要保护全局数据,以避免线程冲突。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值