COM、MFC、ATL等概念区别

时间:2021-02-12 23:19:52
 

什么是MFC,MFC的基础支持,运行时库,与windows sdk又有什么区别

 

什么是 COM技术,含义是什么,与MFC和windows sdk 又有什么区别

 

什么是ATL,含义是什么,与COM和MFC以及windows sdk 又有什么关系

 

什么是WTL,含义是什么,与之前这几种有什么关系。

 

 

什么是COM? 组件对象模型(component object model)

COM是microsoft组件对象模型(component object model)的缩写。OLE(Object Linking and Embedding,对象连接与嵌入)、DirectX(Direct eXtension微软公司创建的多媒体编程接口,遵循COM)、ActiveX(以前称为OLE 控件或 OCX 控件,WEB支持最好,组件或对象的打包功能)等都由一种技术关联着,那就是COM技术。COM组件的开发定制可以有多种,C++开发的COM组件就是其中一种COM是软件开发组件的一种方法;组件实际上是一些小的二进制可执行程序(一种是com,一种是exe,其它...),它可以给应用程序、操作系统以及其它组件提供一些服务。组件可以在运行时、不重新连接或编译应用程序的情况下被卸载或替换,可以用来定制自己的应用程序和操作系统。COM并不仅限于在windows下使用,它是一种概念,一种方法。其它平台环境也可以使用这种方法开发相应的组件,如:国外的XPCOM这个项目就是一个跨平台的COM项目;在任何操作系统中,开发人员都可以遵守com方法。而Microsoft 很“恰好”地让 VC 产生的对象内存分布和 COM 要求的一样。。。这保证了 COM 在 VC 编译器中的二进制兼容。Unix 下编译器种类繁多,是不是都可以这样做还是个问题。 COM 的本质是二进制兼容,而 C++ 标准不保证二进制兼容。需要知道一点,这个COM的创始好像是microsoft。。。使用同一种语言实现com组件的开发的好处是可以使用一种具体的方式来讲述com规范。COM与OLE的关系就像微积分与物理等的关系一样,COM是基础方法过程,OLE是具体结论可以直接使用

 

 

 

什么是MFC?微软基础类(Microsoft Foundation Classes)

MFC是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎。VC++是windows下开发人员使用的专业C++SDK(standard software Develop Kit 专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包。注意C++与VC的区别:C++是一种程序设计语言,是一种大家都承认的软件编制的同样规范;而VC++只是一个编译器,或者说是一个集成开发环境,可以使用windows API进行开发(vc++自己的开发库应该是win32 sdk);而MFC是对windows API的封装,方便开发使用而已。MFC的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代整个Win32 程序设计。

如何学习MFC

MFC不只是一个界面开发系统,而是一些windows中内部处理的类,如数据库管理类等。学习中最花时间的是消息和设备环境。学习VC最主要就是学MFC,大约有100多个类,最常用的也就二三十个,像英语单词一样将这些常用类搞懂,通过看帮助、看例子、动手练习来学习,并不是一味的死记硬背,将常用的类和其中的方法记下来随时看,随时学习,是个很好的突击方法。参考:百度百科:MFC

 

 

什么是ATL?活动模板库(Active Template Library)

COM开发很繁琐和复杂,为了更好的支持COM的开发,而出现的一种开发工具;虽然MFC中也封装了对ActiveX和OLE的支持,但是在网络传输方面需要节省网络资源,而MFC又需要很大的运行时刻库的支持(如果是静态连接那么产生很大的文件,不利于网络传输;如果使用动态连接,那么就需要客户端即使用端安装了运行时刻库),另一方面MFC被设计的基本出发点就是被设计成对windows平台编程开发的面向对象的开发,自然要设计windows的方方面面,而com只是其全局的一部分。ATL的基本目标是时COM应用开发尽可能的自动化,这个目标就决定了ATL只面向COM编程的支持。ATL自动生成的代码简洁高效。ATL设计到得技术有:COM技术、c++模板技术、C++多继承技术。ATL也可以和MFC联合使用,不过就失去了简洁的特性。

 

什么是WTL?Windows Template Library       windows活动模板库

传闻基于ATL对win32的封装,微软内部使用未公开,为ATL书写的UI代码,但是代码常常都是纯win32 GDI代码;是一个完整的支持窗口的框架。不如MFC完善,但比它小巧,不依赖MFC的DLL

 

参考百度百科等