COM原理及应用----分布式COM(DCOM)
nterface point identifier)、版本信息和扩展信息――作为调用和返回的附加参数进行传送,其中IPID表示调用被处理的远程机器上特定对象的特定接口。 DCOM客户程序必须周期性地“pinging”远程机器上的对象,以便保证客户与对象一直处于连接状态。
6、DCOM特性 DCOM可以作为分布式应用系统的基本架构,客户程序与DCOM组件对象之间形成了客户/服务器关系,进一步可构成多层软件模型。DCOM组件具有COM 组件的一些基本特性,包括重用性、语言无关性等。而位置透明性 是DCOM的一个基本特性。DCOM的其他特性如下: (1)可伸缩性。一方面,DCOM利用操作系统本身的可伸缩性;另一方面,DCOM提供了灵活的配置方案,允许不同的组件对象允许在不同的服务器上,DCOM的位置透明性保证了这种变化可以不必修改组件源程序。 (2)可配置性。安装和管理是分布式软件系统的两个重要环节。DCOM提供了一个图形界面的配置工具程序(DCOMCNFG.EXE),可使客户程序和组件程序在不改变代码的情况下适应不同的网络环境。 (3)安全性。DCOM使用了Windows NT提供的可扩展安全性框架,在非NT平台上实现的DCOM也包括了一个与NT兼容的安全提供器。DCOM实现的安全性分为访问安全性和激活安全性,访问安全性指定那些用户可以调用组件对象,激发安全性指定哪些用户可以在一个新进程中创建新的对象。 (4)协议无关性。 (5)平台独立性 7、对象激活 激活(activation)一个组件对象包括两种情形:一是创建新的组件对象,二是建立已有组件对象与客户之间的连接。 COM扩展到DCOM之后,远程对象的创建过程有所不同。为了标识一个远程对象,仅仅提供一个128位的GUID还不够,还必须提供远程对象所在的机器名,也称为远程服务器名“RemoteServerName”。 (1)创建DCOM组件方法一 通过DCOM配置工具指定远程服务器名,这种方式使得DCOM组件具有位置透明性。在Windows系统平台上,远程服务器名字RemoteServerName值被保存在系统注册表HKEY_CLASSES_ROOTAPPID键下。 从CLSID和AppID键的结构可以看出,每个AppID可用于多个组件对象,通常它代表了由多个CLSID共享的进程,该进程中的所有对象共享同样的配置信息,包括远程服务器名以及安全信息。在DCOM中引入AppID概念可以避免太多的注册表关键字。 (2)创建DCOM组件方法二 用第一种方法并不是总能满足应用的要求,有些应用要求在程序运行过程中控制要连接的服务器,比如多人游戏程序、网络远程管理工具等。对于这样的应用,DCOM允许在创建函数中指定远程服务器名字。可以指定远程服务器名字的创建函数:CoCreateInstanceEx、 CoGetClassObject、CoGetInstanceFromFile、CoGetInstanceFromeIStorage。 在程序中指定服务器名字的另外一个功能是实现分布式应用系统的动态负载平衡。目前DCOM还很难以实现自动负载平衡特性,但我们可以建立一个分派服务组件对象,所有的客户都创建指定机器上的分派服务组件对象,由它创建另一个真正实现应用功能的远程对象,在把此远程对象返回给客户程序,以后客户程序不再使用分派服务组件对象,而直接调用远程对象。而分派服务组件对象可以根据当前的负载状态,从一组服务器中选择负载最轻的服务器作为目标,创建远程对象。 8、远程创建进程内组件:代理进程(surrogate) 为了远程运行进程内组件即DLL组件,要求在远程机器上有代理进程(surrogate process)。除了可以远程启动进程内组件之外,代理进程还提供了下面的特性: l 进程内组件程序中的严重错误只影响代理进程,不会使客户进程崩溃; l 一个代理进程可以同时为多个客户提供服务; l 客户可以保护自己避免靠不住的组件程序代码,只访问组件程序提供的服务; l 在代理进程中运行进程内服务可使DLL享有 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |