快速业务通道

COM原理及应用----分布式COM(DCOM)

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-05-23
代理进程的安全性。

Windows引进了缺省的代理进程,以及编写自定义代理进程的协议规范。缺省实现的代理进程是一个混合线程模型、伪COM服务程序。当多个DLL组件被装入到单个代理进程时,该进程按照注册表中指定的线程模型对每个DLL组件对象进行实例化。如果一个DLL组件对象支持两种线程模型,则COM选择自由线程模型。COM即可以控制DLL组件程序的卸载,也可以终止代理进程。

如果一个进程内组件满足下列条件,则它将被装入代理进程:

l 系统注册表中,在组件对象的CLSID关键字下必须要指定AppID值,以及对应的AppID关键字;

l 客户程序在创建对象实例时,必须设置CLSTX_LOCAl _SERVER标志;

l 组件对象的CLSID关键字下不指定LocalServer32、LocalServer、LocalService值;

l 组件对象的CLSID关键字包含InProvServer32子键;

l 在InProcServer32子键中指定的DLL文件必须存在;

l 组件对象对应的AppID键下指定DllSurrogate值。

如果组件对象的CLSID键下的LocalServer、LocalServer32或LocalService值指示了EXE的存在,则EXE程序将被优先执行,COM不再启动代理程序。

9、利用名字对象(moniker)连接到远程对象实例

通常COM对象实例是不可相互替代到,或者说不可相互交换的。它通过自己特有的状态区别于同一类的其他对象实例。

在第8章中介绍的COM命名和绑定机制对于远程对象同样适用。

10、连接管理——远程对象生存期的控制

COM控制对象的生存期最基本的机制是引用计数,利用IUnknown的AddRef和Release成员函数控制对象的生存期。DCOM优化了远程对象的AddRef和Release的调用。优化过程使用了OXID(object exporter identifier ,对象管理标识符)对象。OXID是一个64位值,通过OXID可以把RPC串绑定调用到它们的目标IPID。但是,在执行调用之前,调用进程必须把 OXID转译成为底层RPC可以解释的一组绑定。

在每台支持DCOM的机器上,都有一个被称为OXID解析器(OXID Resolver)的服务,它负责向客户提供用于连接到OXID的RPC串绑定信息,也负责接收远程发来的“pinging”信息。OXID解析器之间通过RPC进行通信,它实现了RPC接口IOXIDResolver(不是COM接口)。

11、连接管理——pinging机制

如果不考虑客户进程可能会非正常终止,则利用远程引用计数控制对象生存期已经足够了。为了检测客户程序是否非正常终止,DCOM提供了一种简单的方法 “pinging”。在现在实现的DCOM版本中,pingPeriod=2(分)且numPingsToTimeOut=3,这些值不能被改变。

12、连接管理——连接点管理

许多实际的分布式应用都需要在两个对象之间进行双向通信。由于DCOM是对COM的无缝扩展,在第6章中介绍的COM提供的连接点机制同样适用于远程对象的情形。

13、连接管理——连接传递

用分派服务组件对象来实现分布式应用的负载平衡特性实际上用到了连接传递特性。

连接传递不等于远程对象创建的传递,DCOM不支持位置透明方式下对象创建的传递过程,但可以利用连接传递特性,通过程序控制服务器名字的方式实现远程对象创建的传递。

14、并发管理——线程模型

COM本身并没有线程模型,可以认为COM借用了Windows操作系统提供的线程模型,Win32程序设计模型把线程分成UI线程和辅助线程,相对应地,COM把线程分成套间线程和自由线程。套间线程使用CoInitialize API函数执行COM库的初始化,COM在套间线程内部创建了一个隐藏的窗口,此窗口的窗口过程函数负责把客户对套间中的组件对象的调用发送到正确的成员函数中。

15、并发管理——消息过滤器

COM和DCOM的线程模型使我们了解到了客户程序与组件对象调用过程中的线程切换,但调用可能会阻塞程序,甚至使得客户程序无法正常进行。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号