组件技术书面作业(2011).doc_第1页
组件技术书面作业(2011).doc_第2页
组件技术书面作业(2011).doc_第3页
组件技术书面作业(2011).doc_第4页
组件技术书面作业(2011).doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

组件技术书面作业 -请于16周前由班长统一收齐交老师1、 什么是组件?组件是怎么产生的?什么是COM? 答:组件就是对象。C+ Builder中叫组件,Delphi中叫部件,而在Visual BASIC中叫控件。 组件是对数据和方法的简单封装。C+ Builder中,一个组件就是一个从TComponent派生出来的特定对象。组件可以有自己的属性和方法。属性是组件数据的简单访问者。方法则是组件的一些简单而可见的功能。 组件是近代工业发展的产物,兴起于20世纪初,目的是功能模块化,前提是接口标准化,好处是构成产品的各个功能组件,由更专业的厂商生产,提高了质量,降低了成本。而生产组件的厂商,同样的组件,可应用于多类产品和多个领域,极大地扩展了市场范围。 COM是Component Object Model (组件对象模型)的缩写COM是:COM组件是动态链接的,而且COM组件是完全与语言无关的。COM组件可以以二进制的形式发布。COM组件还可以在不妨碍老客户的情况下被升级成新的版本。COM可以透明地在网络上被重新分配位置。不要把DLL和COM做比较,因为COM技术正是利用了 DLL的动态链接能力才得以实现的,而现在一般观点则认为,利用DLL动态链接能力最佳的方法是COM。 2、 什么是CLSID、IID、GUID?它们之间的关系是什么?如何用C/C+语言来描述GUID?CLSID和ProgID的关系又是什么?它们之间是如何相互转化的?答:GUID (Globally Unique Identifier)128位全球唯一标识符 ,被赋予生成的每个COM组件和接口,向操作系统和其他软件唯一标识这个组件CLSID 用来标识COM对象的GUID IID 用来标识COM接口的GUID在C、C+语言中,可以用这样的语言来描述:Typedef struct.GUID DWORD Data1;WORD Data2;WORD Data3;BYTE Data48;GUID;CLSID和ProgID的关系以及相互转化:HRESULT CLSIDFromProgID(LPCOLESTR lpszProgID, / 指向ProgID的指针LPCLSID pclsid / 指向CLSID的指针);WINOLEAPI ProgIDFromCLSID(REFCLSID clsid, / CLSID 的值,已知LPOLESTR * lplpszProgID / 指向接收ProgID的缓冲区); 3、你如何理解COM的二进制特性?(可以从COM对象、COM接口的角度谈)答:COM是已经编译好的程序组件,但不是一个完整的可行性程序,不能从DLL启动,只能被可执行程序载入到其内存空间中.COM组件实现了二进制级别的模块复用.可以不限语言.可以不用将模块代码加入到自己的程序工程中即可调用其功能.这就是COM组件的二进制特性.4、若某个组件中,有一个专门用来做基本计算的COM接口ICompute,里面有4个方法(加Add、减Deduct、乘Multi、除Div),请画出该接口的内存结构图。5、 IDL语言是什么?从COM的角度讲它主要有什么作用?请用IDL语言来描述第4题中的ICompute接口。答:IDL语言的英文全称是Interactive Data Language 。IDL 是一种数据分析和图像化应用程序及编程语言,先由美国ITT公司所有。最初在七十年代后期用于帮助科学家分析火星探险卫星发回的数据,将浩瀚的数据转换为图形。从此后,IDL 得到广泛运用,使用者日众,呈几何级别增长。IDL 使用者可以迅速且方便地运用此软件将数据转换为图象,促进分析和理解。通过软件转化的图像既可以是简单色彩,也可以是全色三维图像和模型。 IDL功能简介:快捷的交互式数据可视化;大量功能强大的数据分析工具;语法简单的4GL语言;面向矩阵的语言:代码少,速度快;迅速生成结果,没有冗长的编辑-编译-链接周期6、若第4题中的COM对象中还存在另一个专门用来计算面积的接口IArea,里面有2个方法(求三角形面积TriAgle、求矩形面积Square),请画出这两个COM接口与它们所在COM对象之间的结构关系图。7、什么是COM对象?什么是COM接口?你如何理解它们之间的关系?(可从COM原理、C+语法等角度谈)答:对象是 COM 的基本单元它是 COM 所创建的东西。接口是访问对象的唯一方式;是一种协议、一种约定。接口的使用方法(C+):pIX-Fx();接口实质上用C+ 虚函数的方式来描述;接口定义了一组成员函数,这组成员函数是组件对象暴露出来的所有信息,客户程序利用这些函数获得组件对象的服务。8、为什么COM的设计者要引入IUnknown接口?解释IUnknown接口中的3个重要方法的作用。答:COM的设计者要引入IUnknown接口的原因:IUnknown接口提供了两个非常重要的特性生存期控制和接口查询。IUnknown引入了“引用计数”方法,可以有效的控制对象的生存周期。另一方面,IUnknown使用了“接口查询”的方法完成了接口之间的跳转。COM规范规定任何组件、任何接口都必须从IUnknown继承,IUnknown包含三个函数,分别是 QueryInterface、AddRef、Release。QueryInterface用于查询组件实现的其它接口,说白了也就是看AddRef用于增加引用计数,Release用于减少引用计数。9、请简单描述下进程内组件和进程外组件的原理与区别?从客户程序角度看,调用进程内组件或进程外组件有区别吗?为什么? 答:对于ActiveX Server Component而言,进程内组件会比进程外组件有更好的性能,就象调用ASP内部对象的应用程序与内部对象会运行在同一进程空间一样,调用进程内组件的应用程序与进程内组件会运行在同一个进程空间内,不会出现在应用程序调用进程外组件所导致的耗费资源的交叉进程调用的情形。 根据COM/DCOM中客户程序和组件程序的交互关系可以将组件分为进程内组件和进程外组件两种。所谓进程内组件是指客户程序和组件程序在同一个进程地址空间内;进程外组件指客户程序和组件程序分别处在不同的进程空间地址中。进程内组件是通过将组件作为动态连接库(DLL)来实现的,客户程序将组件程序加载到自己的进程地址空间后再调用组件程序的函数。对于这两种不同的组件,客户程序和组件程序交互的内在方式是完全不同的。但是对于功能相同的进程内和进程外组件,从程序编写的角度看,客户程序是以同样的方法来使用组件程序的,客户程序不需要做任何的修改。 进程内组件指DLL在客户程序的进程空间内运行,从你调用组件的时候起,DLL开始存在内存中,当客户端程序终止时,DLL也结束而进程外组件在客户程序的外部进程空间运行!当客户端程序终止时,DLL不结束,它所在进程与客户进程不相关!他由服务器决定,这在DCOM中非常有用!10、在Windovas操作系统中,可以用什么载体去实现一个进程内组件?请说明编写普通DLL程序的两种方式以及调用普通DLL的标准步骤。答:用CLSID和IID11、类厂的作用是什么?CoGetClassObjet和CoCreateInstance的作用是什么?它们之间有什么联系和区别?从客户角度看,使用这两种COM库函数有什么区别?答:类厂也是一个接口,它的职责是帮我们创造组件的对象.并返回给客户程序一个接口的指针.每个组件都必须有一个与之相关的类厂,这个类厂知道怎么样创建组件.当客户请求一个组件对象的实例时,实际上这个请求交给了类厂,由类厂创建组件实例,然后把实例指针交给客户程序。CoGetClassObjet函数先找到clsid指定的COM类的类厂,然后连接到类厂对象,如果需要的话,CoGetClassObjet函数装入组件代码。CoCreateInstance是一个被包装过的辅助函数,在它的内部实际上也调用了CoGetClassObjet函数,CoCreateInstance的参数的含义与CoGetClassObjet相应的参数一直,主要用于对象被聚合的情形。12、COM库的作用是什么?请罗列下HRESULT的最常见宏定义。并演示下两种典型包装函数执行的方法。答:COM库在整个COM对象体系中起了很重要的作用。COM库充当了组建程序和客户程序之间的桥梁,尤其是在组建对象的创建过程中,以及在对象管理、内存管理和一些标准化操作等方面起着重要作用。常用的HRESULT宏定义: S_OK

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论