一种Internet策略 ActiveX开发涉及范围广泛 ActiveX开发的包含了许多方面,比如自动化服务器,ActiveX控件,COM对象等等。 术语ActiveX在过去的几年中成为了许多开发人员及团队的战斗口号,另一方面市场也对其大肆宣扬,然而,没有几个人能解释清楚其确切的含义。本书主要目的就是说明什么是ActiveX以及它对开发人员意味着什么。我希望读者能够学到和我为写本书而学到的知识尽可能一样多。 Microsoft第一次介绍ActiveX是在1996年的Intenet专业开发人员大会(Internet PDC)上。ActiveX源自于大会的口号“Activate the Internet”(可理解为:让因特网活跃起来),与其说ActiveX是一种开发应用程序的技术或是架构,不如说它是一种启示。 在开发大会期间,Microsoft正在与控制了Internet浏览器市场的Netscape进行激烈的竞争。但是,大会表明了Microsoft感兴趣的不仅仅是浏览器市场。Microsoft演示的工具从电子存储前端产品、新的OLE控件到虚拟现实聊天软件等等,应有尽有。 ActiveX是Micrsoft共同的新口号,类似于90年代初的提出的OLE(Object Linking and Embedding,对象链接与嵌入),而且在很短的时间内,远远超越了“Activate the Internet”。 ActiveX成为了包含一切的术语:从Web页面到OLE控件。ActiveX开始变得重要起来:一方面,小型、快速、可重用的组件能够让你紧紧抓住来自于Micrsoft,Internete及工业的最新技术;另一方面,ActiveX代表了Internet与应用程序集成的策略。目前,在产品或公司中没有使用Internet及ActiveX技术被认为是过时的。事实上,描述ActiveX就像描述色彩一样,它既不是技术也不是架构,而是一个概念,一个指导。 ActiveX, OLE及Internet ActiveX和OLE开始成为同义词,人们曾经谈到的OLE控件现在成为了ActiveX控件,OLE文档对象现在成为了ActiveX文档对象。有时,整个关于如何实现OLE技术的文档被更新为ActiveX技术,唯一的变化就是术语OLE,现在命名为ActiveX。 尽管OLE及ActiveX取得了巨大的进步,表面上每天还有与其相关的新技术出现,但Internet是否已经或直接卷入到许多相关的领域还是令人置疑的。对小型、快速、可重用组件(COM组件)的需求已经些年头了,分布式组件(DCOM组件)在几年前的OLE 2.0 专业人员开发大会上作了第一次演示。Visual Basic(VB)开发组在使ActiveX技术成为可能的早期扮演了得要角色。包含在ActiveX SDK中的BaseCtl框架就是由VB开发组开发的,它解决了VB为减少载入时间而对小型,轻量级组件的需求。Internet唯一的贡献就是它需要一种方式来实现和发布Web页面。实际上,每一个ActiveX的新功能都能追溯到最基本的,全球泛围的对小型、快速,可重用组件的需求,而这,就是从OLE和COM开始的。 ActiveX并不意味着要代替OLE,仅仅把它扩大到包括Internet,企业内部网商务应用程序及家庭应用程序的开发,以及开发这些应用的工具。 Microsoft发布了大量关于ActiveX开发的文档。OC 96 规范定义了如何开发启动更快速,绘制能力更强的控件,它也定义了哪些接口是必需的,而哪些接口是可选的。”OLE Control and Control Container Guidelines”提供了关于控件与控件容器交互的重要信息。Microsoft的Web站点成为了信息丰富的及创建、使用、分发ActiveX组件的中心。 除了创建ActiveX组件的技术细节外,Microsoft建立起了一套使用和集成ActiveX组件的标准。从VB、Micrsoft Word到Java的每一个产品都继承了使用ActiveX组件的能力。在ActiveX技术出现前,一大半的应用程序无法像如今这样如此紧密相关地无缝集成。 接下来的部分将谈到我们可以创建的ActiveX组件的类型,以及我们何时,为什么才需要使用它—这可能更有帮助。 ActiveX组件的分类 本书的主题是ActiveX组件的开发。这些组件可以分为以下几类: Automation Servers:自动化服务器 自动化服务器是可以被其它应用程序编程驱动的组件。一个自动化服务器包含到少一个或多个基于IDispatch的接口,其目的是为了让其它的应用程序创建和连接它。根据服务器本身的特性,一个自动化服务器可以包含也可以不包含用户界面。 注意:对于控制器来说,执行最快的就是进程内自动化服务器。但要记住,使用进程内服务器并不能保证其性能。如果一个进程内自动化服务器在一个进程空间内被创建,而被另一进程内的控制器所控制,它就降级为进程外服务器,其性能与进程外服务器相同。关于进程空间与服务器冲突的更多信息请参见本书的第二部分。 自动化控制器 自动化控制器可以是任意类型的应用程序,DLl或是EXE,能够以进程内,本地,远程的方式访问自动化服务器。一般地,注册表入口与服务器的实现指明了与控制器相关的自动化服务器应该在哪一个进程空间运行。 控件 COM对象 注意:自动化服务器也能受益于COM接口,这些服务器就是双接口服务器。自动化服务器接口有一个伴随的COM接口,它描述了对象的方法及属性。象VB这样的自动他控制器在使用服务器的时候能够利用双接口的优势提供更高的性能。双接口服务器有一个缺点就是在定义属性和方法时,其数据类型被限制为被OLE自动化所支持的类型。 |
|