您的位置: 首页 > 计算机技术 > 应用程序 > COM概述
视窗任务管理器开发原理与实现 回到列表 制作集成sp4的 win2k 安装光盘
 COM概述

作者:陆其明 时间: 2003-07-24 文档类型:原创 来自:

随着计算机网络的飞速发展,软件的应用环境变得更加广阔;与此同时,软件的设计难度也在提高。为适应这种分布式软件应用环境,组件化程序设计思想迅速地发展起来。组件化程序设计思想,即复杂的应用程序被设计成一些小的、功能单一的组件模块,这些组件模块可以运行在同一太机器上,也可以运行在不同的机器上,甚至机器的运行环境也可以不同。

为此,OMG (Object Management Group,对象管理组织)提出了CORBA (Common Object Request Breaker Architecture,公共对象请求中介体系结构),而微软提出了COM (Component Object Model,组件对象模型)标准。目前,CORBA模型主要应用于UNIX操作系统平台上,而COM主要应用于Microsoft Windows操作系统平台上。

COM的特性:语言无关性、进程透明性、可重用性。
1. 语言无关性:COM是二进制代码级的标准。COM规范的定义不依赖于任何特定的语言。不同语言开发的COM对象可以交互、共享;而面向对象编程(OOP, Object-oriented Programming)语言定义的对象,只能在同种语言中被重用。实际上,可以使用OOP编程技术来开发COM组件,这两种技术是互补的。所有编程语言中,与COM规范最贴近的要数C++,所以,要想深刻理解COM,一定要有C++编程基础。

2. 进程透明性:COM提供的服务组件对象在实现时有两种进程模型:进程内对象和进程外对象。前者通常以DLL的形式,在客户进程空间中运行;后者通常以EXE的形式,运行在同一机器的另一个进程空间中,或远程机器的一个进程空间中(此时,COM对象也可能是以DLL形式提供服务,而远程机为其创建一个代理进程)。虽然COM对象有以上几种不同的进程模型,但这些区别对于客户程序来说是透明的。客户程序只要遵照COM规范操作COM对象即可,完全不必理会COM对象的进程模型。然而,我们在开发COM组件时,还是要慎重选择进程模型的。一般来说,进程内模型效率高一点,但组件如果不稳定会危及客户进程;进程外模型稳定性好,但运行时的系统开销比较大,效率相对低一点。

3. 可重用性:COM对象的可重用性与一般的面向对象语言实现的对象的重用过程是不同的。COM对象的重用性建立在对象的行为方式上,而不是具体的实现上。COM有两种机制实现对象的重用:包容和聚合。假设A为外部对象,B为内部对象。包容方式,即A实现了B上的所有接口方法,而在实际接口方法调用时,A只是简单地调用B相应的接口方法;而聚合方式,A不实现B的接口,而是把B的接口直接暴露给客户,但A保证客户不会知道有内部对象B的存在。

COM对象与C++对象的比较:
1. COM对象对对象上的数据实现完全封装,外部如果想访问对象的数据,必须通过COM对象提供的接口方法。而C++对象的数据有可能被外部直接访问。C++语言对类的成员进行了访问控制,public成员可以在对象外部直接访问。

2. COM对象的可重用性表现在COM对象的包容和聚合,一个对象可以完全使用另一个对象的所有功能;而C++对象的可重用表现在C++类的继承,派生类可以访问其父类的非私有属性、调用非私有成员函数。虽然C++和COM的重用性机制不同,但我们可以把这两种技术有机结合起来:在源代码级使用C++的类重用性,在组件一级使用COM的重用性。

3. 多态性使得客户程序可以通过统一的方法,来处理不同的对象。C++对象通过虚函数实现多态性,而COM对象的多态性通过接口来体现。

COM对象通过CLSID(一个128位的数串,如{54BB7788-0008-7789-ABAB-112233445566},也可以称为UUID或GUID)来唯一标示。我们通过这个CLSID,就可以创建对应的COM对象(调用函数CoCreateInstance)。CLSID可以通过工具UUIDGen.exe或GUIDGen.exe来随机产生。GUID不仅可以用来标示COM对象,也可以用来标示COM对象上实现的各个接口(QueryInterface调用时需要这个接口的GUID)。

出处:
责任编辑:ImHow

作者文章
COM概述
关键字搜索 常规搜索 推荐文档
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
Windows7优化调整实用小技巧十则
关于国内Windows 7下载的一些提醒
Windows 7安全模式下修复系统故障
如何防止电脑被黑客入侵
syssafe病毒抗争记
浅谈手工杀毒
L2TP预共享密钥解决内网VPN连接问题
浅谈移动硬盘的数据安全问题
Windows组策略之软件限制策略
特殊文件防止闪存为电脑带来病毒

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2