首页 理论教育 VisualC++高级编程技术:进程内和外组件

VisualC++高级编程技术:进程内和外组件

时间:2023-11-16 理论教育 版权反馈
【摘要】:按照COM服务器和COM客户是否在同一进程空间分类,COM服务器可以分为进程内组件和进程外组件。如果组件程序和客户程序位于同一台机器上,这种组件称为本地组件,否则称为远程组件。本章主要介绍进程内组件,对于进程外组件,我们将在后面COM+一章进行讨论。

VisualC++高级编程技术:进程内和外组件

COM客户和COM服务器在建立通信连接之前是没有任何联系的,COM服务器对于客户来说是透明的,客户不知道服务器位于什么地方,甚至有无这样的服务器都不知道。实际上,客户也不关心这些事情,它只关心接口,换句话说,客户只需传递该对象的标志符CLSID,由COM库负责找到组件的位置并返回接口给客户,然后客户就可以使用接口指针获得对象提供的服务。

服务器对于客户透明,但是开发者需要根据应用程序的需要确定服务器的运行位置。按照COM服务器和COM客户是否在同一进程空间分类,COM服务器可以分为进程内组件和进程外组件。按照组件是否和客户位于同一台计算机,进程外组件又分为本地组件和远程组件。

进程内组件通常是动态链接库(DLL)的形式。DLL是在程序执行过程中动态装入到进程的内存空间中,当不再使用时,也可以把DLL卸出内存。因为组件和客户程序位于同一个进程的内存中,所以组件的接口函数的执行效率高,但有时严重的组件错误可能会引起整个客户进程的崩溃,因此,开发进程内组件时,一定要注意程序的稳定性。(www.xing528.com)

进程外组件运行独占一个进程,而不是使用客户程序的进程空间。如果组件程序和客户程序位于同一台机器上,这种组件称为本地组件,否则称为远程组件。本地组件一般是EXE程序,而远程组件可以是DLL,也可以是EXE。

既然进程外组件和客户位于不同的进程空间中,组件和客户间的通信就必须跨越进程边界。COM使用的是本地过程调用(LPC)和远程过程调用(RPC)的方法来实现进程之间的通讯。其中,LPC(Local Procedure Call)用于本地机器进程间的通讯,而RPC(Remote Procedure Call)用于不同机器上进程间的通讯。本章主要介绍进程内组件(DLL),对于进程外组件,我们将在后面COM+一章进行讨论。

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

我要反馈