3echo

心有多大,世界便有多大!
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

COM原理笔记之一 —— 概述篇

Posted on 2006-06-01 12:49  3echo  阅读(2758)  评论(0编辑  收藏  举报

COM原理笔记之一 —— 概述篇

COM(组件对象模型,Compent Object Model)是Microsoft提出来的组件标准,它不仅定义了组件程序之间进行交互的标准,并且也提供了组件程序进行所需要的环境。

一、两种进程模型:

进程内组件:以动态链接库的形式出现(.dll);

进程外组件:以可执行程序的形式出现(.exe);

进程内模型的优点是效率高,但组件不稳定会引起客户进程崩溃,因此组件可能会危及客户。

进程外模型的优点是稳定性好,组件进程不会危及客户程序,但效率相对较低。

二、组件软件与软件组织:

组件软件:是指按组件模型组合而得到的软件。

软件组织:是指构成组件软件的每个组件。

三、对象与接口:

对象是某个类(Class)的一个实例,而类则是一组相关的数据和功能组合在一起的定义。每个对象用一个128GUID来标识,称为CLSIDclass 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的存在。