ActiveX技术核心-组件对象模型.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AcfiveX技术核心—鲴件对象模型 詹旭薄亚明 (无锈轻工大学信息与控制学院,无镭,214036) ■■ 奉文熏基,卜埘丁^ctiv“技术的I‘磕一坦件对l攫墨(cO-).井宴璁T--十Jll坦件肘毫横盈构筑帕应闱程序.囊示了用 c叫开麓应用程枣的曩曩与方法. 蓑●l— gctivtgz氟件对●II曩I接口 一、引言 ActiveX技术是建立在对象链接与嵌入(0LE)和组件对象模型(c叫)的基 础上.COld是构建0LB的基本规范.ActiveX技术是c删向嘲上应用的拓晨,它继承了OLE 的所有功能,并根据网上应用的特点,对OLE的功能进行了必要的扩充“1.ActiveX包括 规范之上.因此,理算c叫是了解AcliveX技术的基础.本文将概述COM的组成,并通过 CON应用的一个典型例子,给出COM构筑应用程序的框架.可供软件开发人员参考与扩充. 二、COM的组件对象和基本接口规范 实现COil必须采用模央化的程序设计方法.c叫中的模块被称为组件对量,具有以 下特点; (I)组件对象是语言独立的,可以用多种语言实现,包括n、vc、Tc以及Delphi 等. (2)组件对象以二进铡的形式封装,在应用时,程序员不必要对所用的组件进行 重新编译. (3)在程序中,莱一组件的升级不会影响到程序的其它部分,整个程序也不必重 新编译与连接.这是由于与组件对象进行通信的仅是其接口,升级后的组件对象必须保留 原有的接口. (4)组件对象还具有直接的网上应用的功能.在远端机上应用组件与在本地机上 应用组件对用户是透明的. 在客户程序中,往往蔓用到多个组件对象.客户程序通过组件对象的接口与其进行通 信.在COM中,接口定义为包含函数指针皴组的特殊存贮结构,如图1所示: 圈中VmL是相当于C++中的虚拟映射衰.后面 厂———————————] 是四个接口函数指针.前三个函数 I n攮口 I Ql蝌yI叫嚣㈣、A甜Refo和R葺她船巴()是从 噼臣亘丑■亟i IUnlmown接口继承来的.每个组件的接口都必须 l .!圈l 从IUnknown接口继承这三个函散.其中 QI杖灿啦删用来访问组件对象中的其它接 f广ii]i 口.例如,从圈l中得到Ⅸ接口的指针plX,如 果组对簟中诬有一个Ⅳ接口,就可以通过Ⅸ接 口中的函数QuexyIntcxf☆0来得到IY接口的指针害1 接口示意田 PⅣ”. 为了优化存贮-组件对象应当知道如何操作和管理自己的数据,知递有多少客户在访问 它.当所有的客户都完成对它的访问后,它应当将自己从内存中删除.这由“引用计数” 机制通过IUnknown接口的另外两个函数A‘如t哟和Rele∞co来完成.每增加一个访问客户 A‘碰bfi)增加引用计数:当客户访问结束,Relcase0减少引用计盏:当引用计数溅至0时. 一424— &k%武)将组件对象从内存中删除【l。I。 上图中的最后一个函数FRO是Ⅸ接口的功能函数,可以通过得到Ⅸ接口指针pTX来 调用FX0函数. 三、全局唯一标识与注册数据库 由于组件对象可能生存在任何地方,包括本地机与远端机,每个组件对象又支持若干 个接口.为了避免冲突,微软采用了全局唯一标识GUD.它是一个128位的整数。每个组 件对象及其支持的接口都有相应的GUID,分别为CLSID和ⅡDI”. 注册数据库中有关COM的信息保存在HK.EYCLASSES_R00T键下.在注册数据库 名,每个CLSID对应一个IhgIDs.TypeLib是类型库的标识,将在下文提及. 四、类工厂 类工厂是实现了IclassFactory接口的特殊组件对象.这个组件对象是用来产生所需对 象的实例.每个组件对象都有相应的类工厂。当客户程序向服务器申请组件对象时.首先 件对象的实例.引入类工厂有两个原因:一是利用它来完成组件类型所必须的一些胡始化, 这样就可以创建某一类型组件对象的多个实例;=是在得到pIClassFactoty接口指针时,不 用“

文档评论(0)

baihualong001 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档