COM原理笔记之一 —— 概述篇
COM(组件对象模型,Compent Object Model)是Microsoft提出来的组件标准,它不仅定义了组件程序之间进行交互的标准,并且也提供了组件程序进行所需要的环境。
一、两种进程模型:
进程内组件:以动态链接库的形式出现(.dll);
进程外组件:以可执行程序的形式出现(.exe);
进程内模型的优点是效率高,但组件不稳定会引起客户进程崩溃,因此组件可能会危及客户。
进程外模型的优点是稳定性好,组件进程不会危及客户程序,但效率相对较低。
二、组件软件与软件组织:
组件软件:是指按组件模型组合而得到的软件。
软件组织:是指构成组件软件的每个组件。
三、对象与接口:
对象是某个类(Class)的一个实例,而类则是一组相关的数据和功能组合在一起的定义。每个对象用一个128位GUID来标识,称为CLSID(class indentifer)类标识符或类ID。
接口是一组逻辑上相关的函数集合,其函数也称为接口成员函数。每个接口用128位的全局唯一标识符(Globally Unique Identifier)来标识接口。
四、COM特性
1、语言无关性:
COM规范的定义不依赖于特定的语言,它所采用的是一种二进制代码级标准,而不是源代码级标准。
2、进程透明性:
COM库负责组件程序的定位,管理组件对象的创建和对象与客户之间通信,对用户来讲这是透明的。
3、可重用性:两种机制实现对象的重用
包容方式:对象1包含对象2,当对象1需要用到对象2的功能时,它可以简单地把实现交给对象2来完成。虽然对象1和对象2支持同样的接口,但对象1在实现接口时实现调用了对象2的实现。
聚合方式:对象1只需要简单地把对象2的接口递交给客户即可,对象1并没有实现对象2的接口,但它把对象2的接口也暴露给客户程序,而客户程序并不知道内部对象2的存在。