hina coM 载 第14章COM、COM+和ASP 组件对象模型( Component Object Model,COM)很受编程人员的欢迎,许多使用COM熟 练的开发人员认为COM就像ASP一样能够给编程人员灵感。可以说COM是微软所创造的最优 秀的技术之一。就像ASP一样,COM是任何严谨的 Windows开发者应该了解和掌握的技术。 因此,让我们研究一下COM到底是什么,为什么编程人员这么喜欢它,并且了解COM和ASP 的内在联系,以及如何开发利用它。 令人惊奇的是大多数开发者和最终客户在一些方法、形式上已经不知不觉地运用了COM 作为一个ASP开发者,几乎一直都在使用着COM,所有ASP内置的对象都是COM对象。当用 到这些对象时,就调用了COM对象的方法。IS在很大程度上要用到COM。几乎每个微软产 品都是基于COM或者使用COM。所以不必担心,COM并不是什么新内容而且也不难理解 在 Windows2000中,已经引入了COM+,“+”标志着对COM做了一些重要的改动,即引 入了略有区别的基本编程模型和许多企业级的服务,例如事务管理和有限资源共享 本章将讨论以下内容: COM的内容 COM对开发者的意义。 COM的工作方式。 COM+有哪些改动 用ⅤB编写的一个简单的 ASP COM组件 本章用到COM这个词时,指的是对所有的COM版本都适用的部分,对 Windows 95、 Windows98、 Windows nt和 Windows2000都适用。当用COM+时,指的是 Windows2000中的特殊部分。 14.1COM的内容 cM就是指客户端与CM对象之间交流的一种二进制规范,换句话说,是指它 们如何相互对话。 简单地说,COM是基于对象的,可用合适的编程语言把一些代码变成一个组件,而且允 许在编程语言中运用这个组件或功能,即使使用的语言不同,也不会出现问题,COM考虑到 了这一点。我们不必了解组件程序是如何编写的(用了什么技术、算法等),用的是什么语言, 只须将它作为一个“黑盒子”,知道如何使用,如何通过一个或多个接口(相关功能的集合)来 访问其功能即可。 例如,你知道微软用什么语言编写ASP对象模型或ADO吗?我们只需了解有哪些可用的 COM对象、方法和属性,就能使用它们的功能。这些方法和属性称为对象的接口 如果你认为ASP的 CreateObject函数与 Create COMObject一样, Server create Objecti函数与 Server Create COMObject一样,则说明你知道你在使用COM了
下载 第14章 COM、COM+和ASP 组件对象模型(Component Object Model,C O M )很受编程人员的欢迎,许多使用 C O M熟 练的开发人员认为 C O M就像A S P一样能够给编程人员灵感。可以说 C O M是微软所创造的最优 秀的技术之一。就像 A S P一样, C O M是任何严谨的 Wi n d o w s开发者应该了解和掌握的技术。 因此,让我们研究一下 C O M到底是什么,为什么编程人员这么喜欢它,并且了解 C O M和A S P 的内在联系,以及如何开发利用它。 令人惊奇的是大多数开发者和最终客户在一些方法、形式上已经不知不觉地运用了 C O M。 作为一个A S P开发者,几乎一直都在使用着 C O M,所有A S P内置的对象都是C O M对象。当用 到这些对象时,就调用了 C O M对象的方法。 I I S在很大程度上要用到 C O M。几乎每个微软产 品都是基于C O M或者使用C O M。所以不必担心,C O M并不是什么新内容而且也不难理解。 在Windows 2000中,已经引入了C O M + ,“+”标志着对C O M做了一些重要的改动,即引 入了略有区别的基本编程模型和许多企业级的服务,例如事务管理和有限资源共享。 本章将讨论以下内容: • COM的内容。 • COM对开发者的意义。 • COM的工作方式。 • COM+有哪些改动。 • 用V B编写的一个简单的ASP COM组件。 本章用到C O M这个词时,指的是对所有的 C O M版本都适用的部分,对 Wi n d o w s 9 5、Windows 98、Windows NT和Windows 2000都适用。当用 C O M+时,指的是 Windows 2000中的特殊部分。 14.1 COM的内容 C O M就是指客户端与C O M对象之间交流的一种二进制规范,换句话说,是指它 们如何相互对话。 简单地说,C O M是基于对象的,可用合适的编程语言把一些代码变成一个组件,而且允 许在编程语言中运用这个组件或功能,即使使用的语言不同,也不会出现问题, C O M考虑到 了这一点。我们不必了解组件程序是如何编写的 (用了什么技术、算法等 ),用的是什么语言, 只须将它作为一个“黑盒子”,知道如何使用,如何通过一个或多个接口 (相关功能的集合 )来 访问其功能即可。 例如,你知道微软用什么语言编写 A S P对象模型或A D O吗?我们只需了解有哪些可用的 C O M对象、方法和属性,就能使用它们的功能。这些方法和属性称为对象的接口。 如果你认为 A S P的C r e a t e O b j e c t函数与C r e a e t e C O M O b j e c t一样, S e r v e r. C r e a t e O b j e c t函数与S e r v e r. C r e a t e C O M O b j e c t一样,则说明你知道你在使用 C O M了
434A5p2装程 Chinaopul coM 下载 COM能实现客户与其正在使用的COM对象间的透明定位,客户和组件可运行在不同的进 程中,甚至在不同的机器上。另外COM充分考虑到了机器的远距离连接的需求,使用一个组件 不管距离远近,都用同样的方式。COM提供了完整的基础结构能使所有的组件工作,你只需把 注意力集中在重要的环节上,例如编程和运用组件。COM对客户和组件开发者的要求是 组件开发者应使用一种能创建COM组件的编程语言,例如VB、ⅤC++,所创建的COM 组件符合COM规范 客户有一种编程语言或工具(例如 Microsoft word或ASP),懂得如何实例化和使用COM 组件,而且要遵守COM规范。像 Microsoft word和ASP这样的工具实际上使用其他组件 来完成这种创建,Word用的是VBA,ASP用的是活动脚本( Active Scripting) COM十并未改变COM的基本模型,只是在环境(将在下一章进行更详细的讨论) 方面进行了一些扩展,并且引入了COM+服务 上面已经简单地讲了什么是COM和COM+,其基本原理就是这么简单。 “COM对象”和“COM组件”这两个词经常混用,虽然这从技术上讲并不准确 但一般也不会出错。严格地讲,它们是不同的,前者是后者的一个实例。 14.1.1cOM无处不在 COM很复杂,要想了解COM各方面的细节很费时间,需要大量的阅读和编写代码,一般 来说,要达到熟练并按对COM和COM+的理解编写正确的代码,粗略地算大概需要六个月 然而,如果一开始就在应用程序中充分利用它,并且用ⅤB创建COM组件,正确地练习,则仅 需几个星期。经过一段时间之后,就能掌握基本要点,并能善于使用它。因为理解COM确实 很费时间,所以一开始就要确保经常创建一些可处理的范例。 本书不准备介绍COM的全部内容,也没必要。本章的目的是让读者对COM的关键部分有 个总体的了解,重点介绍一些对ASP组件开发者们很有用的细节。你如果需要更详细地了 解COM,请参阅以下两本好书。 《 Beginning ASP Components》,Wrox出版社出版( ISBN 1-861002-88-2) ·《 VB COM》,Wrox出版社出版(ISBN1-861002-13-0) 下面将详细介绍COM,不必担心刚开始所遇到的任何令人头疼和迷惑的细节,只要认真 学习一切都会解决 141.2cM+的三个方面 COM可以分为三个基本部分 二进制规范。 ·运行期或库。 服务 1.二进制规范 COM规范规定了像ⅤB这样的开发工具在把类模块编译成COM时所需遵守的一些准则 ASP这样的技术用它决定如何创建一个组件(COM对象)的实例并调用它的方法。对开发者们 来说,这个规范也定义了一个跨语言的一致性编程接口。COM规范没限定的是COM自身如何
C O M能实现客户与其正在使用的 C O M对象间的透明定位,客户和组件可运行在不同的进 程中,甚至在不同的机器上。另外C O M充分考虑到了机器的远距离连接的需求,使用一个组件, 不管距离远近,都用同样的方式。C O M提供了完整的基础结构能使所有的组件工作,你只需把 注意力集中在重要的环节上,例如编程和运用组件。C O M对客户和组件开发者的要求是: • 组件开发者应使用一种能创建 C O M组件的编程语言,例如 V B、V C + +,所创建的C O M 组件符合C O M规范。 • 客户有一种编程语言或工具 (例如Microsoft Wo r d或A S P ),懂得如何实例化和使用 C O M 组件,而且要遵守C O M规范。像Microsoft Wo r d和A S P这样的工具实际上使用其他组件 来完成这种创建,Wo r d用的是V B A,A S P用的是活动脚本(Active Scripting)。 C O M+并未改变C O M的基本模型,只是在环境 (将在下一章进行更详细的讨论 ) 方面进行了一些扩展,并且引入了 C O M+服务。 上面已经简单地讲了什么是 C O M和C O M+,其基本原理就是这么简单。 “C O M对象”和“C O M组件”这两个词经常混用,虽然这从技术上讲并不准确, 但一般也不会出错。严格地讲,它们是不同的,前者是后者的一个实例。 14.1.1 COM无处不在 C O M很复杂,要想了解C O M各方面的细节很费时间,需要大量的阅读和编写代码,一般 来说,要达到熟练并按对 C O M和C O M+的理解编写正确的代码,粗略地算大概需要六个月。 然而,如果一开始就在应用程序中充分利用它,并且用 V B创建C O M组件,正确地练习,则仅 需几个星期。经过一段时间之后,就能掌握基本要点,并能善于使用它。因为理解 C O M确实 很费时间,所以一开始就要确保经常创建一些可处理的范例。 本书不准备介绍C O M的全部内容,也没必要。本章的目的是让读者对 C O M的关键部分有 一个总体的了解,重点介绍一些对 A S P组件开发者们很有用的细节。你如果需要更详细地了 解C O M,请参阅以下两本好书。 • 《Beginning ASP Components》,Wrox 出版社出版(ISBN 1-861002-88-2) • 《VB COM》,Wrox 出版社出版(ISBN 1-861002-13-0)。 下面将详细介绍 C O M,不必担心刚开始所遇到的任何令人头疼和迷惑的细节,只要认真 学习一切都会解决。 14.1.2 COM+的三个方面 C O M可以分为三个基本部分 • 二进制规范。 • 运行期或库。 • 服务。 1. 二进制规范 C O M规范规定了像 V B这样的开发工具在把类模块编译成 C O M时所需遵守的一些准则。 A S P这样的技术用它决定如何创建一个组件 ( C O M对象)的实例并调用它的方法。对开发者们 来说,这个规范也定义了一个跨语言的一致性编程接口。 C O M规范没限定的是C O M自身如何 434计计ASP 3 高级编程 下载
a→o 第14章(COM、COM+和sp435 载 实现 在本书印刷的时候,COM规范在已放在下面的网站上http://www.micrOsoft om/com/resources/comdocs asp 所有COM规范都是用一种语言中立方式制定的,这使编写客户端程序所使用的语言与编 写COM对象所使用的语言可以不同,只要支持COM规范即可。请记住,COM是一种二进制 因为COM定义了这个通用的基于对象的通信中介,它真正简化了传统的一些繁重的过程 过去编写客户端/服务器应用程序,必须为不同的客户类型编写多种AP(例如,VC++和VB各 种)。试想在ⅤB这样的程序语言中使用C/C++的 declare语句的功能,ⅤB程序员经常被不必 要的内容搞糊涂,而且不得不弄懂C/C++的结构。然而也许有人会说 declare语句和其他的语 言组接机制并不太差,但是COM更简单,采用的是一种更自然和更一致的方式 2.运行期或/库 COM运行期就是COM规范的一种实现,并且随各种版本的 Windows提供。尽管运行期的 核心API是在ole32d中,但其本身存在于许多DLL中。在开发ASP时,我们时刻都使用着 COM运行期和像ole32d这样的DLL提供的所有功能。尽管有时我们并不知道,但为了完成 任务确实调用了COM运行期 COM运行期有时被称为COM库。但作者偏爱前者,因为这暗示环境是“执行期 间”;有些人喜欢用后者,因为它也是一个函数库。COM运行期是一个主要的内容, 希望大家能熟练地运用它。 (1)ASP页面中的COM客户 在ASP页面中,通过ASP解释器间接地使用 COM运行期,而ASP解释器在技术上使用活动 脚本,这个技术把 VBScript、 Javascript和其他 ASP解释器 活动脚本 脚本语言转换成COM调用,其过程如图14-1所 COM运行期 例如,当在ASP页面中使用 CreateObject或 Server. CreateObjct函数时,可用下面的代码: 图14-1ASP页在与COM运行期的关系 let ob]Conn Createobject( 'ADODB Connection) ASP页面的代码由ASP解释器的活动脚本引擎转换为对COM运行期的调用。COM运行期 际负责创建 ADO Connection对象。 (2)ⅤB中的COM客户 在VB中,使用NEW语句时,就会调用COM运行期。当使用 References对话框向一个项目 增加ADO支持时,所做的一切就是告诉VB你所要使用的一些COM组件。所选择的引用决定 了这些组件,并且允许像使用任何其他ⅤB固有类型一样使用它们: Dim objconn As ADODB Connection Set objconn New ADODB Connection
实现。 在本书印刷的时候, COM 规范在已放在下面的网站上: h t t p : / / W W W. m i c r o s o f t . c o m / c o m / r e s o u r c e s / c o m d o c s . a s p 所有C O M规范都是用一种语言中立方式制定的,这使编写客户端程序所使用的语言与编 写C O M对象所使用的语言可以不同,只要支持 C O M规范即可。请记住, C O M是一种二进制 规范。 因为C O M定义了这个通用的基于对象的通信中介,它真正简化了传统的一些繁重的过程。 过去编写客户端 /服务器应用程序,必须为不同的客户类型编写多种 A P I (例如,V C + +和V B各 一种)。试想在V B这样的程序语言中使用 C / C + +的d e c l a r e语句的功能,V B程序员经常被不必 要的内容搞糊涂,而且不得不弄懂 C / C + +的结构。然而也许有人会说 d e c l a r e语句和其他的语 言组接机制并不太差,但是 C O M更简单,采用的是一种更自然和更一致的方式。 2. 运行期或/库 C O M运行期就是C O M规范的一种实现,并且随各种版本的 Wi n d o w s提供。尽管运行期的 核心A P I是在o l e 3 2 . d l l中,但其本身存在于许多 D L L中。在开发 A S P时,我们时刻都使用着 C O M运行期和像o l e 3 2 . d l l这样的D L L提供的所有功能。尽管有时我们并不知道,但为了完成 任务确实调用了C O M运行期。 C O M运行期有时被称为 C O M库。但作者偏爱前者,因为这暗示环境是“执行期 间”;有些人喜欢用后者,因为它也是一个函数库。 C O M运行期是一个主要的内容, 希望大家能熟练地运用它。 (1) ASP页面中的C O M客户 在A S P页面中,通过A S P解释器间接地使用 C O M运行期,而 A S P解释器在技术上使用活动 脚本,这个技术把 V B S c r i p t、J a v a S c r i p t和其他 脚本语言转换成 C O M调用,其过程如图 1 4 - 1所 示。 例如,当在A S P页面中使用C r e a t e O b j e c t或 S e r v e r. C r e a t e O b j c t函数时,可用下面的代码: A S P页面的代码由A S P解释器的活动脚本引擎转换为对 C O M运行期的调用。 C O M运行期 实际负责创建ADO Connection对象。 (2) VB中的C O M客户 在V B中,使用N E W语句时,就会调用C O M运行期。当使用R e f e r e n c e s对话框向一个项目 增加A D O支持时,所做的一切就是告诉 V B你所要使用的一些 C O M组件。所选择的引用决定 了这些组件,并且允许像使用任何其他 V B固有类型一样使用它们: 第1 4章 C O M、C O M +和A S P计计435 下载 图14-1 ASP页在与C O M运行期的关系 ASP解释器 活动脚本 COM运行期
436 ASP3高级编程 Chinapub.com 下载 作为一位开发者,你发现运行期是COM中一个非常有用的部分。COM规范是COM的准 则,从细节上规定了所有的方面(我们应该了解它),但我们每天所用的是运行期。 在ⅤB中,如果创建的组件不在相同的DLL中,new语句只能转入COM运行期,如果是在 相同的DLL中,则VB不需要使用COM运行期,这时VB可以直创建组件 (3)服务 服务是一些编译过的代码(目前只有微软能 编写)。它们能提供一些可以增强组件能力的 且容易使用的重要功能。如果你用过MTS,应 该用过声明属性和声明安全,通过这两种方法 管理员在运行期可以影响组件的行为和使用 cM+中的属性是二项描述组件的运行期 来设置它们。通过用这种方法设置组件的一种 或多种属性,就能控制它的运行期而不需要额 外的编程和重新编译,这是重用代码的最优形 式。可以充分利用微软编写的基本代码而不是 由自己来开发。例如,一个COM+应用程序的 Transactions选项卡,如图14-2所示 在此选项卡中选择 Required选项,就告诉 图14-2 Transactions选项卡 了COM+我们所用的组件要用COM+提供的事务服务,即告诉COM+每个新的组件实例都 应加入到一个事务中。 在第19章将要讲到,事务处理能使一组组件做为一个整体单位共同工作。 (4)没有COM,ASP将不再是ASP 没有cOM,ASP就不会这么容易扩充,使用也不会如此简单,也许它将不存 除非ASP是建立在一些相同的规范/实现,否则就必须以不同的方式调用不同的组件,而 且要根据组件是用什么语言编写的或者是哪个公司提供的。设想一下,为了能引用组件的 些方法,必须弄懂所有方式,这是C++开发者多年以来一直面对的一个问题,到今也没解决 但是COM解决了,因为最近许多公司都逐渐适应了COM。没有COM,就要花很多时间弄懂组 件编写者的意图及不同的API。应该感谢COM提供了一个容易使用和基于对象编程的范型 微软估计有300万开发者利用COM开发COM应用程序,每天有2亿人使用COM应 用程序,这使COM成为世界范围内最成功的对象模型。 141.3cOM开发工具 就编写组件的语言而言,微软所提供的主要是C++和VB,本书中两者都要讲到 ⅤC++在性能和灵活性的统一上有些缺陷,它使开发者需要深入理解COM的内部工作情 况。但是,一旦理解了,再使用微软活动模板库( Active tieplate library,ATL),编写组件就 像用VB一样又快又简单。但首先,必须了解相应的内容
作为一位开发者,你发现运行期是 C O M中一个非常有用的部分。 C O M规范是C O M的准 则,从细节上规定了所有的方面 (我们应该了解它),但我们每天所用的是运行期。 在V B中,如果创建的组件不在相同的 D L L中,n e w语句只能转入C O M运行期,如果是在 相同的D L L中,则V B不需要使用C O M运行期,这时V B可以直创建组件。 (3) 服务 服务是一些编译过的代码(目前只有微软能 编写)。它们能提供一些可以增强组件能力的 且容易使用的重要功能。如果你用过 M T S,应 该用过声明属性和声明安全,通过这两种方法 管理员在运行期可以影响组件的行为和使用。 C O M+中的属性是一项描述组件的运行期 特性的信息 (元数据 ),可以用组件服务浏览器 来设置它们。通过用这种方法设置组件的一种 或多种属性,就能控制它的运行期而不需要额 外的编程和重新编译,这是重用代码的最优形 式。可以充分利用微软编写的基本代码而不是 由自己来开发。例如,一个 C O M+应用程序的 Tr a n s a c t i o n s选项卡,如图1 4 - 2所示。 在此选项卡中选择 R e q u i r e d选项,就告诉 了C O M+我们所用的组件要用 C O M+提供的事务服务,即告诉 C O M+每个新的组件实例都 应加入到一个事务中。 在第1 9章将要讲到,事务处理能使一组组件做为一个整体单位共同工作。 (4) 没有C O M,A S P将不再是ASP 没有C O M,A S P就不会这么容易扩充,使用也不会如此简单,也许它将不存 在。 除非A S P是建立在一些相同的规范/实现,否则就必须以不同的方式调用不同的组件,而 且要根据组件是用什么语言编写的或者是哪个公司提供的。设想一下,为了能引用组件的一 些方法,必须弄懂所有方式,这是 C + +开发者多年以来一直面对的一个问题,到今也没解决。 但是C O M解决了,因为最近许多公司都逐渐适应了 C O M。没有C O M,就要花很多时间弄懂组 件编写者的意图及不同的A P I。应该感谢C O M提供了一个容易使用和基于对象编程的范型。 微软估计有3 0 0万开发者利用C O M开发C O M应用程序,每天有2亿人使用C O M应 用程序,这使C O M成为世界范围内最成功的对象模型。 14.1.3 COM开发工具 就编写组件的语言而言,微软所提供的主要是 V C + +和V B,本书中两者都要讲到。 V C + +在性能和灵活性的统一上有些缺陷,它使开发者需要深入理解 C O M的内部工作情 况。但是,一旦理解了,再使用微软活动模板库 (Active timeplate library,AT L ),编写组件就 像用V B一样又快又简单。但首先,必须了解相应的内容。 436计计ASP 3 高级编程 下载 图14-2 Tr a n s a c t i o n s选项卡
Sinapub.com 载 第14章COM、COM+和sp437 VB是一个很好的折衷方案 如果想不需经过长时间的COM学习就能快速地编写组件,并且对组件的性能要求不高, 那么使用VB是一种很好的折衷方案。VB隐含了大部分的COM运行期库,这意味着不需再花 时间学习COM,就可以编写COM组件;如果用其他的语言,例如C++,则必须熟悉COM之 后才能创建COM组件。 在VB中,对COM有一点基本的理解就能帮助我们优化组件(通过理解为什么要那样做), 这就是我们要介绍更多关于COM的内容的原因。尽管ⅤB隐含了COM的大部分,理解ⅤB如何 将其语言结构映射到COM,并且了解VB中COM的限制是很重要的 VB是ASP的自然发展道路,尤其是对那些习惯于使用Ⅴ SCript工作的人。本书将用很大 的篇幅讲述如何用ⅤB开发组件,同样也会讲述如何使用C++开发组件,这与Java有一些相似 处。我们还要讲述如何用 JavaScript开发组件。 本书用VB60作为开发工具,尽管ⅤB60与VB50稍微有一点不同,但对于本书 讲述的一些主要内容,用早期的版本一样可以做。 142接口 COM领域的许多人认为COM最重要的和最强大的方面是基于接口的编程。 如果编写代码去完成某项功能的话,其接口就是一系列定义某些东西如何使用 的方法。 功能与实现的抽象观念已存在多年。只要有一些面向对象的知识的人都会很快对抽象数 据类型( Abstrct Data Type,ADT)做一个正确的比较。 基于接口编程就好像控制电视机,遥控器使我们能够通过一个接口来遥控电视,并不 要知道遥控器的内部工作方式,但应知道如何通过遥控器上的各种按钮来控制选台、调节音 量和开关电视 遥控器按钮提供的功能可以由一个接口定义,称为 IRemotcontrol。通过这个接口,各种 控制就能实现,遥控器接口具有表14-1所示的方法。 表14-1遥控器接口具有的方法及说明 说明 如果电视机已经打开,则关闭:反之亦然 Change channe 转换到指定的频道 增加音量 Decrease volume 降低音量 Getchannel 返回目前选定的频道 如果有不同厂家生产的三台电视机,由于使用了接口定义,各个遥控器都能使用上述 方法实现相同的功能,每个遥控器也许内部工作情况不同,但知道如何使用接口(这里的接口 就是遥控器上的按钮)就足够了,只要知道面前是哪台电视机,就能通过他的遥控器调换频道, 看自己喜欢的节目 从内部过程看,遥控器上接口的实现是通过另外一个COM接口与电视机交流,这个接 就是 TElevision,这个接口有与 I Remote control相似的方法。如果每台电视机都实现相同
V B是一个很好的折衷方案 如果想不需经过长时间的 C O M学习就能快速地编写组件,并且对组件的性能要求不高, 那么使用V B是一种很好的折衷方案。 V B隐含了大部分的 C O M运行期库,这意味着不需再花 时间学习C O M,就可以编写C O M组件;如果用其他的语言,例如 V C + +,则必须熟悉C O M之 后才能创建C O M组件。 在V B中,对C O M有一点基本的理解就能帮助我们优化组件 (通过理解为什么要那样做 ), 这就是我们要介绍更多关于 C O M的内容的原因。尽管 V B隐含了C O M的大部分,理解V B如何 将其语言结构映射到C O M,并且了解V B中C O M的限制是很重要的。 V B是A S P的自然发展道路,尤其是对那些习惯于使用 V B S c r i p t工作的人。本书将用很大 的篇幅讲述如何用 V B开发组件,同样也会讲述如何使用 C + +开发组件,这与 J a v a有一些相似 之处。我们还要讲述如何用 J a v a S c r i p t开发组件。 本书用VB 6.0作为开发工具,尽管VB 6.0与VB 5.0稍微有一点不同,但对于本书 讲述的一些主要内容,用早期的版本一样可以做。 14.2 接口 C O M领域的许多人认为C O M最重要的和最强大的方面是基于接口的编程。 如果编写代码去完成某项功能的话,其接口就是一系列定义某些东西如何使用 的方法。 功能与实现的抽象观念已存在多年。只要有一些面向对象的知识的人都会很快对抽象数 据类型(Abstrct Data Ty p e,A D T )做一个正确的比较。 基于接口编程就好像控制电视机,遥控器使我们能够通过一个接口来遥控电视,并不需 要知道遥控器的内部工作方式,但应知道如何通过遥控器上的各种按钮来控制选台、调节音 量和开关电视。 遥控器按钮提供的功能可以由一个接口定义,称为 I R e m o t C o n t r o l。通过这个接口,各种 控制就能实现,遥控器接口具有表 1 4 - 1所示的方法。 表14-1 遥控器接口具有的方法及说明 方 法 说 明 Tu r n O n O ff 如果电视机已经打开,则关闭;反之亦然 C h a n g e C h a n n e l 转换到指定的频道 I n c r e a s e Vo l u m e 增加音量 D e c r e a s e Vo l u m e 降低音量 G e t C h a n n e l 返回目前选定的频道 如果有不同厂家生产的三台电视机,由于使用了接口定义,各个遥控器都能使用上述的 方法实现相同的功能,每个遥控器也许内部工作情况不同,但知道如何使用接口 (这里的接口 就是遥控器上的按钮)就足够了,只要知道面前是哪台电视机,就能通过他的遥控器调换频道, 看自己喜欢的节目。 从内部过程看,遥控器上接口的实现是通过另外一个 C O M接口与电视机交流,这个接口 就是I Te l e v i s i o n,这个接口有与 I R e m o t e C o n t r o l相似的方法。如果每台电视机都实现相同 第1 4章 C O M、C O M +和A S P计计437 下载