您的位置:软件 > 开发者网络 > 开发工具 > 开发专栏 > VC > 正文
COM技术纵横谈
[文章信息]
作者:tsingxiao
时间:2002-05-18
出处:COM集中营
责任编辑:
[文章导读]
PC机自从诞生以来,硬件经历了无数变化,CPU从最初的INTEL 8086到现在PIII满大街都是也只不过十几年......
advertisement
热点推荐
· 专业设计的魅力:精确的定位
· 在金山文字中输入文字
· 认识磁盘
· 小小的精彩Flash:广告作品
· 小小的精彩Flash:过关斩将II
[正文]

1 2  下一页

  一:概述

  PC机自从诞生以来,硬件经历了无数变化,CPU从最初的INTEL 8086到现在PIII满大街都是也只不过十几年。微软的WINDOWS操作系统从最初的1.0版本到现在即将推出WIN2000,一直是桌面系统上装机量最大的OS。 作为软件开发人员,使用着包括Visual Basic,Visual C++,Delphi包括最新的Borland C++ builder等等在内的众多开发环境为WINDOWS开发应用程序。应该说现在的开发条件和若干年以前比已经是大大的进步了。

  如果你开发过16位的WINDOWS程序,你可能知道为了读取一个文件,我们不得不使用一小段汇编来调用DOS例程,或者使用当时WINDOWS尚未公开的函数:_lopen()。在win32环境下,你所要做的全部是调用 : :CreateFile()来获得一个文件句柄,当然如果使用MFC或是OWL之类的东西,你可以更简单的做到。不过一般情况下,程序员仍然不得不从头开始写编写应用程序的每一行代码。

  但这种情况得到了改变:微软提出了C O M(Component Object Model, 中文也可以译作“组件对象模型”)概念,并且在最新的WINDOWS95/98以及WIN NT4中越来越广泛的使用它:我们有理由相信在不久的将来,C O M 将成为构建应用程序最普遍的方法,如果你对此技术有兴趣,不妨参考本文,希望从中你能学到想知道的知识。如果你已经是C O M老手,也欢迎你批评指正,我的email是 singxiao@bigfoot.com

  本文是针对C++程序员写的。在介绍概念的时候,我尽量不把WIN32 API的知识混合进来,以便你能够更清晰的看到C O M的本质。所有的例子都用Microsoft Visual C++5(SP3)编译通过。

  一般的讲,一个应用程序总是由单个的二进制文件组成。在以前,如果这个程序需要做一些改进,就要修改源代码,然后编译,声称新的文件,然后取代原来的文件。现在,我们用一种全新的角度来看问题:把原先一整个的EXE可执行文件,分割成功能不同,但相对独立的几个部分,把他们拼装起来,组成程序,组成软件。在未来程序发布以后,如果意识到需要对他进行修改,只要替换有问题的或是需要升级的组建就可以了。甚至可以做到再不影响程序正常运行的情况下替换其中的部件。如果你熟悉WINDOWS编程,可能会想到:DLL似乎就是你所说的东西:可以动态连接。事实上,COM正是充分利用了Win32 DLL的灵活性才得以真正在Windows平台上实现的。

  这样做有哪些优点呢?首先:用户一般希望能够定制所用的应用程序,而组件技术从本质上讲就是可被定制的,因而用户可以用更能满足他们需要的某个组件来替换原来的那个。其次,由于组件是相对应用程序独立的部件,我们可以在不同的程序中使用同一个组件而不会产生任何问题,软件的可重用性将大大的得到增强。第三,随着网络带宽及其重要性的提高,分布式网络应用程序毫无疑问的成为软件市场上越来越重要的买点。组件价构可以使得开发这类应用程序的过程得以简化。

  那么,COM到底是什么呢?它是一个说明如何建立可动态互变组件的规范。 他定义了一些为保证能互操作,客户(一个术语,指需要某种组件的程序)组件必须遵循的标准,COM规范就是一套为组件架构设置标准的文档形式的规范。COM的发布形式是:以win32动态链接库(DLL)或者可执行文件(EXE)的形式发布的可执行代码组成。

  COM组件是动态连接的,而且COM组件是完全与语言无关的。同时,COM组件可以以二进制的形式发布。COM组件还可以在不妨碍老客户的情况下被升级成新的版本。

  你现在可以认为,COM所能提供的服务有些类似C++中的类。不过类是基于源代码的,COM则不是。不过这里要澄清一些关于COM的错误观点:首先,COM不是一种计算机语言。把COM同某种计算机语言(如C++, VB)相比较是没有意义的。其次,也不要把DLL和COM做比较,因为COM技术正是利用了DLL的动态链接能力才得以实现的,而现在一般观点则认为,利用DLL动态链接能力最佳的方法是COM。当然,COM也不是win32 API那样的一个函数集:它并没有支持或者提供类似MoveWindow这样的函数来对系统进行特定的操作。COM也并不是类似于MFC那样的C++类库。COM给开发人员提供的是一种开发与语言无关的组件库的方法,但COM本身并没有提供任何实现。在一定程度上可以认为COM是系统无关的,software AG组织正在开发一系列COM支持系统,有望在不久的将来,包括从Mac OS,VMS,SCO UNIX到LINUX的操作系统上都将得以实现COM。COM的确有一些具体的实现。COM本身要实现一个称为COM库(COM library)的API,它提供诸如客户对组件的查询,以及组件的注册/反注册等一系列服务,一般来说,COM库由操作系统加以实现,程序员不必关心其实现的细节。总体来看,COM提供了编写组件的一个标准方法。遵循COM标准的组件可以被组合起来以形成应用程序。至于这些组件是谁编写的,是如何实现的并不重要。组件和客户之间通过"接口"来发生联系。

1 2  下一页

·"WAP天极之IT新闻资讯,50万元等你拿"    ·天极WAP之游戏狂图,50万元等你下载


发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容阅读排行榜
  • [配置推荐]4100元高性价比配置
  • 软件频道电脑应用多媒体教程
  • 专业设计的魅力:精确的定位
  • 在金山文字中输入文字
  • 认识磁盘
  • 小小的精彩Flash:广告作品
  • 小小的精彩Flash:过关斩将II
  • 11.19精选 闪客五周年作品展
  • Advertisement

    天极无线
    待机彩图    >>更多
    多彩动画    >>更多
    美妙和弦    >>更多
    天使在唱歌
    壁虎漫步
    PrettyBoy
    LoveLoveLove
    我是你的小小狗
    单身情歌
    十面埋伏
    祝酒歌
    回心转意
    波斯猫
    太委屈
    S.H.E
    潘玮柏
    M2M
    蔡依林
    阿牛
    林志炫
    陈弈迅
    刀郎
    黑龙
    S.H.E
    陶晶莹
    情人玫瑰坊
    音乐风云
    新片速递
    神秘测试
    都市约会
    ·天极彩信天天精彩
    ·图铃梦工厂下载无限!
    ·找寻童真,卡通专题
    ·夏日激情交友社区!
    ·星座运程,预测人生

    CSEEK搜索