现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

了解OLE及ActiveX

2012-10-02 21:43 工业·编程 ⁄ 共 2502字 ⁄ 字号 暂无评论

如果您使用Windows,如果您经常使用微软的程序,或者您热衷于VB编程,抑或您流连于国际互联网,您不会不经常接触到OLE和ActiveX等拗口的洋文,但是您知道它们到底是啥意思,有啥来头吗?如果您有兴趣,请让我说给您听。我们首先从OLE谈起。

一、过去的OLE和今天的OLE

最初的OLE含义是指在程序之间链接和嵌入对象数据,它提供了建立混合文档的手段(资深Windows 3.X 用户可能记得当初在Word6.0中插入一个图形的新奇和喜悦),使得那些没有太多专业知识的用户能够很容易地协调多个应用程序完成混合文档的建立。1991年制定的OLE1.0规范主要解决多个应用程序之间的通信和消息传递问题,微软希望第三方开发商能够遵守这个规范,以使在当时的Windows平台上的应用程序能够相互协调工作,更大的提高工作效率。然而事与愿违,只有很少的软件开发商支持它。为此,微软于1993年发布了新的规范——OLE2.0,它在原有的基础上完善并增强了以下各方面的性能:

1.OLE自动化:一个程序有计划地控制另一个程序的能力。

2.OLE控件:小型的组件程序,可嵌入到另外的程序,提供自己的专有功能。

3.OLE文档:完善了早期的混合文档功能,不仅支持简单链接和嵌入,还支持在位激活、拖放等功能。

强大的功能使得很多的开发商开始支持新的OLE技术,因为微软在OLE2.0中建立了一个称为COM(Component Object Model即组件对象模式)的新规范。

二、COM规范

COM规范被公认为是微软对Windows系统的未来支持和发展策略,是微软的关于全球兴起的组件市场的策略。该规范提供关于新OLE技术的编程模型和二进制标准,但并没有规定实现COM规范的计算机语言(实际上只要支持指针概念的计算机语言就可以用于开发基于COM的程序),也没有指定应用程序应该如何组织,它只是一个指导性规范。

如今的OLE 之所以吸引大家我想很大程度上是由于COM规范的制订,它能够保证所有遵循此规范的应用程序之间的通信和消息传递乃至功能调用的安全和顺利实现。所有OLE的实现都是基于COM 的,有人说COM是OLE的基石。OLE组件通过称为接口的一组相关函数集来支持对OLE对象的数据的访问,而接口的每一个函数称为方法(Method),通过接口可被访问的对象的数据称为属性。如果您熟悉VB,想必这些您一听就明白。

注意这里的对象也不能和C++语言的类的实例对象相混淆。 实现了不同接口的文档应用程序在OLE中的称呼不一样,有的称为文档容器,有的称为文档服务器,有的应用程序既是容器又是服务器,著名的例子是微软的世界级Office软件Word。容器是一个客户程序,它具有申请并使用其它COM组件通过接口为其它程序实现的功能;服务器通过特定的接口将自己完成的一些功能,提供给使用自己的应用程序(例如画笔程序是一个文档服务器,它提供创建并编辑BMP 图像的功能)。当打开Word,选择【插入】菜单下的【对象...】项,您可以看到在您的系统中存在哪些文档服务器,此时的Word以文档容器的身份出现。当您双击插入的对象后发现Word的菜单有些改变成文档服务器程序的菜单,可以在当前的环境下编辑对象,这称为在位激活。 和OLE文档技术类似,允许一个应用程序通过编程控制另一个应用程序“自愿”提供的功能的技术称为OLE自动化。自身暴露一些可编程对象给其它程序的应用程序叫自动化服务器,利用并操纵自动化服务器提供的功能的应用程序叫自动化客户或自动化控制器,有些程序既是自动化服务器又是自动化控制器。例如在VB中我们可以通过编程创建并编辑一个Excel工作表(很多参考书都以此为例),这里的VB就是自动化控制器,而创建工作表的Excel程序则是自动化服务器,但在Excel中我们又可以利用VBA语言创建PowerPoint的幻灯片,它又成了自动化控制器。利用OLE自动化技术可以实现软件的一次开发和多次利用,这也是集成组件的关键技术。无论是操作系统还是应用软件,微软都有意识朝着这个方向发展,例如从Windows95开始,包括WindowsNT4.0以后的操作系统的Shell就实现了OLE自动化技术。 那么什么是ActiveX?它和OLE有什么联系呢?

三、ActiveX战略

同早期的功能薄弱的OLE1.0相比,OLE2.0得到了很多软件厂商的支持。许多程序设计人员编写了大量的实现OLE自动化服务器功能的组件(不一定是EXE文件),这些组件一般不求功能齐全、强大,而是实现专门的功能,可以被其它程序编程控制,由此承袭OLE的名字称为OLE控件。它们在文件名中的扩展名一般为OCX(OLE Control Extension)。

微软刚刚赢得广大软件厂商的支持,使OLE技术深入人心,然而“人算不如天算”,国际互联网的超速发展让比尔·盖茨始料未及。加上早期的OLE1.0不得人心,导致后来的人们总把在Word中插入一个图形当作OLE技术的全部,各类资料在介绍新OLE技术时命名也不统一,造成很大的混乱。针对这些情况,微软在1996年重新制订了一个关于OLE的规范——OLE 96规范。这个规范扩展了 OLE控件的能力,并贯彻微软的Internet战略使它更易于在网络环境中使用,还考虑命名混淆的问题,重新给OLE控件贴上一个标签——ActiveX控件。不仅如此,以前的什么OLE文档也相应称为ActiveX 文档了。

总之,为了满足Internet战略,微软把OLE换成了ActiveX,企图使人们重新看待新的OLE——ActiveX,把它看做网络上的解决软件组件问题的标准。 许多在Windows上同微软合作得很好的厂商在开发新版本软件时都开始支持ActiveX技术,例如Delphi、PowerBuild等开发工具。原来同Windows竞争的操作系统也开始支持ActiveX,例如Macintosh,甚至老对手OS/2上也可以使用ActiveX控件。

ActiveX技术也许真的会成为一个异种平台争相支持的规范,如果能够进一步完善ActiveX、采用更开放的策略以及微软不被卸成八大块的话。

给我留言

留言无头像?