目前,在软件开发领域,一场新的革命正在悄悄兴起,这是由日趋成熟的组件技术引发的。几年以前,当微软公司首先使用OLE (Object Linking & Embedding)的时候,其初衷是为了增强软件的互操作性。然而在使用过程中,人们逐渐认识到这一技术背后的实质性内容和它在软件开发中所扮演的重要角色。组件技术将以前所未有的方式提高软件产业的生产效率,这一点已逐步成为软件开发人员的共识。传统的Client/Server结构、群件、中间件等大型软件系统的构成形式,都将在组件的基础上重新构造。
组件技术使近二十年来兴起的面向对象技术进入到成熟的实用化阶段。在组件技术的概念模式下,软件系统可以被视为相互协同工作的对象集合,其中每个对象都会提供特定的服务,发出特定的消息,并且以标准形式公布出来,以便其他对象了解和调用。组件间的接口通过一种与平台无关的语言IDL(Interface Define Language)来定义,而且是二进制兼容的,使用者可以直接调用执行模块来获得对象提供的服务。早期的类库,提供的是原代码级的重用,只适用于比较小规模的开发形式;而组件则封装得更加彻底,更易于使用,并且不限于C++之类的语言,可以在各种开发语言和开发环境中使用。
由于组件技术的出现,软件产业的形式也将会有所改变。大量组件生产商会涌现出来,并推出各具特色的组件产品;软件集成商则利用适当的组件快速生产出用户需要的某些应用系统;大而全的通用产品将逐步减少;很多相对较为专业,但用途广泛的软件,如GIS、语音识别系统等,都将以组件的形式组装和扩散到一般的软件产品中。
GIS技术的发展,在软件模式上经历了功能模块、包式软件、核心式软件,从而发展到ComGIS和WebGIS的过程。传统GIS虽然在功能上已经比较成熟,但是由于这些系统多是基于十多年前的软件技术开发的,属于独立封闭的系统。同时,GIS软件变得日益庞大,用户难以掌握,费用昂贵,阻碍了GIS的普及和应用。组件式软件是新一代GIS的重要基础, ComGIS的出现为传统GIS面临的多种问题提供了全新的解决思路。
ComGIS是面向对象技术和组件式软件在GIS软件开发中的应用。认识ComGIS,首先需要了解所依赖的技术基础-组件式对象模型和ActiveX控件。
COM是组件式对象模型(Component Object Model)的英文缩写,是OLE和ActiveX共同的基础。COM不是一种面向对象的语言,而是一种二进制标准。COM所建立的是一个软件模块与另一个软件模块之间的链接,当这种链接建立之后,模块之间就可以通过称之为“接口”的机制来进行通信。COM标准增加了保障系统和组件完整的安全机制,扩展到分布式环境。这种基于分布式环境下的COM被称作DCOM (Distribute COM)。DCOM实现了COM对象与远程计算机上的另一个对象之间直接进行交互。
ActiveX是一套基于COM的可以使软件组件在网络环境中进行互操作而不管该组件是用何种语言创建的技术。作为ActiveX技术的重要内容,ActiveX 控件是一种可编程、可重用的基于COM的对象。ActiveX控件通过属性、事件、方法等接口与应用程序进行交互。
一些软件公司专门生产各种用途的ActiveX控件,比如:数据库访问、数据监视、数据显示、图形显示、图像处理,甚至三维动画等等。几个著名的GIS软件公司把COM技术应用于GIS开发,纷纷推出由一系列ActiveX控件组成的ComGIS软件,比如Intergraph公司的GeoMedia、ESRI的MapObjects、MapInfo公司的MapX等。
ComGIS的基本思想是把GIS的各大功能模块划分为几个控件,每个控件完成不同的功能。各个GIS控件之间,以及GIS控件与其它非GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的GIS应用。控件如同一堆各式各样的积木,他们分别实现不同的功能(包括GIS和非GIS功能),根据需要把实现各种功能的 “积木”搭建起来,就构成应用系统。
许多WebGIS软件包均采用HTML标准,活动内容采用Java applets(SUN 标准)或者 ActiveX(Microsoft 标准)进行传递。新型的分布式面向对象WebGIS可以采用CORBA/Java或者DCOM/ActiveX技术进行开发。ActiveX控件不仅可以用于一般的ActiveX容器程序 (比如Visual Basic、Delphi等) ,而且能嵌入Web页面中。任何ActiveX控件都可以设计成Internet控件,作为Web页面的一部分,Web页面中的控件通过脚本(Script)互相通信。因此,ComGIS是WebGIS的一种解决方案,而基于这一方案的WebGIS通常比基于Java的运行速度快。