文档介绍:踏雪无痕
COM组件简介
分类: C++ 2012-05-02 13:06 133人阅读评论(0) 收藏举报
面向对象的思想难以适应这种分布式软件模型,于是组件化程序设计思想得到了迅速的发展。
按照组件化的程序设计的思想,复杂的应用程序被设计成一些小的,功能单一的组件模块,这些组件模块
可以运行在同一台机器上,也可以运行在不同的机器上。
为了实现这样的应用软件,组建程序和组建程序之间需要一些极为细致的规范, 只有组件程序遵守了这些
共同的规范,然间系统才能正常运行。
为此,mon Object Request Breaker Architecture)和
ponent Object model)标准,目前CORBA模型主要应用于UNIX操作系统平台上,而COM 则
主要应用于Microsoft Windows操作系统平台上。
在COM标准中,一个组件程序也被称为一个模块,它可以是一个动态连接库(DLL), 被称为进程内组件(in-
of-ponent)也可以是一个可执行程序(EXE),被称为进程外组件(out-of-process
component).
COM对象是建立在二进制可执行代码级的基础上,而C++等语言中的对象是建立在源代码级基础上的,因
此COM对象是语言无关的。这一特性使用不同编程语言开发的组件对象进行交互成为可能。
在Microsoft 技术被应用于系统的各个层次,对象管理到上层
标准。
概述
COM既提出了组件之间进行交互的规范,也提供了实现交互的环境, 因为组件对象之间交互的规范不依赖
于任何特定的语言,也可以是不同语言协作开发的一种标准。
规范为基础,标准的优势,使Windows操作系统上的应用程序具有
极强的可交互性。如果没有OLE的支持,Windows操作系统则会逊色很多。
规范并不局限于OLE技术,实际上,的一个应用而已,这几年,OLE技术在
进行网络互连是显示出了很大的局限性,而COM则表现出了极强的适应能力。
COM标准包括规范和实现两大部分,规范部分定义了组件和组件之间通信的机制,这些规范不依赖于任何
特定的语言和操作系统,只要按照该规范,任何语言都可以使用;
规范的具体实现提供了一些核心服务。
COM是面对对象的软件模型,因而对象是他的基本要素之一。类似于C++中对象的概念,对象是某个类
(class)的一个实例;而类则是一组相关的数据和功能组和在一起的一个定义。使用对象的应用(或另一个对
象)成为客户,有时也成为对象的用户。
1
接口是一组逻辑上相关的函数集合,其函数也被称为接口成员函数。对象通过接口成员函数为客户提供各
种形式的服务。
在COM模型中,对象本身对于客户来说是不可见的,客户请求服务时,只能通过接口进行。每一个接口都
由一个128位的全局唯一标识符(GUID,Globally Unique Identifier)来标识。客户通过GUID获得接口的指
针,在通过接口指针,客户就可以调用其相应的成员函数。
一般来说,接口是不变的,只要客户期望的接口在组建对象中还存在,它就可以继续使用该接口所提供的
服务。对象可以支持多个接口,因此对组件对象的升级可通过增加接口的办法实现,这样得到的新接口可
以不影响老接口的使用。
对