- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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接口指针时,不
用“
您可能关注的文档
最近下载
- 执业兽医机构聘用证明或服务协议.docx VIP
- 高中语文革命题材课文阅读与写作能力培养策略研究教学研究课题报告.docx
- 生态生命安全森林草原火灾的危害教案.pdf VIP
- 2025年淮安市专业技术人员公需试题-党的二十届三中全会精神解读.docx VIP
- 《文献检索与毕业论文写作》课件第三章 常用英文数据库的使用 .pptx VIP
- 铭记抗战历史+弘扬民族精神+纪念抗战胜利主题班会.pptx VIP
- 2025版煤矿安全规程学习培训课件.pptx
- 22J403-1楼梯栏杆栏板.pptx VIP
- 子宫内膜癌分子分型临床应用中国专家共识(2024年版)解读PPT课件.pptx VIP
- 2024新版2025秋教科版科学三年级上册全册教案教学设计.docx
文档评论(0)