1.COM简介 COM(Component Object Model ),即组件对象模型,是一种以组件为发布单元的对象模型,这种模型使各软件组件可以用统一的方式进行交互。COM即提供了组件之间进行交互的规范,也提供了实现交互的环境,因为组件对象之间的交互规范不依赖于任何特定的语言,所以COM也可以是不同语言写作开发的一种标准。 2.COM结构 COM标准包括规范和实现两大部分。规范部分定义了组件与组件之间通信机制,不依赖于任何特定的语言和操作系统;实现部分是COM库,COM库为COM规范的实现提供一些核心服务。 2.1.COM对象和接口 类似于C++中对象的概念,COM对象时某个类的一个实例;而类则是一组相关的数据和功能组合在一起的定义。使用对象的应用(或另一个对象)称为客户。 接口是一组逻辑上相关的函数集合,其函数也被称为接口成员函数。对象通过接口成员函数为客户提供各种形式的服务。 在COM模型中,对象本身对于客户是不可见的,客户只能通过接口请求对象提供的服务。每个接口都由一个128位的全局唯一标识符(GUID,Globally Unique Identifier)来标识。客户通过GUID获得接口的指针,再通过接口指针,客户就可以调用其相应的成员函数。对象在内部实现接口提供的函数向用户提供功能。在COM模型中,对象通过接口和接口函数为客户提供服务,对于客户来讲,它只与接口打交道。 与接口类似,每个对象也用一个128位GUID来标识,称为CLSID(class identifier,类标识符或类ID)。客户程序由CLSID创建COM对象后(由此看出CLSID是对象对应类的唯一标识),得到一个指向对象某个接口的指针,因为COM对象至少实现了一个IUnknown接口,所以客户就可以调用该接口提供的所有服务。这就会想了,如果一个对象实现了多个接口,难道我们每访问一个接口就要创建一个COM对象吗,这也太不人性了吧。根据COM规范,一个COM对象如果实现了多个接口,则可以从某个接口得到该对象的任意其他接口。 2.2.客户/服务器模型 COM模型中,客户与组件的交互机制以客户/服务器模型为基础。下图为COM对客户/服务器模型的灵活运用。 2.3.COM库 COM本身除了规范之外,也有实现部分,其中包括一些核心的系统级代码,也正是这部分核心代码,才使得对象和客户之间可通过接口在二进制级别进行交互。 在Windows操作系统下,这些库以.dll的形式存在,其中包括以下内容: (2)COM通过注册表查找本地服务器即EXE或DLL程序,以及程序名与CLSID的转换等。 (3)提供了一种标准的内存控制方法,使应用控制进程中内存的分配。 COM库是在操作系统层次上实现的,因此一个操作系统只有一个COM库实现,这样我们在编写COM应用时,不用编写为COM通信而必需的大量基础代码,而是直接利用COM库提供的API进行编程,从而大大加快开发速度。 
(1)提供少量的API函数实现客户与服务器端COM应用的创建过程。在客户端主要是一些创建函数;在服务器端,提供一些对象的访问支持。
COM概述
最新推荐文章于 2025-04-09 13:27:04 发布
COM(Component Object Model)是一种组件对象模型,定义了组件间交互的规范,支持跨语言和跨平台通信。COM对象通过接口提供服务,每个接口和对象都有唯一的标识符。客户程序通过类标识符(CLSID)创建对象并获取接口指针来调用服务。COM模型基于客户/服务器,且COM库提供核心服务,如内存管理,简化了开发过程。
3629

被折叠的 条评论
为什么被折叠?



