正在加载图片...
442Asp3高程 China pub. coM 下载 EXE或DLL,因此,它们必须升级。 记住ⅤB隐藏了许多接口信息。因此,当修改或增加一个类模块的公用函数、子程序或 属性时,实际上就是在修改缺省接口,ⅤB会自动为一个 Activex项目中的每个公用类模 块创建和管理COM接口。 这些都是好的COM原则,但应用于ASP中的组件更具有灵活性,因为它们使用后期绑定 142.5| Unknown接口 前面说过每个COM组件都要实现一个叫 IUnknown的接口,这个接口在COM中起着极为 重要的作用,有两个作用 引用计数 通过询问支持的接口,动态地揭示接口功能。 I. Querylnterface QueryInterface是一个方法,通过该方法,可以在运行期动态显示和査询组件的功能。这 种方法接受一个接口标识符(ID,另一种类型的GUID),并且如果此接口被支持的话,就返回 被请求的接口,供发出请求的代码使用。 ◇在Ⅴ SCript中,使用Set关键字调用该方法,这就是查询组件是否支持这个IID代表的接 Set RemoteControl Createobject("TV. Remotecontrol') 2.对象的生存期和引用计数 COM允许传递一个接口指针到应用程序中,并且,当一个接口在使用时,不能破坏提供 指针的COM对象。这可以比作一个四方同时通话的电话会议:在会议结束前,电信局应当使 电话线保持连接 为了跟踪接口指针的使用和一个COM对象的生存期,我们使用引用计数。 当一个组件第一次由COM运行期创建时,它的“生命”就开始了,而且 IUnknown接口的 AddRef方法已经被组件自身隐式调用了。 AddRef方法的功能很简单,仅将组件引用计数器的 值增加1。引用计数器的初值为0,创建组件后,其引用计数器的值为1 每当 QueryInterface函数给顾客提供一个接口指针,就调用 AddRef方法将引用计数器的值 加1:相反地,当顾客使用接口完毕,就调用 Release方法,将引用计数器的值减1。如果引用 计数器的值达到0,那么对象就知道不再有顾客使用它了,这时,它就自我取消,结束其生存 期 COM对象必须能够可靠地管理自己的生存期 作为一个非常简单的概念,引用计数是一个强大的功能。然而,在像C++这样的语言中有 点麻烦,因为程序员必须记住手工调用 AddRef和 Release,如果调用不配对,对象就永远不会 被取消。在ⅤB和ASP中,从不直接调用 Add Ref和 Release,因此不存在调用不配对问题。 1426使用 Dispatch——后期绑 Dispatch是一个接口,COM使用它允许客户应用程序在运行期动态地发现和调用组件缺 省接口的方法。这一种调用组件功能的方式叫作后期绑定,因为在调用方法之前,组件必须E X E或D L L,因此,它们必须升级。 • 记住V B隐藏了许多接口信息。因此,当修改或增加一个类模块的公用函数、子程序或 属性时,实际上就是在修改缺省接口, V B会自动为一个A c t i v e X项目中的每个公用类模 块创建和管理C O M接口。 这些都是好的C O M原则,但应用于A S P中的组件更具有灵活性,因为它们使用后期绑定。 14.2.5 IUnknown接口 前面说过每个 C O M组件都要实现一个叫 I U n k n o w n的接口,这个接口在 C O M中起着极为 重要的作用,有两个作用: • 引用计数。 • 通过询问支持的接口,动态地揭示接口功能。 1. QueryInterface Q u e r y I n t e r f a c e是一个方法,通过该方法,可以在运行期动态显示和查询组件的功能。这 种方法接受一个接口标识符 ( I I D,另一种类型的G U I D ),并且如果此接口被支持的话,就返回 被请求的接口,供发出请求的代码使用。 在V B S c r i p t中,使用S e t关键字调用该方法,这就是查询组件是否支持这个 I I D代表的接 口。 2. 对象的生存期和引用计数 C O M允许传递一个接口指针到应用程序中,并且,当一个接口在使用时,不能破坏提供 指针的C O M对象。这可以比作一个四方同时通话的电话会议:在会议结束前,电信局应当使 电话线保持连接。 为了跟踪接口指针的使用和一个 C O M对象的生存期,我们使用引用计数。 当一个组件第一次由C O M运行期创建时,它的“生命”就开始了,而且 I U n k n o w n接口的 A d d R e f方法已经被组件自身隐式调用了。 A d d R e f方法的功能很简单,仅将组件引用计数器的 值增加1。引用计数器的初值为0,创建组件后,其引用计数器的值为 1。 每当Q u e r y I n t e r f a c e函数给顾客提供一个接口指针,就调用 A d d R e f方法将引用计数器的值 加1;相反地,当顾客使用接口完毕,就调用 R e l e a s e方法,将引用计数器的值减 1。如果引用 计数器的值达到0,那么对象就知道不再有顾客使用它了,这时,它就自我取消,结束其生存 期。 C O M对象必须能够可靠地管理自己的生存期。 作为一个非常简单的概念,引用计数是一个强大的功能。然而,在像 C + +这样的语言中有 点麻烦,因为程序员必须记住手工调用 A d d R e f和R e l e a s e,如果调用不配对,对象就永远不会 被取消。在V B和A S P中,从不直接调用A d d R e f和R e l e a s e,因此不存在调用不配对问题。 14.2.6 使用I D i s p a t c h—后期绑定 I D i s p a t c h是一个接口,C O M使用它允许客户应用程序在运行期动态地发现和调用组件缺 省接口的方法。这一种调用组件功能的方式叫作后期绑定,因为在调用方法之前,组件必须 442计计ASP 3 高级编程 下载
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有