摘抄总结于《COM 原理与实现》

COM 原理与应用

COM 原理与应用

COM 标准包括规范,实现

规范:定义了组件和组件之间通讯机制,这些规范不依赖于任何特定的语言和操作系统

实现:COM 库

1.2.1对象与接口

       COM是面向对象的软件模型——>对用户不可见

      

每个COM 中每一个对象用128位GUID 标识称为 CLSID

 

接口——> IUnknown (接口是一组逻辑上相关的函数的集合,其函数也被称为接口成员函数;对象通过接口成员函数为客户提供各种形式的服务;客户请求服务时,只能通过接口进行(对象本身对客户来说是不可见的)。)

每个接口都是由一个128位的GUID标识。客户通过GUID活动接口的指针,在通过接口指针调用其相应的成员函数。

客户通过CLSID 成功创建对象后,得到指向对象某个接口指针,然后可以得到其他所有接口的指针

1.2.2客户/服务器模型

       1、稳定性

       2、科扩展性

       3、提高性能

       4、降低流量

       5、事务机制(数据备份)

COM 原理与应用

1.2.3 COM 库

       Windows 下 库以.dll文件形式存在,主要包含以下内容

1、             少量API函数;在客户端试一下创建函数,服务端,以下对对象的访问支持。

2、             COM 通过注册表查找本地服务EXE程序,将程序名转为CLSID等

3、             标准的内存控制方法。

COM库在操作系统层上实现,一个操作系统只有一个COM 库实现

1.3 COM 特性

1.3.1 语言无关性

1.3.2 进程透明特性

                     COM所提供的服务组件对象在实现时有两种 进程模型:进程内对象,进程外对象。

1.3.3可重用性


 

2     COM对象和接口

2.1 COM 对象

2.1.1

COM 对象的标识-CLSID 

例子{00024500-0000-0000-C000-000000000046}

01.typedef struct .GUID {

02.DWORD Data1;    //随机数

03.WORD Data2; // 和时间相关

04.WORD Data3; // 和时间相关

05.BYTE Data4[8];  //和网卡MAC相关

06.} GUID;

07. 

08.typedef GUIDCLSID;  // 组件ID

09.typedef GUIDIID;    // 接口ID

COM库为我们提供了以下API 函数可以产生GUID:

HRESULT CoCreatedGuid(GUID *pguid);

2.1.2

1、封装特性:COM对象中,数据是完全封装在对象内部的,外部不可能直接访问对象的数据属性(不同模块,不同进程,不同机器)

2.可重用性:COM 对象的可重用性表现在COM 对象的包容和聚合

2.2COM 接口

       2.2.2接口定义和标识

COM 原理与应用

2.2.6接口的一些特点

1、二进制特性

2、接口不变性

2.3IUnknown接口

IUnknown 接口提供了两个非常重要的特性:生存期控制,接口查询。

2.3.1引用计数(AddRef 和Release)

2.3.2实现引用计数  三种(COM 组件、COM对象、COM接口)


 

2.3.7COM 对象和接口图

COM 原理与应用

 

3、COM 的实现

进程内组件和进程外组件

进程内组件 dll 与软件同一个进程内,效率高

进程外组件

COM 原理与应用

COM 原理与应用

3.2 注册表管理COM 对象

COM 原理与应用

3.3.1 类厂

COM 原理与应用

相关文章:

  • 2022-12-23
  • 2022-01-20
  • 2022-01-05
  • 2021-05-10
  • 2021-12-30
  • 2021-11-01
  • 2021-08-11
  • 2021-12-14
猜你喜欢
  • 2022-02-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案