29
2012
02

COM、ATL的一些基本概念

Com、ATL编程过程中经常遇到很多概念,初学者经常会被这些概念弄的晕头转向,我在学习过程中把一些主要的名词解释记录如下:

活动模板库 (ATL) 是一套基于模板的 C++ 类,使您可以创建小型、快速的组件对象模型 (COM) 对象。它对主要的 COM 功能具有特殊支持,这些功能包括常用实现、双重接口、标准 COM 枚举数接口、连接点、分开的接口和 ActiveX 控件。果需要做大量的 ATL 编程工作,则需要了解有关属性的更多内容。属性是 Visual C++ .NET 中的一项新功能,旨在简化 COM 编程。有关更多信息,请参见属性化编程

源文档 <http://msdn.microsoft.com/zh-cn/library/cc438630(v=VS.71).aspx>

ATL Server 是一组本机 C++ 类,开发人员可用它来创建 Web 应用程序、XML Web services 以及其他服务器应用程序。这些类中有许多还可以用在作为 ATL、MFC 或 Windows 项目生成的客户端应用程序或组件中。

源文档 <http://msdn.microsoft.com/zh-cn/library/hs71b4xz(v=VS.71).aspx>

COM:微软组件对象模型,是ActiveX和OLE的基础。
ATL:Active Template Library,是开发COM和ActiveX的类库。
ActiveX:COM的一种,COM对象实现IDispatch一般可以称之为ActiveX,此外ActiveX一般具有界面。
OLE:最初是对象链接和嵌入 (Object Linking and Embedding) 的首字母缩写词,但现在被称为 OLE。OLE 中与链接和嵌入无关的部分现在已成为 Active 技术的一部分。

IDL全称:Interface Description Language ,接口描述语言

源文档 <http://topic.csdn.net/t/20050128/10/3760035.html>

OLE不仅是桌面应用程序集成,而且还定义和实现了一种允许应用程序作为软件“对象”(数据集合和操作数据的函数)彼此进行“连接”的机制,这种连接机制和协议称为部件对象模型(Component Object Model),简称COM。OLE可以用来创建复合文档,复合文档包含了创建于不同源应用程序,有着不同类型的数据,因此它可以把文字、声音、图像、表格、应用程序等组合在一起。

源文档 <http://baike.baidu.com/view/118545.htm>

类型库:

IDL:为了是的应用程序提供的接口可以让更多人可以使用,为了使任意语言的程序员能彼此理解对方,理解对方的API接口(DOM模型的对象树),就需要有统一的规范。我们需要借助一种中间语言对接口进行描述,这就是接口描述语言(IDL)的由来。

那么类型库(TypeLib)又是什么呢?有人说,类型库(TypeLib)是IDL编译后的结果,IDL是基于纯文本的,可以方便人们阅读,而类型库(TypeLib)是二进制的,方便机器处理。

这么说当然没有错。但是并没有解释类型库(TypeLib)存在的价值。

我个人认为,类型库(TypeLib)最重要的作用是充当了元信息(Meta)的作用,你可以认为这是一种规范化的RTTI。从此意义上来讲,我们不难明白,为什么MS认为.NET是COM的延续 —— 类型库(TypeLib)所能够描述的元信息(Meta)仍然不够丰富,语言之间的壁垒仍然存在。

源文档 <http://www.builder.com.cn/2008/0111/704246.shtml>

类型库中的内容同C++头文件中的内容是相同的,它实际上是IDL文件的一个编译版本,并且可以用编程的方法来访问。类型库不是一个与语言无关的需要被分析的文本文件,而是一个二进制文件。自动化库为创建和读取此二进制文件提供了一些标准的组件。《COM技术内幕P243》

« 上一篇

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。