关于COM

组件对象模型

  Component Object Model(COM——组件对象模型)
  一种面向对象的编程模式。它定义了对象在单个应用程序内部或多个应用程序之间的行为方式。
   组件对象模型,也称元件物件模型,英文为Component Object Model,缩写COM,是微软对於网页服务器与客户端、增益集与Office系列软件之间互动的一项软体元件技术。
  自动化是指应用程序的COM化来让外部可以调用它们的功能,以及外部调用这些功能的方法。自动化的典型应用是微软的很多软件中都支持的巨集。由于自动化普遍使用OLE的标准接口来实现,所以这个技术有时也称OLE自动化。
   历史
  Windows 作业系统提供了三种应用程式间的通讯机制:剪贴簿(clipboard)、DDE与OLE。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是微软自1993年便提出的元件式软体平台,用来做行程间通讯(Inter-process communication, IPC)以及当作元件式软体开发的平台。COM提供跟程式语言无关的方法实作一个软体物件,因此可以在其他环境中执行。COM并要求某个软体元件必须遵照一个共同的介面,该介面与实作无关,因此可以隐藏实作内容,并且被其他物件在不知道其内部实作的情形下正确的使用。
  COM并被实作於多个平台之上,并不限於Windows作业系统之上。但还是只有Windows最常使用COM,且某些功能已被目前的.NET平台取代。
   相关技术
  COM曾是Windows平台下主要的软体开发平台,并且影响至其他许多相关软体技术。

COM+

   COM+是COM和MTS的统一。
   COM+特性:
  与 COM 一样,COM+ 基于二进制组件和基于接口的编程。通过使用透明 RPC 层,可以跨越进程和计算机边界进行远程方法调用。正如 COM 组件那样,COM+ 组件可以在成品中升级和扩展,而不会对使用它们的客户端应用程序造成负面影响。
  与 MTS 一样,COM+ 支持分布式事务和基于角色的安全性。它提供内置线程池方案,该方案与 MTS 的线程池方案一样透明。COM+ 编程模型同样利用侦听通过声明性属性向开发人员公开平台服务。但是,COM+ 比 MTS 更进一步地利用了基于属性的编程。除了事务性服务和集成安全性外,COM+ 还公开自定义对象构造、同步、 对象池等服务。COM+ 的其他新功能(如排队组件和 COM+ 事件)也通过可配置的属性公开。
  COM+并不是COM的新版本,我们可以把它理解为COM的新发展,或者为COM更高层次上的应用。COM+的底层结构仍然以COM为基础,它几乎包容了COM的所有内容。有一种说法这样认为,COM+是COM、DCOM和MTS(Microsoft Transaction Server)的集成,这种说法有一定的道理,因为COM+确实综合了这些技术要素。但更重要的一点是,COM+倡导了一种新的概念,它把COM组件软件提升到应用层而不再是底层的软件结构,它通过操作系统的各种支持,使 组件对象模型建立在应用层上,把所有组件的底层细节留给操作系统。 
  COM是个开放的组件标准,它有很强的扩充和扩展能力,从COM到DCOM,再到MTS的发展过程也充分说明了这一点。对COM有使用经验的读者一定可以感觉到,虽然COM已经改变了Windows程序员的应用开发模式,把组件的概念融入到Windows应用中,但是由于种种原因,DCOM和MTS的许多优越性还没有为广大的Windows程序员所认识。MTS针对企业应用和Web应用的特点,在COM/DCOM的基础上又添加了许多功能和特性,包括事务特性、安全模型、管理和配置等,MTS使COM成为一个完整的组件体系结构。由于历史的原因,COM、DCOM和MTS相互之间并不很融洽,难以形成统一的整体,不过,这种状况很快就要结束,因为COM+将把这三者有效地统一起来,形成一个全新的、功能强大的组件体系结构,并且把DCOM和MTS的各种优势以更为简捷的方式带给Windows 2000程序员和用户。 
  COM+不再局限于COM的组件技术,它更加注重于分布式网络应用的设计和实现,已经成为Microsoft系统平台策略和软件发展策略的一部分。COM+继承了COM几乎全部的优势,同时又避免了COM实现方面的一些不足。COM+紧紧地与操作系统结合起来,通过 系统服务为应用程序提供全面的服务。
   COM组件类型:
  进程内组件:组件是在主调应用程序的进程范围内运行,是以DLL方式实现的。组件的实现是快速的,但由于和应用程序公用一个进程,导致了不安全的因素。
  进程外组件:它又可分为两类。本地服务器进程组件,它是组件与调用组件者在同一机器上;远程服务器进程组件,它是组件使用远程过程调用RPCs和客户应用程序进行通信。


