重读《COM原理与应用》之二——概述(第一章)

起源与历史

*起源于应用程序之间的交互,OLE1先于COM出现,建立在DDE的基础上。(DDE(Dynamic data exchange)的工作原理是:甲方申请一块全局内存,然后把内存指针postmessage到乙方, 乙方根据收到的指针访问那块全局内存。) 随后出现COM,由于COM定义了组件之间交互的规范,使得模块定制扩充、升级等更为方便,因此,OLE2就弃DDE转而以COM为基础和标准。

 

COM结构

*所有COM对象必须实现IUnknown接口,每个COM接口都有一128位的GUID(在注册表可查,书后有详细说明),客户通过GUID获得接口指针,然后调用相应实现的服务。COM对象也有一128位的CLSID,客户通过CLSID创建对象,创建后获得某一接口(该对象实现)的接口指针,因此客户与COM对象也是通过接口通信,对象对于客户来说只是一组接口。

*包容和聚合:包容,外部组件将对接口的各个函数调用转发给内部接口(函数级);聚合,外部组件将内部组件的某些接口指针传递给用户直接使用(接口级)。

*COM库,负责COM对象的创建,通过注册表查找本地服务程序,提供标准的内存分配方法。有了COM库就可以直接利用其提供的API进行编程,现在的COM库版本还包括远程组件调用的支持。

 

COM的进程模型

*进程内(DLL),优势效率高,但组件不稳定会影响客户程序;

*进程外(EXE),调用效率偏低(需要代理和存根),但出错不会影响客户程序运行。

 

COM的历史应用

*16位windows 3.x对OLE支持,虽已按照动态链接库组织,但模块间通信未采用COM标准。32位的windows 95、98、NT等开始建立在COM的基础上,并进行大范围应用:DirectX、DAO、RDO、MAPI,COM已成为windows平台的组件模型 标准。

*OLEDB完全基于COM,而ADO则是在OLEDB上建立的自动化对象库(补充:自动化对象——实现了IDispatch接口的COM对象。使用自动化技术的一个主要目的就是对COM的一些底层操作进行简化。包括自动化组件和自动化 客户两方面的内容,分别用来定义和使用自动化对象。自动化对象包括属性和方法,其中,属性类惟于类的数据成员,方法类似于类成员函数,值得注意的是属性只 能被读取而不允许被写入。自动化组件除了定义自动化对象外,还将内部可编程对象展现给自动化客户,而自动化客户则对这些暴露的自动化对象进行操作。具体的 操作包括:创建一个新的自动化对象,获取、设置自动化对象的属性,以及调用自动化对象的方法等。)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值