中间件技术原理与应用_3.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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对象并与对象进行交互。 因位置透明

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档