`
ladymaidu
  • 浏览: 679774 次
文章分类
社区版块
存档分类
最新评论

重新认识COM的优点

 
阅读更多

作者:朱金灿
来源:http://blog.csdn.net/clever101/


重新看了潘爱民的《COM原理与应用》,觉得书中对COM的优点讲述得并不全面,或者说并没有把COM的最突出的优点讲出来。


比如该书的第一章 1.1.2 组件的产生 提到:


在计算机软件发展的早期,一个应用系统往往是一个单独的应用程序。应用越复杂,程序就越庞大,系统开发的难度也就越大。而且,一旦系统的某个版本完成以后,在下个版本出来之前,应用程序不会再有所改变。而对于庞大的程序来讲,更新版本的周期很长,在两个版本之间,如果由于操作系统发生了变化,或者硬件平台有了变化,则应用系统就很难适应这样的变化。所以这类单体应用程序已经不能满足计算机软硬件的发展需要。从软件模型角度来考虑,一个很自然的想法就是把一个庞大的应用程序分成多个模块,每一个模块保持一定的功能独立性,在协同工作时,通过相互之间的接口完成实际的任务。我们把每一个这样的模块称为组件,一个设计良好的应用系统往往被切分成一些组件,这些组件可以单独开发,单独编译,甚至单独调试和测试。当所有的组件开发完成后,把它们组合在一起就得到了完整的应用系统。当系统的外界软硬件环境发生变化或者用户的需求有所更改时,并不需要对所有的组件进行修改,而只需对受影响的组件进行修改,然后重新组合得到新的升级软件。......


在这里作者把COM的产生归结于软件架构的需要(比如升级的需要)。如果单论这点,采用其它方式也能做到。比如书中提到的这种软件升级的办法,如果采用插件式架构,定义好接口协议,采用动态加载动态库的方式,一样可以实现这种灵活的软件升级。


实际上我认为COM对于软件开发而言的最大优点是语言无关性 。所谓的语言无关性,就是不管实现COM组件的语言是哪种,它都可以很容易被支持COM规范的其它语言开发的客户端程序所调用。COM的这种特性毫无疑问将大大提高软件开发的效率,因为这可以实现不同语言背景的开发人员的混合开发,具体就是在一个项目中可以使用多种开发语言;以COM形式出现的SDK可以供多种语言进行二次开发。


可能你要说C语言的API不也可以供多种语言调用吗?COM的这种语言无关性比起C API的优势在哪里呢?首先C API需要标准化,需要按照统一的调用方式进行处理。其次COM 组件比起C API更有层次感,因为C API模块中各个函数是平等的,比如Windows API的几百个函数,用户很难找到自己需要的函数,而COM不一样,它可以把相关的API组合成独立的模块。打个通俗的比如就是你的D盘有上百个文件,大致分为三种:pdf格式的电子书、mp3格式的音频文件和rmvb格式的视频文件,如果让你找一本电子书,你得首先排除很多音频文件和视频文件。如果你建三个文件夹来放这三类文件:book--放pdf格式的电子书、music--放mp3格式的音频文件和movie--放rmvb格式的视频文件,那么找起单独的文件就方便多了。COM正起这个分类作用。


理解了COM的语言无关性,就很容易理解为什么需要COM库和COM的idl文件等。因为"计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决",COM库和idl文件实质就是沟通各种开发语言、服务端和客户端以及支持COM规范的中间层。


从这个角度看,产生COM的主要原因应该是软件开发的必然要求以及计算环境的变化(网络的兴起以及分布式计算的出现)。


参考文献:



[1] 潘爱民. COM原理与应用.北京:清华大学出版社,1999.



分享到:
评论

相关推荐

    光纤通信发展中的一些规律认识(Ⅱ)

    20世纪70年代以来, 光纤通信以其大的通信带宽、低损耗、长距离传输、高的比特成本效率等独特优点, 力压群芳, 成为整个通信领域的核心并强力推动了整个信息领域的发展。在整个光纤通信发展过程中可以总结出一些规律性...

    光纤通信发展中的某些规律性认识(I)

    20世纪70年代以来,光纤通信以其大的通信带宽、低损耗、长距离传输、高的比特成本效率等独特优点,力压群芳,成为整个通信领域的核心并强力推动了整个信息领域的发展。在整个光纤通信发展过程中可以总结出一些规律性...

    企事业人事管理系统毕业论文

    随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对人事信息进行管理,具有着手工管理所无法...

    Implicit Neural Representation in Medical Imaging: A Comparative

    认识到INR在这些领域之外的潜力,本综述旨在全面介绍INR模型在医学成像领域的应用。在医学环境中,存在许多具有挑战性和不适定性的问题,使INR成为一种吸引人的解决方案。 本综述探讨了INR在各种医学成像任务中的...

    Python(面向对象编程语言) v3.4.0.zip

    Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。 易学————就如同你即将看到的一样,Python极其容易上手。前面已经提到了,Python有极其简单的语法。 免费、开源...

    Swift语言快速入门教程

    由于Swift出现得晚,所以她拥有了目前世界几乎所有编程语言的优点,而没有目前世界所有编程语言的缺点,Swift她真的太漂亮了。下面我们开始一步一步认识她。 运行速度 从苹果官方所给出的数据来看,Objective-C比...

    教师信息管理系统课程设计new.doc

    随着科学技术的不断 发展,计算机科学日益成熟,其强大的计算功能已经被人们深刻地认识到,计算机发挥 着越来越重要的作用。作为计算机应用的一部分,使用计算机对教师信息进行管理,具 有人工方式所无法比拟的优越...

    cad插件

    搞模具不认识他,我觉得可惜。搞模具的可以去单独下“载燕秀工具箱”用) 2. 源泉建筑: YQArch (源泉建筑) 版权属于: Walter Lam & Mai.c.y Email: bigd99◎126.com, h2o99◎21cn.com QQ: 854607353, 575825448 ...

    WinTC安装程序.rar

    对于C语言的教学,使用该软件的主要优点有: (1) 由于Win-TC是Windows程序,所以在其中进行鼠标操作、程序段的复制、中文输入输出等功能变得非常方便。 (2) 支持字体大小的调整和C程序中各种关键字符的变色显示...

    智能电网行业深度研究报告-坚强的中国式智能电网将成电网投资 新方向

    有别于大众的认识:我们认为智能电网的优点主要有:(一)减少电网固定资 产投资支出。(二)减少电网运行费用。(三)提高供电可靠性。(四)提高 运营和资产管理水平。对于中国而言,建设以坚强可靠、经济高效、清洁环保、 ...

    易语言 v4.13 黑月专用特别版

     5、黑月的Dll可以使用类似其它语言DLLMAIN入口函数(黑月为“Dll入口函数”),可以通过Dll的模块句柄访问Dll的PE资源、注入进程、多线程应用等等优点。  6、黑月可以突破易语言自身的限制,实现对__cdecl调用...

    快乐单词

    对自己的水平有清醒的认识对于采取什么样的学习策略是至关重要的。这也会增加自己学习的动力。HappyWord的词汇量统计功能可以让你马上精确知道你现在的词汇量。HappyWord中单词的级别数越小,你对它的熟悉程度就越高...

    MFC Windows程序设计(第2版修订版)--源代码

     要理解如何利用mfc库中提供的成千上万的预编译、预测试的代码的优点,本书——及其作者——将是您独一无二的选择。 作译者 本书提供作译者介绍  Jeff Prosise是一位作者、教员和讲师,他以Windows编程和教授...

    MFC Windows程序设计(第2版修订版)--详细书签版2卷

     要理解如何利用mfc库中提供的成千上万的预编译、预测试的代码的优点,本书——及其作者——将是您独一无二的选择。 作译者 本书提供作译者介绍  Jeff Prosise是一位作者、教员和讲师,他以Windows编程和教授...

    MFC Windows程序设计(第2版修订版)--详细书签版1卷

     要理解如何利用mfc库中提供的成千上万的预编译、预测试的代码的优点,本书——及其作者——将是您独一无二的选择。 作译者 本书提供作译者介绍  Jeff Prosise是一位作者、教员和讲师,他以Windows编程和教授...

    Oracle WebLogic Server开发权威指南

    我们会进而解释每一个可选方案的优点,以及应用这种方案的场合。 我们不仅要让你理解有哪些方法可以完成任务,还要让你理解应该如何完成任务。 最后,本书构建并讲解的主要示例应用程序是一个真实复杂的应用程序,...

    域名服务器.doc

    计算机在网络上进行通讯时,只能识别如"201.51.0.73"之类的IP地址,而不能认识 域名。但是,当打开浏览器,在地址栏中输入域名后,就能看到所需要的页面。这是因 为,有一个叫"DNS服务器"的计算机自动把我们的域名...

    软PLC技术调研报告.pptx

    20世纪90年代后期,人们逐渐认识到,传统PLC(本文简称硬PLC)自身存在着这样那样的缺点:难以构建开放的硬件体系结构;工作人员必须经过较长时间的专业培训才能掌握某一种产品的编程方法;传统PLC的生产被几家厂商...

    asp学习相关资料大全

    随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。目前,学校学生管理是教务管理中的一个极为重要的环节,它是整个管理的核心和基础...

Global site tag (gtag.js) - Google Analytics