COM和接口

1.      什么是COM

COM是关于如何建立组件以及如何通过组件构建应用程序的一个规范。遵循COM规范编写的组件将能够满足对组件架构的所有需求。且所有的组件必须满足两个条件:动态链接和信息封装。

COM组件是由以Win32动态链接库(DLLs)或可执行文件(EXEs)的形式发布的可执行代码组成的。但是将COMDLL相提并论是不合适的,因为实际上COM只是使用了DLL来实现组件的动态链接能力。

COM不是一个类库,只是一个方法——一种开发与语言无关的组件库的方法,COM本身并没有提供任何实现。

有一个被称作COM库的API,它提供对所有用户及组件都非常拥有的组件管理服务,可以保证对所有组件的 大多数重要的操作都可以按相同的方式完成。

 
将客户同组件实现相隔离的要求给组件增加了一些限制:
(1)       组件必须将其实现所用的编程语言封装起来。
(2)       组件必须以二进制的形式发布,以使其能够马上就可以投入使用。
(3)       组件必须可以在不妨碍已用用户的情况下进行升级。
(4)       组件在网络上的位置必须可以被透明地重新分配。
COM的好处
COM给我们带来的好处是多方面的:是的软件系统中的组件可用新的组件替换掉,以随时进行系统的升级与定制;可以在多个应用系统中重复利用同一个组件;可以方便地将应用系统扩展到网络环境下;COM与语言、平台无关,是的所有的程序员都可以充分发挥自己的才智与专长编写出组件模块;等等。
开发定制的COM就如同开发动态的、面向对象的API。
2.      接口
DLL的接口就是它所输出的哪些函数;C++类的接口则是该类的一个成员函数集。而对COM来说,接口是一个包含一个函数指针数据的内存结构。每一个数组元素包含的是一个由组件所实现的函数的地址。
(1)       COM接口在C++中是用纯抽象基类来实现的;
(2)       一个COM组件可以提供多个接口;
(3)       一个C++类可以使用多继承来实现一个可以提供多个接口的组件。
记住:接口是由没有实现细节的纯虚基类实现的。
用__stdcall标记的函数将使用标准的调用约定,即这些函数将在返回到调用者之前将参数从栈中删除。
COM接口具有不变性、多态以及接口继承。
开发组件软件的一个最大的问题是如何设计出具有高复用性、适应性、灵活性的接口,并考虑到将来可能会出现的新情况。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值