首页 理论教育 实例:VisualC++高级编程技术中的分布式COM

实例:VisualC++高级编程技术中的分布式COM

时间:2023-11-16 理论教育 版权反馈
【摘要】:DCOM作为COM的扩展,不仅继承了这些优点,而且针对分布式的计算环境,还提供了一些新的特性,如位置透明性、网络安全性、跨平台调用等等。DCOM实际上是对客户远程调用进程外组件服务的一种改进,通过RPC协议,使客户通过网络可以以透明的方式调用远程计算机上的服务。在DCOM规范中,主要使用了编排和反编排过程。图10-1分布式的客户与DCOM组件的通讯过程

实例:VisualC++高级编程技术中的分布式COM

COM作为组件软件的基本结构模型,由它建立的软件具有很多优点,如语言无关性、可重用性、可扩展性等。DCOM(Distributed COM)作为COM的扩展,不仅继承了这些优点,而且针对分布式的计算环境,还提供了一些新的特性,如位置透明性、网络安全性、跨平台调用等等。

DCOM实际上是对客户远程调用进程外组件服务的一种改进,通过RPC协议,使客户通过网络可以以透明的方式调用远程计算机上的服务。在调用的过程中,客户并不是直接调用远程计算机上的服务,而是首先在本地机器上建立一个远程服务代理(Proxy),通过RPC协议,调用远程机器上的存根(Stub),由存根来解析客户的调用以映射到远程服务的方法或属性上。和进程外组件服务一样,为了适应网络的需要,必须对数据进行打包。在DCOM规范中,主要使用了编排(Marshaling)和反编排(Unmarshaling)过程。编排是指当客户程序调用组件对象的成员函数(方法)时,它实际上调用本进程内代理对象的对应成员函数,由代理对象负责把客户传过来的参数打包,并写到一块内存缓冲区(协议栈),以便它们可以在网络上按数据包的方式传输。反编排是编排的逆过程,当远程机器上的存根对象接收到这些数据包之后,解包恢复参数后再传递给组件服务对象的成员函数。同样,当调用返回时,任何返回值和输出参数也要由存根对象进行编排处理,通过网络协议传输到客户机器上,再由代理对象把结果反编排送给客户程序,最终完成远程组件的调用。

图10-1是客户与DCOM组件进行通讯的示意图。对于位于不同计算机上的客户和DCOM组件,它们之间通讯的复杂过程由代理和存根对象来完成,客户代码和组件对象都感觉不到中间发生的过程,只是中间数据传递的线路加长了。通过DCOM的这种通讯机制,Microsoft实现了COM的分布式扩展——把组件的进程透明性扩展为位置透明性。(www.xing528.com)

图10-1 分布式的客户与DCOM组件的通讯过程

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