WEB开发网
开发学院软件开发VC 用ATL建立轻量级的COM对象 阅读

用ATL建立轻量级的COM对象

 2006-07-21 11:44:40 来源:WEB开发网   
核心提示:本文假设你熟悉C++和COM,摘要:ATL——活动模板库(The Active Template Library),用ATL建立轻量级的COM对象,其设计旨在让人们用C++方便灵活地开发COM对象,ATL本身相当小巧灵活,它假设你用标准的C++库进行这些处理;不支持ODBC—&mda

本文假设你熟悉C++和COM。

摘要:

ATL——活动模板库(The Active Template Library),其设计旨在让人们用C++方便灵活地开发COM对象。ATL本身相当小巧灵活,这是它最大的优点。用它可以创建轻量级的,自包含的,可复用的二进制代码,不用任何附加的运行时DLLs支持。

由于COM技术良好的口碑,越来越多的程序员已经走进或正在走进COM的编程世界。它就像盛夏里的冰镇啤酒,从来不会让你失望。可惜作为一个C++程序员来说,C++从不与我分享COM的极致以及我对COM的情有独钟。

C++与COM之间若即若离,和平共处,一次又一次在每个对象中用同样简洁的几行代码实现IUnknown。我敢肯定将来C++编译器和链接器会实现C++对象和COM对象之间自然 的无意识的对应和映射,目前这个环境只存在于实验室中,因此它肯定不是一个你我今天可以购买的产品。眼下可得到的最接近这个环境的东西就是活动模板库——ATL。

为什么使用ATL?

ATL是在单层(single-tier)应用逐渐过时,分布式应用逐渐成为主流这样一个环境中诞生的, 它最初的版本是在四个C++头文件中,其中有一个还是空的。它所形成的出色的构架专门用于开发现代分布式应用所需的轻量级COM组件。作为一个模块化的标准组件,ATL不像MFC有厚重的基础结构,省时好用的库使得成百上千的程序员一次又一次轻松实现IUnknown 和IClassFactory。

ATL的构架并不打算包罗万象,无所不能。其第一个版本对实现IUnknown,IClassFactory,IDispatch,IconnectionPointContainer及COM枚举提供非常 到位的支持。第二个版本除了可以编写ActiveX控件外,还对最初的第一个版本中ATL类进行了增强。ATL不提供集合(collections)和串(strings)的处理 ,它假设你用标准的C++库进行这些处理;不支持ODBC——这个世界正在转移到基于COM的不需要包装的数据存取方式;不支持WinSock打包类--sockets本身也是新的东西;ATL也不支持完整的Win32 API打包类——ATL2.0的实现机制提供了对话框和WndProcs支持。此外ATL中没有MFC中的文档/视图模型。取而代之的是ATL那更具伸缩性和灵活 性的通过COM接口(如ActiveX控件)与基于UI的对象之间的沟通模式。

1 2  下一页

Tags:ATL 建立 轻量级

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接