组件对象模型

编辑:旷代网互动百科 时间:2020-06-06 01:14:26
编辑 锁定
本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!
Component Object Model(COM——组件对象模型)
组件对象模型,一种面向对象的编程模式。它定义了对象在单个应用程序内部或多个应用程序之间的行为方式。英文为Component Object Model,缩写COM,是微软对于网页服务器与客户端、增益集与Office系列软件之间交互的一项软件组件技术。
中文名
组件对象模型
外文名
Component Object Model
解    释
一种面向对象的编程模式
缩    写
COM

组件对象模型概述

编辑
COM是微软自1993年便提出的组件式软件平台,用来做进程间通信(Inter-process communication, IPC)以及当作组件式软件开发的平台。COM提供跟编程语言无关的方法实现一个软件对象,因此可以在其他环境中运行。COM要求软件组件必须遵照一个共同的接口,该接口与实现无关,因此可以隐藏实现属性,并且被其他对象在不知道其内部实现的情形下正确的使用。
COM并被实现于多个平台之上,并不限于Windows操作系统之上。但还是只有Windows最常使用COM,且某些功能已被目前的.NET平台取代。

组件对象模型历史

编辑
Windows 操作系统提供了三种应用程式间的通讯机制:剪贴板(clipboard)、DDEOLE。OLE原名是物件连结与嵌入(Object Linking and Embedding),OLE可说是DDE的改良版,OLE 1.0版提供复合文件(compound document)处理。但过於复杂,Brockschmidt, Kraig「Inside OLE」一书中提到,必须经过六个月的心灵混沌期,才能了解OLE是什么。因此OLE 2.0后,微软提出COM架构。所有OLE元件皆是继承COM而来,这些技术包含OLE Document和OLE Controls、Drag and Drop等。

组件对象模型COM组件类型

编辑
COM是基于组件对象方式概念来设计的,在基础中,至少要让每个组件都可以支持二个功能:
  • 查询组件中有哪些界面
  • 让组件做自我生命管理,此概念的实践即为引用计数(Reference Counting)
这二个功能即为COM的根:IUnknown接口所提供的IUnknown::QueryInterface(),IUnknown::AddRef()及IUnknown::Release()三个方法的由来。所有的COM组件都要实现IUnknown,表示每个COM组件都有相同的能力。
只由COM派生实现出来的组件,称为纯COM组件
但在Windows持续发展时,Visual Basic 4.0开始支持OCX,也就是OLE Custom Control,这让微软开始思考要如何让COM组件可以跨语言支持,在这样的要求下,必须要提供一个一致的接口,以及提供一组可以调用接口内方法的能力,由于纯COM组件只能够支持C/C++的直接访问,为了要达到跨语言的能力,在COM中必须要支持在外部调用内部方法的机能,这个机能造就了Invoke()方法,另外为了跨语言的支持,COM应该要提供简单的组件访问识别方式,这也就是会有GetIDsOfNames()的原因,将这些方法组合起来,定义出的必要接口,称为IDispatch接口,所有实现此接口的,都可以支持跨语言的支持。
微软将实现此接口的组件都称为自动化(Automation)组件。

组件对象模型相关技术

编辑
COM曾是Windows平台下主要的软件开发平台,并且影响至其他许多相关软件技术。

组件对象模型COM+

COM+是微软Windows 2000中,Microsoft Transaction Server的强化实现版本,除了提供基本的组件交易支持外,还提供了松散藕合式事件(loosely-coupled events)与对象共用池(object pooling)等应用程序服务器的能力,成为Windows 2000开始在微软平台上主要的应用程序服务器平台,目前.NET Framework也提供了System.EnterpriseServices命名空间以支持COM+。

组件对象模型Distributed COM

Distributed COM是可以在网络上通信的COM组件,依据RPC(Remote Procedure Call)的规范来发展的,它将COM组件的能力扩及到网络上,但是因为网络安全以及防火墙的问题,让设备上下文OM无法广泛的流行。

组件对象模型.NET

.NET Framework是新一代的Microsoft Windows应用程序开发平台
词条标签:
计算机术语 计算机学 自然地理