- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中间件技术原理与应用_3
核心概念 COM组件:具有一定逻辑功能的可执行代码,是组成应用程序的构件。 COM对象:类似C++,每一个COM对象是一个特定类的实例,支持一个或多个接口。 COM接口:是一组逻辑上相关的函数集合,即接口成员函数,它提供给客户各种形式的服务,实现各种功能,是组件与外界交互的通道。 COM组件客户:组件的调用者,是应用程序中直接与用户交互的界面和调用组件的程序框架。 组件服务器:通过若干个COM对象来实现应用程序所需的功能。 COM技术的体系结构 COM基础结构 COM技术的体系结构 COM客户与组件服务器之间的交互过程 3.3 COM技术中的接口(续) IUnknown接口 COM定义的每一个接口都必须从IUnknown接口继承而来。 IUnknown接口具有生存期控制和接口查询功能。 QueryInterface、AddRef和Release,共同完成接口的自管理任务。 QueryInterface函数用于查询COM对象的其他接口指针,实现接口查询功能。 函数AddRef和Release用于对引用计数进行操作,从而控制对象的生存周期。 3.3 COM技术中的接口(续) 引用计数 COM采用“引用计数”技术来解决内存管理的问题,它可以有效地控制对象的生存周期。 每一个COM对象都记录了一个称为“引用计数”的数值,该数值的含义为有多少个有效指针在引用该COM对象。 当客户得到了一个指向该对象的接口指针时,引用计数值增1,用完后,引用计数减1。 IUnknown的接口成员函数AddRef和Release分别完成引用计数的增1和减1操作。 3.3 COM技术中的接口(续) 实现引用计数 按照COM规范,一个COM组件可以实现多个COM对象,并且每个COM对象又可以支持多个COM接口,这种层次结构为实现引用计数提供了多种选择方案。 ⑴COM组件一级实现引用计数。 设置一个针对整个组件全局的引用计数。 计数分辨率太粗。 ⑵COM对象一级实现引用计数。√ 利用成员变量,为每个COM对象设置一个引用计数。 组件程序应保持一份有效对象的纪录。 ⑶接口一级实现引用计数。 三级计数控制。 计数分辨率太细。 3.3 COM技术中的接口(续) 引用计数规则 ⑴函数的参数中使用接口变量。 ⑵局部接口指针变量。 ⑶全局接口指针变量 ⑷类成员变量为接口指针变量。 ⑸一般性原则: 在顺序执行过程中,如果要对一个接口指针变量赋值,则对赋值后的接口指针变量调用AddRef,并且,如果赋值前的接口指针变量还没有结束,则赋值前必须对它调用Release以便先结束它的使用。 如果要结束使用一个接口指针变量,以后不再用到它了,则调用Realease函数。 3.3 COM技术中的接口(续) 接口查询 按照COM规范,一个COM对象可以实现多个接口,客户程序可以在运行时刻对COM对象的接口进行询问。 当客户创建一个COM对象后,创建函数会返回一个接口指针,通过QueryInterface函数就可获得该对象所支持的任何一个接口指针。 函数说明: HRESULT QueryInterface([in]REFIID iid,[out]void * * ppv) 输入参数iid:接口标识符 输出参数ppv:查询得到的结果接口指针 3.3 COM技术中的接口(续) 接口查询返回值 HRESULT QueryInterface([in]REFIID iid, [out]void * * ppv) ⑴S_OK,查到了指定的接口,接口指针存放在ppv输出参数中; ⑵E_NOINTERFACE,对象不支持所指定的接口,*ppv为NULL; ⑶E_UNEXPECTED,发生了意外错误,*ppv为NULL。 3.3 COM技术中的接口(续) 接口原则 ⑴每个对象的IUnknown接口指针是唯一的。 ⑵接口自反性。 ⑶接口对称性。 ⑷接口传递性。 ⑸接口查询时间无关性。 3.3 COM技术中的接口(续) IDispatch接口 3.3 COM技术中的接口(续) 双重接口 3.4 COM类工厂机制 进程 进程是一个正在运行的程序,它有单独的内存地址空间,拥有自己的一些系统资源。 进程内组件:动态连接库方式。客户调用组件程序的服务时,会把组件程序装入到自己的进程中,即客户程序和组件程序运行在同一进程空间中。 进程外组件:EXE形式。组件程序在被调用时有其自己的进程空间,即客户程序和组件程序运行在不同的进程空间中。 COM采用本地过程调用和远程过程调用的方法进行进程之间的通信。 通过注册表管理COM对象 COM规范使用128位GUID来标识COM对象和接口,客户程序通过GUID值来创建COM对象并与对象进行交互。 因位置透明
您可能关注的文档
- 中华情-格尔木节目方案_080605.doc
- 中医穴位2.doc
- 中国农历的24节气.doc
- 中国人民大学国际关系理论2005,2005答案年考研试题.doc
- 中国12种主要地方戏曲盘点介绍.doc
- 中国企业并购年鉴2010.doc
- 中国国航601111资产负债表分析.doc
- 中国地理填图训练1.doc
- 中国城市商业地产发展案例12座名城案例.ppt
- 中国人民大学土地资源管理博士入学考试真题2002-2007.doc
- 人教A版高中数学必修一1.1 集合的概念专练(含解析)(80) .pdf
- 人教版九年级美术上册《线材造型》教案2篇 .pdf
- 人教版初中生物七年级上册第一单元生物和生物圈知识点总结归纳.pdf
- 人教版七年级生物上册 第二单元第一章《细胞是生命活动的基本单位》测.pdf
- 人教版八年级物理上册第一章声现象教案 .pdf
- 仓储管理员练习题库(附参考答案) .pdf
- 人教版八年级上册数学第14章 整式的乘法与因式分解 单元测试卷 3套(W.pdf
- 人教A版2019必修第一册 高一数学 4 .pdf
- 人教版八年级物理下册第九章压强第4节流体压强与流速的关系.pdf
- 以感恩为主题的演讲稿800字5篇 .pdf
最近下载
- “双减”政策下初中数学分层作业设计的实践与探究 .pdf
- 《My family photo》(教学设计)-2024-2025学年冀教版(2024)初中英语七年级上册.docx VIP
- 国开电大《创业教育(创业教育专)》形考1-3及综合答案.pdf VIP
- ISO 10009-2024 质量管理——质量工具及其应用指南(中文版-雷泽佳译2024-07).docx VIP
- 人教版初中英语八年级上册 Unit 7 大单元作业设计案例 .pdf
- 美国国父——华盛顿课件.ppt
- 渔父文化内涵.doc VIP
- 2025年合肥市轨道交通集团有限公司校园招聘934人笔试备考题库及答案解析.docx
- 腰椎穿刺术教师赛教案.docx
- 产后大出血的抢救.pptx VIP
文档评论(0)