`
zhaohaolin
  • 浏览: 1010850 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

VC++ 的MFC 和ATL 及COM 是什么?

 
阅读更多

一、什么是MFC

        微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是WinOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个输助软件开发包,MFC作为与VC++血肉相连的部分(注意C++和VC++的区别:C++是一 种程序设计语言,是一种大家都承认的软件编制的通用规范,而VC++只是一个编译器,或者说是一种编译器+源程序编辑器的 IDE,WS,PlatForm,这跟Pascal和Dephi的关系一个道理,Pascal是Dephi的语言基础,Dephi使用Pascal规范来 进行Win下应用程序的开发和编译,却不同于Basic语言和VB的关系,Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规 范,VB新加的Basic语言要素,如面对对象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言),MFC同 BC++集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC++专配的..
MFC是Win API与C++的结合,API,即微软提供的WinOS下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用 各种各样的第三方(如我是一方,微软是一方,Borland就是第三方)的编程语言来进行对Win OS下应用程序的开发,使这些被开发出来的应用程序能在WinOS下运行,比如VB,VC++,Java,Dehpi编程语言函数本质上全部源于API, 因此用它们开发出来的应用程序都能工作在WinOS的消息机制和绘图里,遵守WinOS作为一个操作系统的内部实现,这其实也是一种必要,微软如果不提供 API,这个世上对Win编程的工作就不会存在,微软的产品就会迅速从时尚变成垃圾,上面说到MFC是微软对API函数的专用C++封装,这种结合一方面 让用户使用微软的专业C++ SDK来进行Win下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多内节程序开发人员在Win下用C++ & MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图,这种结合是以方便为目的的,必定要付出一定代价(这是微软的一向作风),因此就造 成了MFC对类封装中的一定程度的的冗余和迂回,但这是可以接受的..
最后要明白MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关 联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在WinOS(用MFC编写的程序绝大部分都在WinOS中运行) 中实现内部处理的类,如数据库的管理类等,学习中最应花费时间的是消息和设备环境,对C++和MFC的学习中最难的部分是指针,C++面向对像程序设计的 其它部分,如数据类型,流程控制都不难,建议学习数据结构C++版..


二、什么是COM

        所谓COM(Componet Object Model,组件对象模型),是一种说明如何建立可动态互变组件的规范,此规范提供了为保证能够互操作,客户和组件应遵循的一些二进制和网络标准。通过这 种标准将可以在任意两个组件之间进行通信而不用考虑其所处的操作环境是否相同、使用的开发语言是否一致以及是否运行于同一台计算机。
COM的优点?
        首先:用户一般希望能够定制所用的应用程序,而组件技术从本质上讲就是可被定制的,因而用户可以用更能满足他们需要的某个组件来替换原来的那个。其次,由 于组件是相对应用程序独立的部件,我们可以在不同的程序中使用同一个组件而不会产生任何问题,软件的可重用性将大大的得到增强。第三,随着网络带宽及其重 要性的提高,分布式网络应用程序毫无疑问的成为软件市场上越来越重要的买点。组件价构可以使得开发这类应用程序的过程得以简化。

什么是COM+?

         M+并不是COM的简单升级,COM+的底层结构仍然以COM为基础,它几乎包容了COM的所有内容,COM+综合了COM、DCOM和MTS这些技术要 素,它把COM组件软件提升到应用层而不再是底层的软件结构,它通过操作系统的各种支持,使组件对象模型建立在应用层上,把所有组件的底层细节留给操作系 统,因此,COM+与操作系统的结合更加紧密。
      COM+不再局限于COM的组件技术,它更加注重于分布式网络应用的设计和实现。COM+继承了COM几乎全部的优势,同时又避免了COM实现方面的一些 不足,把COM、DCOM和MTS的编程模型结合起来,继承了它们的绝大多数特性,在原有的特性上增加了新的功能。

 COM+的新的优点?

      以下列出COM+的几个主要特性:

          COM+不仅继承了COM所有的优点,而且还增加了一些服务,比如队列服务、负载平衡、内存数据库、事件服务等。

   队列服务对于分布式应用非常有意义,特别是在现在网络速度很慢的情况下,这种机制可以保证应用系统能够可靠地运行。在应用系统包含大量节点但服务器又繁忙的情况下,客户应用程序可以把它们的请求放到队列中,当服务器负载比较轻的时候再处理这些请求;

   又如COM+提供了负载平衡服务,它可以实现动态负载平衡,而且COM+应用程序的负载平衡特性并不需要编写代码来支持,客户程序和组件程序都可以按通常 的方式实现。获得负载平衡特性并不是用程序设计的方式来实现的,而是通过配置实现分布式应用程序的负载平衡,如上所讲的队列服务,其实也反映了一种负载平 衡。

     (1) 真正的异步通讯。COM+底层提供了队列组件服务,这使客户和组件有可能在不同的时间点上协同工作,COM+应用无须增加代码就可以获得这样的特性。

     (2) 事件服务。新的事件机制使事件源和事件接收方实现事件功能更加灵活,利用系统服务简化了事件模型,避免了COM可连接对象机制的琐碎细节。

     (3) 可伸缩性。COM+的可伸缩性来源于多个方面,动态负载平衡以及内存数据库、对象池等系统服务都为COM+的可伸缩性提供了技术基础,COM+的可伸缩性原理上与多层结构的可伸缩特性一致。

     (4) 可管理和可配置性。管理和配置是应用系统开发完成后的行为,在软件维护成本不断增加的今天,COM+应用将有助于软件厂商和用户减少这方面的投入。

     (5) 易于开发。COM+应用开发的复杂性和难易程度将决定COM+的成功与否,虽然COM+开发模型比以前的COM组件开发更为简化,但真正提高开发效率仍需要借助于一些优秀的开发工具。

      COM+标志着Microsoft的组件技术达到了一个新的高度,它不再局限于一台机器上的桌面系统,它把目标指向了更为广阔的企业内部网,甚至 Internet国际互连网络。COM+与多层结构模型以及Windows操作系统为企业应用或Web应用提供了一套完整的解决方案。
 
 
三、什么是ATL

----COM的发展及其局限性

----自从1993年Microsoft首次公布了COM技术以后,Windows平台上的开发模式发生了巨大的变化,以COM为基础的一系列软 件组件化技术将Windows编程带入了组件化时代。广大开发人员在为COM带来的软件组件化趋势欢欣鼓舞的同时,对于COM开发技术的难度和烦琐的细节 也感到极其的不便。COM编程一度被视为一种高不可攀的技术,令人望而却步。开发人员希望能够有一种方便快捷的COM开发工具,提高开发效率,更好地利用 这项技术。

----针对这种情况,Microsoft公司在推出COMSDK以后,为简化COM编程,提高开发效率,采取了许多方案,特别是在 MFC(MicrosoftFoundationClass)中加入了对COM和OLE的支持。但是随着Internet的发展,分布式的组件技术要求 COM组件能够在网络上传输,而又尽量节约宝贵的网络带宽资源。采用MFC开发的COM组件由于种种限制不能很好地满足这种需求,因此Microsoft 在1995年又推出了一种全新的COM开发工具——ATL。

----ATL是ActiveXTemplateLibrary的缩写,它是一套C++模板库。使用ATL能够快速地开发出高效、简洁的代码,同时 对COM组件的开发提供最大限度的代码自动生成以及可视化支持。为了方便使用,从MicrosoftVisualC++5.0版本开 始,Microsoft把ATL集成到VisualC++开发环境中。1998年9月推出的VisualStudio6.0集成了ATL3.0版本。目 前,ATL已经成为Microsoft标准开发工具中的一个重要成员,日益受到C++开发人员的重视。

----ATL究竟给开发人员带来了什么样的益处呢?这要先从ATL产生以前的COM开发方式说起。

----在ATL产生以前,开发COM组件的方法主要有两种:一是使用COMSDK直接开发COM组件,另一种方式是通过MFC提供的COM支持来实现。

----直接使用COMSDK开发COM组件是最基本也是最灵活的方式。通过使用Microsoft提供的开发包,我们可以直接编写COM程序。但 是,这种开发方式的难度和工作量都很大,一方面,要求开发者对于COM的技术原理具有比较深入的了解(虽然对技术本身的深刻理解对使用任何一种工具都是非 常有益的,但对于COM这样一整套复杂的技术而言,在短时间内完全掌握是很难的);另一方面,直接使用COMSDK要求开发人员自己去实现COM应用的每 一个细节,完成大量的重复性工作。这样做的结果是,不仅降低了工作效率,同时也使开发人员不得不把许多精力投入到与应用需求本身无关的技术细节中。虽然这 种开发方式对于某些特殊的应用很有必要,但这种编程方式并不符合组件化程序设计方法所倡导的可重用性,因此,直接采用COMSDK不是一种理想的开发方 式。

----使用MFC提供的COM支持开发COM应用可以说在使用COMSDK基础上提高了自动化程度,缩短了开发时间。MFC采用面向对象的方式将 COM的基本功能封装在若干MFC的C++类中,开发者通过继承这些类得到COM支持功能。为了使派生类方便地获得COM对象的各种特性,MFC中有许多 预定义宏,这些宏的功能主要是实现COM接口的定义和对象的注册等通常在COM对象中要用到的功能。开发者可以使用这些宏来定制COM对象的特性。

----另外,在MFC中还提供对Automation和ActiveXControl的支持,对于这两个方面,VisualC++也提供了相应的AppWizard和ClassWizard支持,这种可视化的工具更加方便了COM应用的开发。

----MFC对COM和OLE的支持确实比手工编写COM程序有了很大的进步。但是MFC对COM的支持还不够完善和彻底,例如对COM接口定义 的IDL语言,MFC并没有任何支持,此外对于近些年来COM和ActiveX技术的新发展MFC也没有提供灵活的支持。这是由MFC设计的基本出发点决 定的。MFC被设计成对Windows平台编程开发的面向对象的封装,自然要涉及Windows编程的方方面面,COM作为Windows平台编程开发的 一个部分也得到MFC的支持,但是MFC对COM的支持是以其全局目标为出发点的,因此对COM的支持必然要服从其全局目标。从这个方面而言,MFC对 COM的支持不能很好地满足开发者的要求。

----随着Internet技术的发展,Microsoft将ActiveX技术作为其网络战略的一个重要组成部分大力推广,然而使用MFC开发 的ActiveXControl,代码冗余量大,即所谓的“肥代码”(FatCode),而且必须要依赖于MFC的运行时刻库才能正确地运行。虽然MFC 的运行时刻库只有部分功能与COM有关,但是由于MFC的继承实现的本质,ActiveXControl必须背负运行时刻库这个沉重的包袱。如果采用静态 连接MFC运行时刻库的方式,这将使ActiveXControl代码过于庞大,在网络上传输时将占据宝贵的网络带宽资源;如果采用动态连接MFC运行时 刻库的方式,这将要求浏览器一方必须具备MFC的运行时刻库支持。总之,MFC对COM技术的支持在网络应用的环境下也显得很不灵活。

后补:

什么是ORM?

对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元 数据,将java程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。这也同时暗示者额外的执行开销;然而,如果 ORM作为一种中间件实现,则会有很多机会做优化,而这些在手写的持久层并不存在。更重要的是用于控制转换的元数据需要提供和管理;但是同样,这些花费要 比维护手写的方案要少;而且就算是遵守ODMG规范的对象数据库依然需要类级别的元数据。

对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是 企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内 存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存 在,主要实现程序对象到关系数据库数据的映射。

面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。

让我们从O/R开始。字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。几乎所有的程序里面,都存在对象和关系数据 库。在业务逻辑层和用户界面层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。

当你开发一个应用程序的时候(不使用O/R Mapping),你可能会写不少数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等。你在DAL中写了很多的方法来读取对象数据,改变状态对象等等任务。而这些代码写起来总是重复的


相关介绍: http://baike.baidu.com/view/197951.htm

分享到:
评论

相关推荐

    VC++模板库ATL参考手册

    2. **COM基础**:ATL是建立在COM基础之上的,手册会解释什么是COM,COM对象的生命周期管理,以及如何通过ATL来创建和使用COM接口。 3. **ATL类和宏**:ATL包含一系列的类和宏,如CComPtr和CComQIPtr用于智能指针...

    VC++MFC编程实例&从MFC设计到MFC 编程

    《VC++ MFC编程实例&从MFC设计到MFC...总的来说,这两本书是学习和提升MFC及VC++编程技能的宝贵资源。通过学习,开发者不仅可以掌握MFC的基本用法,还能了解到如何在实际项目中灵活运用,从而提高开发效率和代码质量。

    VC++之MFC类库中文手册.chm

    《VC++之MFC类库中文手册》是针对微软Visual...总的来说,《VC++之MFC类库中文手册》是学习和精通MFC不可或缺的工具,它将帮助开发者理解和掌握MFC的各种类和功能,从而更好地利用MFC开发高效、稳定的Windows应用程序。

    VC++ 2003 运行时/MFC/ATL库文件和符号文件

    **VC++ 2003 运行时/MFC/ATL库文件和符号文件详解** Visual C++ 2003(也称为VC++ .NET 2003)是微软开发的一款集成开发环境(IDE),用于创建Windows平台上的应用程序。在这款IDE中,MFC(Microsoft Foundation ...

    VC++之MFC类库中文手册

    7. **ActiveX控件和ATL支持**: MFC扩展了对ActiveX控件的支持,而ATL(Active Template Library)则提供了轻量级的COM(Component Object Model)编程接口。 8. **网络编程**: MFC包含如CInternetSession、...

    VC++6.0绿色版(支持MFC以及ATL)

    本绿色版不修改注册表,不需要安装,支持MFC,ATL等常用类库,调试,以及绝大多数原有的功能. 适合初学者,或在公共场所使用 具体使用方法如下: 把压缩包解压到任意文件夹(自己决定) 修改下面配置文件 <你解压的文件夹>\...

    一个VC++编写视频采集ATL控件及C#测试

    【标题】"一个VC++编写视频采集ATL控件及C#测试"涉及的主要知识点是使用Visual C++(VC++)开发视频采集功能,利用Active Template Library(ATL)创建COM控件,并结合DirectShow进行视频流处理。同时,还涵盖了如何在C#...

    VC++之MFC类库中文手册.zip

    这份"VC++之MFC类库中文手册"是一个极其宝贵的资源,它涵盖了MFC的所有类、框架和API,相当于一个详尽的中文版MSDN,对于学习和理解MFC编程至关重要。 **MFC基本概念** 1. **框架类**:MFC中的框架类是Windows编程...

    VC++ MFC类库中文chm手册

    **VC++ MFC类库中文CHM手册** MFC(Microsoft Foundation Classes)是微软提供的一套C++类库,用于简化Windows应用程序开发。这个“VC++ MFC类库中文chm手册”是一个全面的资源,对于使用Visual C++进行MFC编程的...

    VC++MFC编程实例

    VC++不仅支持标准C++,还提供了对C运行时库、ATL(Active Template Library)、MFC等扩展支持。 二、MFC概述 MFC是一组C++类库,它封装了Windows API,提供了一种面向对象的方式来构建Windows应用程序。MFC简化了...

    VC++ MFC功能编辑官方英文文档

    根据文件信息,我们可以挖掘出大量的知识点,涉及Visual C++(VC++)以及Microsoft Foundation Classes(MFC)和Active Template Library(ATL)两大技术领域的核心内容。 首先,我们了解到文件提到的"VC++ MFC功能...

    vc++mfc相关资料

    **VC++ MFC (Microsoft Foundation Classes) 是微软公司推出的一种基于C++的Windows应用程序开发框架。MFC 提供了一种高效、便捷的方式来构建图形用户界面(GUI)应用程序,它将Windows API进行了封装,使得开发者...

    MFC入门及VC++相关知识

    本资料包“MFC入门及VC++相关知识”着重于这两个核心概念的介绍,旨在帮助初学者理解和掌握使用VC++与MFC进行Windows程序设计的基础知识。 首先,让我们深入理解一下MFC。MFC将Windows API封装成了一组类,使得...

    多线程 VC++ MFC SOCKET 编程源代码

    `VC++`是微软的C++编译器和开发环境,它集成了IDE、调试器、版本控制等工具,支持C++标准以及微软特定的扩展,如COM、ATL、MFC等。使用VC++进行开发,开发者可以编写高性能的原生Windows应用程序。 `MFC`库是VC++的...

    VC++ MFC扩展编程实例源码

    **VC++ MFC扩展编程实例源码** 在深入探讨VC++ MFC(Microsoft Foundation Classes)扩展编程之前,我们首先需要理解MFC的本质。MFC是一个C++类库,由微软开发,它为Windows应用程序开发提供了封装,使得程序员可以...

    使用VC++ ATL实现Office的COM插件

    相比于使用MFC(Microsoft Foundation Classes)开发COM,ATL更轻量、高效,适合创建小型、高性能的组件。 三、创建Word COM插件步骤 1. **设置项目**:首先,你需要在VC++环境中创建一个新的ATL工程。选择“ ATL ...

    VC++之MFC类库中文手册(一怀去意).chm

    8. **网络和数据库支持(Network and Database Support)**:MFC还包含对OLE、COM、ATL以及ODBC、DAO等数据库访问技术的支持。 **使用MFC手册的重要性** 这份"VC++之MFC类库中文手册(一怀去意).chm"是学习和开发...

Global site tag (gtag.js) - Google Analytics