COM原理及应用-COM对象和接口.doc

COM原理及应用-COM对象和接口.doc

ID:62033086

大小:23.50 KB

页数:6页

时间:2021-04-15

COM原理及应用-COM对象和接口.doc_第1页
COM原理及应用-COM对象和接口.doc_第2页
COM原理及应用-COM对象和接口.doc_第3页
COM原理及应用-COM对象和接口.doc_第4页
COM原理及应用-COM对象和接口.doc_第5页
资源描述:

《COM原理及应用-COM对象和接口.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、COM原理及应用—--—COM对象和接口1、COM对象的理解  COM对象类似于C++语言中类的概念,类的每个实例代表一个COM对象,它也包括属性(即状态)和方法(即操作),状态反映对象的存在,方法就是接口。2、COM对象的标识-CLSID GUID是一个128位的随机数,重复概率极低。它的值来源于两部分:空间值(网卡地址或随机数)和时间值。 获得GUID值可以使用VC++提供的工具:GUIDGen.exe 和UUIDGen。exe.或者使用COM库的API函数CoCreatGuid()。3、COM对象与C++对象的比较封装特性 在COM对象中,数据是完全封装在对象内部,外部不可

2、能直接访问对象的数据属性。通过COM对象和客户程序提供的接口成员函数访问对象的属性。COM对象的数据成员的封装性是以组件为最终边界的,对于对象用户是完全透明的、不可见的;而C++对象的封装特性只是语义上的封装,对于对象用户是可见的。COM对象将数据完全封装在对象的内部。C++对象的封装是在语义上的封装,通过不同的数据类型实现数据的封装。可重用性COM对象的可重用性表现在COM对象的包容和聚合,一个对象可以完全使用另一个对象的所有功能;而C++对象的可重用性表现在C++类的继承性,派生类可以调用其父类的非私有成员函数。 COM对象的多态性通过其接口体现,C++对象的多态性通过其虚函

3、数体现。4、COM接口的作用和意义  COM规范的核心内容是关于接口的定义,虽然COM本身并不复杂,但是围绕COM接口有很多内容值得仔细探讨,包括接口的标识、接口函数的调用习惯、参数处理、接口与对象的关系以及接口与C/C++的关系、COM接口多具有的特性等.COM定义了一套完整的接口规范,不仅可以弥补API作为组件接口的不足,还从分发挥了组件对象的优势,并实现了组件对象的多态性.5、接口定义和标识接口是包含了一组函数的数据结构,通过这组数据结构,客户代码可以调用组件对象的功能.客户程序使用一个接口数据结构的指针来调用接口成员函数.接口指针实际上又指向另一个指针,这第二个指针指向一

4、组函数指针(即一组函数地址),成为接口函数表。接口函数表中每一项为4个字节的函数指针,每个函数指针与对象的具体实现联系起来。 从技术上讲,接口是包含了一组函数的数据结构,通过这组数据结构,客户代码可以调用组件对象的功能。  客户程序用一个指向接口函数结构的指针来调用接口成员函数。实际上接口指针指向另一个指针pVtable.接口函数表称为虚函数表(Virtual FunctionTable,简称vtable),指向vtable的指针为pVtable。对于一个接口来说,它的虚函数表vtable是确定的。6、接口设计的问题在接口成员函数中,字符串变量必须用Unicode字符指针,这是C

5、OM规范的要求.  COMAPI函数使用大多数语言惯用的_stdcall调用习惯。用C语言定义COM接口,需要有结构体struct定义其接口结构,接口成员函数必须有一个this指针。 用C++语言定义COM接口,因为由C++语言class的实现机理可以看出,COM接口结构中的vtable与class的vtable(类的虚函数表)完全一致,因此,用class描述COM接口是最方便的手段.此时,接口成员函数隐藏了this指针。class型接口的说明要比struct型接口的说明简捷得多。7、COM接口与对象的联系 接口类只是一种描述,并不提供具体的实现过程。如果COM对象要实现接口,则

6、COM对象必须以某种方式把它自身与接口类联系起来,然后把接口类的指针暴露给客户程序,于是客户程序就可以调用对象的接口功能了。 用class型接口通过把接口指针(this)与对象数据绑定在一起的方法实现对COM接口的支持比较直观、简捷易于理解。实际上,也可以采用其他的方法来实现接口,只要接口成员函数中this指针(即接口指针)与对象数据能建立确定的连接,在接口成员函数中可以访问到对象数据即可。例如,VC++的MFC库和ATL(activetemplatelibrary,活动模板库)模板库分别采用了不同的机制来提供对COM接口的支持。8、接口描述语言IDL COM 规范在采用OSF的

7、DCE规范描述远程调用接口IDL(interface descriptionlanguage ,接口描述语言)的基础上,进行扩展形成了COM接口的描述语言。接口描述语言提供了一种不依赖于任何语言的接口描述方法,因此,它可以成为组件程序和客户程序之间的共同语言。COM 规范使用的IDL接口描述语言不仅可用于定义COM接口,同时还定义了一些常用的数据类型,也可以描述自定义的数据结构,对于接口成员函数,我们可以制定每个参数的类型、输入输出特性,甚至支持可变长度的数组的描述。VC++提供

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。