跳转至

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 文件的形式存在,包括一下内容:

  1. 提供了少量的 API 函数实现客户和服务器端 COM 应用的创建过程。在客户端,主要是一些创建函数 ; 而在服务器端,提供一些对对象的访问支持
  2. COM 通过注册表查找本地服务器即 EXE 程序,以及程序名与 CLSID 的转换等
  3. 提供了一种标准的内存控制方法,使应用控制进程中内存的分配

COM 库一般不在应用程序层实现,而在操作系统层次上实现,因此一个操作系统只有一个 COM 库实现。

COM 特性

  • 语言无关性:COM 规范的定义不依赖于特定的语言(但只有用 C/C++ 语言才能实现 COM 中所有的特性)
  • 进程透明特性:跨进程操作是很有必要的。实现的关键在于 COM
  • 可重用性:任何对象模型的实现目标。
    • 包容方式
    • 聚合方式

COM 对象和接口

COM 对象

  • COM 提供的是面向对象的组件模型,COM 组件提供给客户的是以对象形式封装起来的实体
  • 类似于 C++ 语言中类(class)概念,COM 对象也包括属性(也称为状态)和方法(也称为操作)

COM 对象的标识——CLSID

  • 客户程序通过一个全局标识符进行对象的创建和初始化工作
  • COM 规范采用了 128 位的全局唯一标识符(GUID)来标识对象(随机数)

COM 对象与 C++ 对象的比较

  1. 封装特性
  2. 可重用性

COM 接口

API COM 接口


最后更新: 2023年10月11日 14:50:17
创建日期: 2023年8月26日 15:00:56
回到页面顶部