现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

COM技术内幕FAQ

2012-09-25 07:23 工业·编程 ⁄ 共 1074字 ⁄ 字号 暂无评论

    刚刚读完《COM技术内幕》一书,整理了一个FAQ,供大家在学习此书时参考。这是第一部分,包含前3章的内容。

FAQ1:什么是COM组件?〖第一章〗

Answer:

COM组件是以WIN32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行代码组成。

COM组件是遵循COM规范编写的

COM组件是一些小的二进制可执行文件

COM组件可以给应用程序、操作系统以及其他组件提供服务

自定义的COM组件可以在运行时刻同其他组件连接起来构成某个应用程序

COM组件可以动态的插入或卸出应用

COM组件必须是动态链接的

COM组件必须隐藏(封装)其内部实现细节

COM组件必须将其实现的语言隐藏

COM组件必须以二进制的形式发布

COM组件必须可以在不妨碍已有用户的情况下被升级

COM组件可以透明的在网络上被重新分配位置

COM组件按照一种标准的方式来宣布它们的存在

FAQ2:组件不是……?〖第一章〗

Answer:

COM组件不是一种计算机语言

COM组件不是DLL,只是利用DLL来给组件提供动态链接的能力

COM组件不是一个API函数集。

COM组件不是类

FAQ3:什么是接口?〖第二章〗

Answer:

接口就是提供两个不同对象间的一种连接。

计算机程序是通过一组函数而进行连接的,这组函数就是定义了程序中不同部分的接口。

DLL的接口就是它所输出的那些函数。

C++类的接口就是该类的成员函数集。

COM中的接口是一组由组件实现的提供给客户使用的函数。

在COM中接口是一个包含函数指针数组的内存结构,数组元素是一个由组件实现的函数地址。

FAQ4:接口的作用是什么?〖第二章〗

Answer:

有了组件如何将它们连接起来构成某个应用程序,需要用接口。

在COM中接口就是一切,对客户说组件就是接口集,客户只能跟接口打交道。

说明接口可以保护系统免受外界变化的影响。这是封装的体现。

接口实现了使用户使用同样的方式来处理不同的组件。这是多态的体现。

FAQ8:接口的如何实现?

Answer:

COM接口在C++中是用纯抽象基类实现。

一个COM组件可以支多个接口。

一个C++类可以使用多重继承来实现一个支持多个接口的组件。

组件可以支持任意数目的接口。

接口应该具有不变性。在组件升级时应该不修改原来的接口,而是添加新的接口。

要精心设计实现接口,以使之能够支持各种不同的实现。

简单地说,COM是一种跨应用和语言共享二进制代码的方法。与C++不同,它不是提倡源代码重用。ATL便是一个很好的例证。C++源码级重用的弊端:只能用于C++。它还带来了名字冲突的可能性,更不用说不断拷贝重用代码而导致工程膨胀和臃肿。

给我留言

留言无头像?