OLE(Object Linking and Embedding,对象连接与嵌入)。是一种 面向对象的技术,利用这种技术可开发可重复使用的 软件组件(COM)。OLE不仅是桌面应用程序集成,而且还定义和实现了一种允许应用程序作为软件“对象”(数据集合和操作数据的函数)彼此进行“连接”的机制,这种连接机制和协议称为组件对象模型(Component Object Model),简称 COM。OLE可以用来创建 复合文档,复合文档包含了创建于不同源应用程序,有着不同类型的数据,因此它可以把文字、声音、图像、表格、应用程序等组合在一起。
OLE 是在客户应用程序间传输和共享信息的一组综合标准。允许创建带有指向应用程 的链接的混合文档以使用户修改时不必在应用程序间切换的协议。OLE基于 组件对象模型(COM) 并允许开发可在多个应用程序间互操作的可重用 即插即用对象。该协议已广泛用于商业上,在商业中 电子表格、字处理程序、财务软件包和其他应用程序可以通过客户/服务器体系共享和链接单独的信息。
关于 OLE ,业界早就在抱怨它的缓慢和庞大,对市场敏感的 Microsoft 需要对那些 API 函数提出一种新的术语以适应未来的 操作系统和 Internet 技术。有趣的是 Microsoft 已经宣布 OLE 不再代表 对象链接与嵌入,而只是一个过去的名词而已。

OLE的版本

OLE1.0和OLE2.0
迄今为止,有两种版本的OLE:OLE1.0和OLE2.0。当用户在OLE1.0 服务器中激活OLE对象,服务器程
序在前台打开自己的窗体,并获得焦点。OLE窗体失去焦点,存在于单独的窗体之中。
OLE2.0服务器采用“本地”(in place)激活方式。本地激活意味着服务器菜单与应用程序菜单要进行
融合,服务器的状态条更换应用程序状态条,服务器的工具条更换应用程序工具条。OLE对象在应用程序
窗体中进行编辑,但所有过程均由服务器处理。
创建OLE对象的服务器决定了OLE的激活方式。如果一个OLE1.0的对象在OLE2.0 编译的应用程序中打
开,它将采用OLE1.0的方式。

OLE类、文件、项目

OLE类决定创建OLE对象的服务器。有些应用程序需要创建多种类型的OLE对象,例如应用程序同时链
接或嵌入公式、图片等。OLE类也决定OLE对象所包含的数据类型,链接或嵌入对象均要定义OLE类。
OLE文件是包含OLE对象数据的源文件。链接对象必须使用对象文件,因为链接对象在文件中保存。如
果应用程序从已存在的源文件中创建嵌入对象,也要使用OLE文件。例如,如果链接到QuattiPro笔记本的
OLE对象TUTOR.WBI存储在D:\DFFICE\QPW目录下,则OLE文件就是D:\DFFICE\QPW\TUTOR.WBI。值得注意的
是OLE文件只能为链接对象所定义,而对于嵌入对象,只需定义OLE类。
OLE项目是代表链接或嵌入数据的OLE文件中的一部分。当应用程序希望OLE对象包含比OLE文件小的数
据块时,则必须使用OLE项目。

OLE应用程序的菜单

OLE应用程序的菜单与其它应用程序的主菜单大体一致,如果应用程序中有支持本地激活的OLE 2.0对
象,则要进行菜单融合。查阅OLE 服务器的资料可知道服务器是否支持本地激活。
OLE应用程序菜单的GroupIndex属性决定融合菜单的位置,即融合菜单是更换主菜单,还是插入至应
用程序的主菜单中。
OLE工具条和状态条
当OLE对象被本地激活时,OLE服务器将试图用自己的工具条和状态条替换OLE应用程序的。如果应用
程序想要本地激活, 就应该在应用程序中编写相应的代码让服务器使用工具条和状态条。要做到这点,
必须:
● 设置工具条和状态条
● 在应用程序中加入状态条
通过修改面板部件的属性创建工具条和状态条。
当OLE对象被本地激活时,面板或其他对齐控制将与OLE服务器程序进行协调。 这意味
OLE服务器可以替换OLE应用程序窗体中任何对齐控制,但锁定的控制不能被替换。例如,
如果面板的align属性是alTop,alleft,alBottom,alIngh时,控制未锁定,OLE服务器可以替换。要使应用
程序的工具条、状态条不被替换,可将locked属性设置成真值

OLE自动化

OLE自动化是Windows应用程序操纵另一个程序的一种机制。OLE 2.0提供了一种方法来集成应用程序,这就是应用程序之间的命令操作。
利用OLE 2.0,程序员可以定义一组命令,使它们进入到其它程序中。这些命令可带参数。看起来很象应用程序在调用函数或过程一样。采用上述办法, 可以在人不参与的情况下,就能使得两个应用程序的相互作用。
被自动化的程序称作自动化对象或自动化服务器, 操作或自动化其他程序的应用程序称为自动化控制器或自动化客户器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值