COM接口编程
COM标准包括规范和实现两大部分。规范部分定义了组件和组件之间通信的机制,这些规范不依赖于任何于任何特定的语言和操作系统;COM标准的实现部分是COM库,COM库为COM规范的具体实现提供了一些核心服务。COM的主要特性如下。
(1)COM采用客户/服务器模型。调用COM对象者称为客户,被调用者称为服务器;有的COM对象在自己被调用的同时,也会调用其他的COM对象,因而兼有客户和服务器的双重身份。
(2)语言无关性。COM规范不依赖于任何特定的语言。因此COM客户程序和COM服务器可以用完全不同的语言开发。这样使利用C++,Visual Basic,以及Excel中作为宏使用的应用程序的VBA等不同语言所开发的程序可以相互连接。之所以具有这样的特性,主要是因为对象与客户程序之间的交互采用的是二进制代码级的标准。
(3)进程透明性。COM对象在实现时可以有两种进程模型:进程内对象和进程外对象。如果是进程内对象,则其运行在客户进程空间内;如果是进程外对象,则其运行在同一机器上的另一个进程空间内或者在进程机器的进程空间内。进程模型的区别对于客户来说是透明的。一般来说,进程内模型的效率高,但是,如果组件不稳定会危及客户进程;相反,进程外模型稳定性好,但效率低。
(4)应用程序级可重用性。由于COM标准是建立在二进制代码级之上的,对COM对象的调用仅仅是通过接口来实现,因此,COM标准实现了对象在应用程序级而非源代码级的可重用性。
(5)不同版本兼容性好。与过去DLL的版本管理非常困难的问题相比,COM技术可以提供不同版本的COM服务器和COM客户程序之间的最大的兼容性。