COM 原理与应用 ¶
约 1108 个字 预计阅读时间 4 分钟
Abstract
自学,导师推荐的书籍,记录一下学习过程,仅学习第一部分
COM 是由 Microsoft 提出的组件标准,它不仅定义了组件程序之间进行交互的标准, 井且也提供了组件程序运行所需的环境。在 COM 标准中,一个组件程序也被称为一个模块,它可以是一个动态连接库 ( 缩写为 DLL ),被称作进程内组 件 (in-process component); 也可以是一个可执行程序 ( 即 EXE 程序 ),被称作进程外组件 (out-of-process component)。一个组件程序可以包含一个或多个组件对象,因为 COM 是以对象为基本单元的模型,所以在程序与程序之间进行通信时,通信的双方应该是组件对象,也叫做 COM 对象,而组件程序(或称做 COM 程序)是提供 COM 对象的代码载体。
———— COM 是什么
概述 ¶
面向对象的组件模型——COM¶
COM 不仅仅提供了组件之间的接口标准,它还引人了面向对象的思想。在 COM 标淮中,对象是一个非常活联的元素,我们也经常把它称为 COM 对象。组件模块为 COM 对象提供了活动的空间,COM 对象以接口的方式提供服务,我们把这种接口称为 COM 接口。
COM 结构 ¶
对象与接口 ¶
- COM 对象类似于 C++ 中对象的概念,对象是某个类 (class) 的一个实例 ; 而类则是一组相关的数据和功能组合在一起的一个定义。使用对象的应用 ( 或另一个对象 ) 称为客户。
- 接口是一组逻辑上相关的函数集合,其函数也被称为接口成员函数。
- 对象通过接口成员函数为客户提供各种形式的服务。
- 每个接口都由一个 128 位的全局唯一标识符 (GUID) 来标识。客户通过 GUID 获得接口的指针。
- 每个对象都有一个 128 位的 GUID 来标识,称为 CLSID,保证在全球范围内的唯一性。
- 对于客户来说,只与接口打交道。
客户 / 服务器模型 ¶
- 稳定性、可靠行好。
- 软件的可扩展性更好。
- 提高性能。
- 在网络上实现时,可以降低网络流量。
- 用于数据库时,可以实现事物机制,提供数据备份能力等。
客户 / 服务器模型的最大优点是稳定性好,而这正是 COM 模型的目标,尤其对于跨进程的程序通信。
下面是 COM 使用客户 / 服务器模型的几种灵活用法:
COM 库 ¶
在 Microsoft Windows 操作系统环境下,COM 库以 .dll 文件的形式存在,包括一下内容:
- 提供了少量的 API 函数实现客户和服务器端 COM 应用的创建过程。在客户端,主要是一些创建函数 ; 而在服务器端,提供一些对对象的访问支持
- COM 通过注册表查找本地服务器即 EXE 程序,以及程序名与 CLSID 的转换等
- 提供了一种标准的内存控制方法,使应用控制进程中内存的分配
COM 库一般不在应用程序层实现,而在操作系统层次上实现,因此一个操作系统只有一个 COM 库实现。
COM 特性 ¶
- 语言无关性:COM 规范的定义不依赖于特定的语言(但只有用 C/C++ 语言才能实现 COM 中所有的特性)
- 进程透明特性:跨进程操作是很有必要的。实现的关键在于 COM 库
- 可重用性:任何对象模型的实现目标。
- 包容方式
- 聚合方式
COM 对象和接口 ¶
COM 对象 ¶
- COM 提供的是面向对象的组件模型,COM 组件提供给客户的是以对象形式封装起来的实体
- 类似于 C++ 语言中类(class)概念,COM 对象也包括属性(也称为状态)和方法(也称为操作)
COM 对象的标识——CLSID¶
- 客户程序通过一个全局标识符进行对象的创建和初始化工作
- COM 规范采用了 128 位的全局唯一标识符(GUID)来标识对象(随机数)
COM 对象与 C++ 对象的比较 ¶
- 封装特性
- 可重用性
COM 接口 ¶
从 API 到 COM 接口 ¶
最后更新:
2023年10月11日 14:50:17
创建日期: 2023年8月26日 15:00:56
创建日期: 2023年8月26日 15:00:56