博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[COM/ATL]组件、对象、MFC、ATL的区别
阅读量:7119 次
发布时间:2019-06-28

本文共 1744 字,大约阅读时间需要 5 分钟。

组件(Component)和对象(Object)之间的区别

先明确组件(Component)和对象(Object)之间的区别。组件是一个可重用的模块,它是由一 组处理过程、数据封装和用户接口组成的业务对象(Rules Object)。组件看起来像对象,但不符合对象的学术定义。它们的主要区别是: 

 

  1. 组件可以在另一个称为容器(有时也称为承载者或宿主)的应用程序中使用,也可以作为独立过程使用; 
  2. 组件可以由一个类构成,也可以由多个类组成,或者是一个完整的应用程序; 
  3. 组件为模块重用,而对象为代码重用。现在,比较流行的组件模型有COMComponent Objiect Module,对象组件模型)/DCOM( Distributed COM,分布式对象组件模型)和CORBACommon Object Request Broker Architecture,公共对象请求代理体系结构)。到这里,已经出现了与本文相关的主题COM,而CORBA与本文无关,就不作介绍。 

 

MFCATL之间的不同

目前MFCATL代表了两种框架,分别面向不同类型的基于Windows的开发。

 

  • MFC代表了创建独立的Windows应用的一种简单、一致的方法;ATL提供了一种框架来实现创建COM客户机和服务器所必须的样板文件代码。
  • ATL则不同于MFC,它完全面向COM组件,其技术路线也不同于MFCMFC使用的是C++中的继承、封装、嵌套等常规技术,而ATL使用了C++中模板、多继承等高级技术,甚至还用到了STL。所以学习和使用ATL要求我们必须熟悉这些C++高级特性。

 

另一方面,ATL结构完全针对COM中的诸多规范,这就要求使用人员必须非常了解COM规范,才有可能真正把ATL用好。

什么是ATL

ATL(动态模板库)ActiveX Template Library 的缩写,它是一套C++模板库。基本目标就是使COM应用开发尽可能地自动化

ATLActiveX Template Library 的缩写,它是一套C++模板库。使用ATL能够快速地开发出高效、简洁的代码(Effective and Slim code),同时对COM组件的开发提供最大限度的代码自动生成以及可视化支持。为了方便使用,从Microsoft Visual C++ 5.0版本开始,MicrosoftATL集成到Visual C++开发环境中。19989月推出的Visual Studio 6.0 集成了ATL 3.0版本。目前,ATL已经成为Microsoft标准开发工具中的一个重要成员,日益受到C++开发人员的重视。 

 

  1. ATL的基本目标就是使COM应用开发尽可能地自动化,这个基本目标就决定了ATL只面向COM开发提供支持。目标的明确使ATLCOM技术的支持达到淋漓尽致的地步。对COM开发的任何一个环节和过程,ATL都提供支持,并将与COM开发相关的众多工具集成到一个统一的编程环境中。对于COM/ActiveX的各种应用,ATL也都提供了完善的Wizard支持。所有这些都极大地方便了开发者的使用,使开发者能够把注意力集中在与应用本身相关的逻辑上。
  2. ATL因其采用了特定的基本实现技术,摆脱了大量冗余代码,使用ATL开发出来的COM应用的代码简练高效,即所谓的“Slim Code”ATL在实现上尽可能采用优化技术,甚至在其内部提供了所有C/C++开发的程序所必须具有的C启动代码的替代部分。同时ATL产生的代码在运行时不需要依赖于类似MFC程序所需要的庞大的代码模块,包含在最终模块中的功能是用户认为最基本和最必须的。这些措施使采用ATL开发的COM组件(包括ActiveX Control)可以在网络环境下实现应用的分布式组件结构。
  3. ATL的各个版本对Microsoft的基于COM的各种新的组件技术如MTSASP等都有很好的支持,ATL对新技术的反应速度大大快于MFCATL已经成为Microsoft支持COM应用开发的主要开发工具,因此COM技术方面的新进展在很短的时间内都会在ATL中得到反映。这使开发者使用ATL进行COM编程可以得到直接使用COM SDK编程同样的灵活性和强大的功能。 

 

转载地址:http://llnel.baihongyu.com/

你可能感兴趣的文章
AsyncTask更新UI线程的基本原理
查看>>
java泛型
查看>>
ceph集群部署
查看>>
java编码问题汇总
查看>>
HSRP与VRRP以及GLBP区别
查看>>
yum安装Apache Web Server后各个文件存放位置
查看>>
7个极具杀伤性的Linux命令
查看>>
jxl操作excel样式设置
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
从文本界面安装RHEL5操作系统详解
查看>>
表格添加删除修改
查看>>
高并发生成订单号
查看>>
为什么指定了坐标却找不到资源?
查看>>
Xcode中四种build for 的区别
查看>>
bash:yum:command not found 解决办法
查看>>
centos7.3二进制安装mariadb10.2.8
查看>>
通过命令行创建MAVEN多模块项目
查看>>
spark-env.sh配置
查看>>
ALERT日志中常见监听错误:ORA-3136错误的排查
查看>>