- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
组件技术的本质COM理论知识
组件技术的本质COM理论知识
也许您对这个标题有些疑问,组件技术的本质是COM吗?
申明一点,此处所说的组件技术都是就windows平台而言的,那么在windows平台下,组
件的本质是什么?无可非议,COM!虽然,DCOM、MTS、COM+、甚至Not Net都已经常的被
挂在了程序员的嘴边,可是本质是什么?就是COM。暂且不谈我为何要这样说,或许在下
边的阐述中,您就会对这个问题自然而然的知道答案。
在介绍COM(Component Object Model ,组件对象模型)的时候,我们会省略一些细节,因
为我要可以将COM的很多细节都写了出来的话,我想我们其码要谈很长时间,再者,作者
在此也不敢说自己已经可以完全的驾驭COM。但会尽力的在本篇文章和以后的文章中对CO
M作一个多方位的介绍,力争看过文章的朋友都可以对COM有一个明确的认识,并且可以
独立的完成COM组件的编写。让我们继续。
如上图所示,它就是一个完整的COM组件图,其实可以扩展到任何一个组件中,它们的关
系,也如上图所示,包含于被包含的关系。其中,CoClass是正真的封装接口的部分,
我们根据上图所示进行一步一步的分析,实际上,每一个Coclass都可以是一个COM对象
,而每个CoClass又可以实现多个Interface,Interface在之前的文章中已经给以了介绍
,那么我们此处标识的COM接口和Interface有什么区别呢?在一定的程度上而言,我们
所标识的COM接口和Interface可以认为是一个概念,只是此处为了更能明确的划分出它
们的每一个细节才这样做的,希望看到这篇文章的朋友不要混淆。一位朋友说的相当好
,我们所谓的OOP就是源码级上将用户的操作上进行了一定的规范,而组件是从底层,二
进制上对用户的操作进行了一定的规范,所以组件才能有抹杀语言的区别!但无论是作
为一个小型的COM组件还是一个大型的COM组件,它都要遵守COM规范来编写,COM组件是
以Win32动态连接库(DLL)或是以可拨行文件(Exe)的形式而存在,每一个COM组件都是一
些二进制可执行文件。作为一个组件,必须要作到以下的几点:
它必须以给其它的客户端提供服务的形式而存在,当然,它也可以获取其它的组件的服
务。
COM组件可以动态的插入或卸出应用
COM组件必须是动态链接的
COM组件必须隐藏(封装)其内部实现细节
COM组件必须将其实现的语言隐藏
COM组件必须以二进制的形式发布
COM组件必须可以在不妨碍已有用户的情况下被升级
COM组件可以透明的在网络上被重新分配位置
COM组件按照一种标准的方式来宣布它们的存在
……
它既然是以提供服务的形式而存在,并且是完全可以脱离物理机的限制,那么它是如何
被各个客户端所认识的呢?与接口类似,每个COM对象也有一个128位的GUID来标识,称
为CLSID(Class Identifier,类标识符或类ID),并且,它也是全球唯一的,可以结合接
口GUID进行理解。根据COM组件识意图,我们可以看出一个COM组件可以包含多个COM对象
,而这些COM对象是如何联系的呢?我们是否可以通过对象A而去访问对象B呢?从理论上
而言,是不应该的,甚至一个COM组件只包含一个COM对象,COM对象之间是互不相关的,
但是在实际的操作中可以吗?当然可以,你会在后边看到相关的实例的。每一个COM对象
作为一个黑盒子,它的内部都有什么呢?就是对接口的实现!通过实现接口来封装逻辑
规则,这也是COM的本质!所以,在COM中,接口就是一切。我们可以说脱离接口的COM将
不会存在,而没有实现接口的COM是没有任何意义的,对于我们来说,COM组件、对象就
是一组接口的集合,只可以通过接口和COM打交道,没有任何接口访问权限的用户,其CO
M组件对它是没有丝毫的用处的。这就是封装的体现。而在上两篇文章中我们介绍了接口
,此处将不花费过多的笔墨进行阐述。
OK,在你对COM组件有了这些认识之后,我们现在就可以进行COM组件的进一步分步的讨
论,从其最细节的地方来进行讨论。(对于COM其它的一些知识,如:IMarshal,代理、
存根DLL等相关知识会在以后的文章进行专门的介绍)
COM对象 (COM Object)
COM对象?如何理解COM对象?他有什么东西?
(在此处,仅以Object Pascal对本篇文章进行阐述)。COM对象是接口的集合没错,但是C
OM对象是如何实现、驾驭这些接口的呢?其实,我们可以在ComObj单元中看到COM的很多
相关类,此处我们将以TComObject为例,以下代码摘自Delphi6
TComObject = class(TObject, IUnknown, ISupp
您可能关注的文档
- 法国人的口头禅大全.doc
- 法国凡尔赛建筑学院.doc
- 法国总统萨科奇清华大学演讲法语全文.doc
- 法国语言与文化12课.doc
- 法国高考作文题.doc
- 法语-14.doc
- 法语20081007.doc
- 法语2修订本答案9.doc
- 法语-=语法单词.doc
- 法语中职位的表达frenchdiy.doc
- DB44_T 2611-2025 城市排水管网有毒有害气体监测与风险分级管理技术标准.pdf
- DB44_T 2612-2025 竞赛类科普活动策划与实施服务规范.pdf
- DB43_T 2947-2024 烟草种子质量控制规程.pdf
- DB37_T 4836-2025 煤矿风量实时监测技术要求.pdf
- 叉车防撞系统,全球前22强生产商排名及市场份额(by QYResearch).docx
- 超滤膜,全球前18强生产商排名及市场份额(by QYResearch).docx
- DB62T 4172-2020 玉米品种 酒623规范.pdf
- DB62T 4160-2020 在用真空绝热深冷压力容器综合性能在线检测方法.pdf
- DB62T 4164-2020 辣椒品种 酒椒1号.pdf
- DB62T 4133-2020 公路隧道地质超前预报机械能无损探测技术规程.pdf
文档评论(0)