1、COM 本身与编程语言无关,并不是大的API集合,它实际上像结构化编程以及面向对象编程方法那样是一种编程方法、一种编程思想、是说明如何建立可动态互变组件的规范。
2、《COM技术内幕》采用传统C++来具体演示COM技术。
3、书中类型转换采用C++的:static_cast、dynamic_cast、reinterpret_cast、const_cast。
4、书中编码风格(MFC编码风格)
前缀 | 含义 | 示例 |
C | 类 | CConnectionPoint |
I | 接口 | IConnectionPoint |
m_ | 成员变量 | BOOL m_bSplleyBear |
s_ | 静态成员变量 | static int s_iBears |
g_ | 全局变量 | int g_Bears[100] |
前缀 | 含义 | 示例 |
---|---|---|
p | 指针 | int *pCount |
pI | 指向接口的指针 | Ibear *pIBear |
b | 布尔型 | BOOL bBear |
I | 整数 | int iNumberOfBears |
dw | DWORD | DWORD dwBear |
c | 计数 | DWORD cRefs |
sz | 字符数组 | char szName[]="Fuzzy" |
wsz | 宽字符数组 | wchar_t wszName[]=L"Fuzzy" |
一、组件的优点:
1、可以实现应用程序的定制。2、组件库,可以构建大型组件库供后面开发软件使用。
3、分布式组件,组件不再局限于本地。
二、对组件的要求:
组件的优点直接来源于可以动态的将它们插入或者卸出应用程序。
1、必须支持动态链接。
2、必须实现信息封装,与语言无关,与版本无关。
三、COM组件
1、COM组件是以Win32动态链接库DLLs或者可执行文件EXEs的形式发布的可执行二进制代码组成的。
2、COM组件是动态链接的。COM使用DLL将组件动态链接起来,但是动态链接本身并不能满足COM组件构架的需求,为满足这些需求组件必须是封装的。
3、不能将COM和DLL相提并论,COM只是使用了DLL来提供动态链接的能力。《COM技术内幕》的作者对DLL的应用除了支持COM外,其他地方一般不会用DLL。
四、COM组件库
COM当然并不是一套API,但是它也需要具体的实现,在Window环境中微软提供了一个被称作COM库(COM Library)的API组,它提供对所有客户以及组件都非常有用的组件管理服务。在非Window环境中实现这批API也并不难。此COM库可以保证对所有组件的大多数重要的操作都可以按相同的方式完成。此COM库可以节省大量开发时间,避免大量重复性编码工作。