OLE、ActiceX、COM、DLL

转载 2006年05月26日 10:22:00

一. OLE、ActiceX和COM的关系?
1. 首先,从时间的角度讲,OLE是最早出现的,然后是COM和ActiveX;从体系结构角度讲,OLE和ActiveX是建立在COM之上的,所以COM是基础;单从名称角度讲,OLE、ActiveX是两个商标名称,而COM则是一个纯技术名词,这也是大家更多的听说ActiveX和OLE的原因。
2. COM的基本出发点是,让某个软件通过一个通用的机构为另一个软件提供服务。COM是应OLE的需求而诞生,但它的第一个使用者却是OLE2,所以COM与复合文档间并没有多大的关系,实际上,后来COM就作为与复合文档完全无关的技术,开始被广泛应用。这样一来,Microsoft就开始“染指”通用平台技术。但是COM并不是产品,它需要一个商标名称。而那时Microsoft的市场专家们已经选用了OLE作为商标名称,所以使用COM技术的都开始贴上了OLE的标签。其实OLE是COM的商标名称,自然不仅仅指复合文档。但Microsoft自己恐怕无法解释清楚,这要花费相当的精力和时间。
3. 随着Internet的发展,在1996年春,Microsoft改变了主意,选择ActiveX作为新的商标名称。ActiveX是指宽松定义的、基于COM的技术集合,而OLE仍然仅指复合文档。当然,ActiveX最核心的技术还是COM。ActiveX和OLE的最大不同在于,OLE针对的是桌面上应用软件和文件之间的集成,而ActiveX则以提供进一步的网络应用与用户交互为主。
4. 可以把COM看作是某种(软件)打包技术,即把它看作是软件的不同部分,按照一定的面向对象的形式,组合成可以交互的过程和以组支持库。COM对象可以用C++、Java和VB等任意一种语言编写,并可以用DLL或作为不同过程工作的执行文件的形式来实现。
5. COM技术也是一种打包可下载代码的标准方法(ActiveX控件就是执行这种功能的)。甚至连应用与本机OS进行交互的方法也可以用COM来指定,例如在Windows和Windows NT中用的是新API,多数是作为COM对象来定义的。可见,COM虽然起源于复合文档,但却可有效地适用于许多软件问题,它毕竟是处在底层的基础技术。
6. COM是独立于语言的组件体系结构,可以让组件间相互通信。随着计算机网络的发展,COM进一步发展为分布式组件对象模型,这就是DCOM,它类似于CORBA的ORB,本文对此将不再做进一步的阐述。

二、在Windows系统平台上,一个COM组件或者是一个DLL,或者是一个EXE。
2.1 COM标准包括规范和实现2大部分,规范部分定义了组件和组件之间通信的机制,这些规范不依赖于任何语言和OS,只有按照COM规范,任何语言都可以使用;COM标准的实现部分是COM库,COM库为COM规范的具体实现提供了一些核心服务。
2.2 使用对象的应用称为客户。客户程序可以由CLSID来创建COM对象。客户程序通过一个全局标识符进行对象的创建和初始化工作。客户程序通过一个指向接口数据结构的指针来调用接口成员函数。
2.3 COM定义的每一个接口都必须从IUnknown继承过来。因为IUnknown提供了两个非常重要的特性:生存期控制(AddRef()Release())和接口查询。

三、什么是 DLL?
DLL 有一个特殊的入口点(DllMain 函数),它在附加和分离进程和线程时运行。此行为允许根据需要创建和销毁数据结构。文件扩展名为 .ocx、.cpl 和 .drv 的文件类型也是 DLL,尽管文件扩展名已改变。在 Windows 2.x 和 Windows 3.x 中,每个 DLL 都只有一个数据段实例,而不管有多少应用程序。在 Windows 32 中,可以将 DLL 标记为共享以导致相同的行为。但是,每个进程的默认设置是拥有 DLL 数据的专用副本。
您可以通过创建 DLL 实现以下目的: ? 将程序划分为可按需加载的单独模块。
? 存储特定于语言或特定于区域的资源。
? 使您自己的应用程序能够使用核心代码库。
? 生成进程内 COM 对象或 ActiveX 控件 (OCX)。
? 将 OLE 对象用作进程内 DLL。这一用法可改进 OLE 链接的性能。
? 使用控制面板扩展或使用某些类型的驱动程序。
要生成 DLL,请使用 DllMain 函数(而不是程序文件)替换 WinMain 函数。
要在 Win16 中导出函数,请将 FAR EXPORT 添加到所有导出的 DLL 函数(在 Win32 中不要求这样做)。许多 32 位编译器提供了函数声明符,例如 __declspec(dllexport) 和 __declspec(dllimport)。这些函数声明符出现在函数声明之前以代替调用。不过,定义必须仅指定 dllexport 属性。

 

相关文章推荐

(转)Activex、OLE、COM、OCX、DLL之间的区别

熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的。在具体介绍它们的关系之间,我们还是先明确组件(Co...

Activex、OLE、COM、OCX、DLL之间的区别(转)

熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的。在具体介绍它们的关系之间,我们还是先明确组件(Co...

Activex、OLE、COM、OCX、DLL之间区别、联系

转自:http://baike.baidu.com/view/393671.htm 概述       .ocx是ocx控件的扩展名,与.exe .dll同属于PE文件。下面说说什么是ocx...

【转】Activex、OLE、COM、OCX、DLL之间有什么区别?

熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的。在具体介绍它们的关系之间,我们还是先明确组件(Co...
  • kker123
  • kker123
  • 2011年07月26日 11:03
  • 274

Activex、OLE、COM、OCX、DLL之间的区别

熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的。在具体介绍它们的关系之间,我们还是先明确组件(Co...
  • dsg333
  • dsg333
  • 2013年06月30日 18:27
  • 523

OLE、ActiveX 、COM和普通DLL的简单理解

COM: COM组件是以WIN32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行代码组成。 COM组件是遵循COM规范编写的 COM组件是一些小的二进制可执行文件 COM组件可以给应用程序...
  • Liekkas
  • Liekkas
  • 2015年04月27日 11:22
  • 991

Activex、OLE、COM、OCX、DLL之间有什么区别?

熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的。在具体介绍它们的关系之间,我们还是先明确组件(Co...

Activex、OLE、COM、OCX、DLL之间有什么区别?

熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是 比较模糊的。在具体介绍它们的关系之间,我们还是先明确组件(C...

DLL 组件(Component) 对象(Object) OLE控件 ActiveX控件 OCX COM

DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源,一般来说,DLL是一种磁盘文件,以.dll、.DRV、.FON、.SYS和许多以.EXE为扩展名的系统文...
  • kanbang
  • kanbang
  • 2014年02月07日 10:01
  • 989

Activex 、OLE、COM、OCX、DLL之间有什么区别

熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的。在具体介绍它们的关系之间,我们还是先明确组件(Co...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OLE、ActiceX、COM、DLL
举报原因:
原因补充:

(最多只允许输入30个字)