分享

Service GIS,业务敏捷的GIS应用之道

 金陵一棵树 2010-08-26

Service GIS,业务敏捷的GIS应用之道

[日期:2008-01-23] 来源:《超图通讯》第9期  作者:宋关福 [字体: ]

 

  进入21世纪以来,GIS在各行各业的应用取得快速发展,GIS平台软件已经从一项专业的软件技术,发展成为IT领域十分重要的平台类软件,在越来越多的领域发挥着重要作用。政府和企事业单位建立了大量的GIS应用系统,这些应用系统不再是面子工程,而是实实在在地在为业务管理服务。

  但是,当前的GIS应用发展过程中,还面临着一个困境,那就是系统很难跟得上需求的快速变化。对系统维护工程师而言,系统开发完成后,一旦业务本身或业务流程发生了调整,系统要不断修改维护,工作量十分巨大。对于应用单位来讲,若维护跟不上,投入大量人力、物力和财力的系统刚刚建成,在需求面前很快变得落伍了,以至于部分应用单位对GIS应用缺乏信心。对开发商而言,做完一个单位的系统,若要推广到同行业其他单位,会发现尽管业务差别不大,但由于那些细小的需求差别,原来的系统很难直接推广,仍然需要对系统进行不少修改,工作量仍然较大。这是我们共同面临的问题,在GIS的应用领域中,我们期盼业务敏捷(Business Agility)。



图1 GIS应用领域呼唤业务敏捷

  什么是业务敏捷?业务敏捷包含两层含义:第一,IT在业务提出变化之后一个恰当的时间段里响应这种变化;第二,IT所做出的变化能够恰当地反映出业务的需求。

  那么,如何才能实现业务敏捷呢?

SOA助力GIS业务敏捷

  业务敏捷的实现有赖于SOA。尽管SOA已不是什么新概念,甚至已经被炒得有些过头,但还是有必要再次提一提,这是一种对GIS软件技术发展有巨大意义的架构思想。

  SOA是面向服务的体系架构(Service Oriented Architecture)的英文缩写。事实上,世界知名的咨询公司Gartner在1996年就提出了SOA的思想。2002年,Gartner又提出了SOA是现代应用开发领域最重要的课题。2005年,一些IT组织成功建立并实施了SOA应用软件,IBM等厂商看到其价值,也纷纷提出自己的SOA解决方案。据Gartner预测,到2008年,SOA将成为占有绝对优势的软件工程实践方法,它将很可能结束传统的整体软件体系架构长达40年的统治地位,届时将有70%的企业在进行IT建设时会转向SOA。

  2008年即将到来,不管这个比例是否真能达到,但不可否认,SOA确实得到业界足够的重视。若要真正发挥SOA的作用而不仅仅当作一种概念传播,我们有必要了解SOA真正的内涵是什么。是业务敏捷!提出SOA正是为了实现业务敏捷。

  那么,SOA如何实现业务敏捷?让我们来回顾一下软件工程方法的进化过程:

  上世纪70年代,结构化编程占据了计算机软件编程的统治地位,C和Pascal之类的语言大行其道。为了提高软件开发效率,很多公司开始思考代码重用。在C语言中,重用的单元就是函数。现在我们已经知道,函数的重用只是代码重用很初级的方式。

  面向对象(Objects Oriented, OO)的提出,把代码重用推向一个新的高度。OO是非常优秀的软件工程方法,其优点是比结构化程序设计提供了更好的代码复用机制。但OO也存在不足,其应用系统依赖于某种具体的开发语言,一旦有细微的修改,必须重新部署大量的代码。

  1994年提出的组件技术解决了面向对象的上述问题,我们姑且称之为面向组件(Components Oriented)。从对象到组件,这是一个质的飞跃。面向组件解决了对具体开发语言的依赖,让我们在复用组件时不用考虑开发语言的差别,基于不同语言开发的组件也可以在一起使用。

  在1996年到2000年之间,组件技术带来了GIS领域十分重要的技术革命,众多国际国内的GIS平台厂商纷纷把GIS移植到Windows操作系统,并基于COM技术研发了大型组件式GIS (Component GIS)平台。正是这一轮技术革命,推动着GIS平台从一个带着特殊行业烙印的专业软件演化为通用软件,并融入IT主流。

  在今天看来,从传统GIS迈向组件式GIS是技术发展的必然选择,但在当时,不是所有的企业都能看得准,可以说从传统GIS转向组件式GIS是GIS技术发展史上的惊险一跳。

  那些成功完成了这惊险一跳的国内外企业获得了快速发展;相反,因为忽略了这一跳或者没有很好完成这一跳,一些知名GIS品牌在此期间没落甚至消失。1997年成立的超图公司也正是抓住了这一跳的机会,研发了全组件式GIS软件开发平台——SuperMap Objects 2000,才能在竞争激烈的GIS平台软件市场得到生存和发展的机会。总之,组件式GIS一经推出,很快成为GIS应用系统开发的主流技术,并主导了近十年的GIS应用开发模式,直到今天还是C/S结构的GIS应用系统开发平台的首选。

  从软件工程方法发展的规律来看,每一种新的方法和技术都融合了前一代技术的优点,并致力于改善前一代技术的缺陷。然而,每一个新产生的技术又会面临新的挑战,面向组件同样也存在不足。细粒度的组件与紧耦合的系统结构,导致局部需求更改后,仍有大量系统修改,也不满足业务敏捷的需要。此外,面向组件还在实现并发管理、事务处理、通讯协议、版本控制和安全方面,存在困难或具有较高的复杂度。

  尽管组件式GIS难以有效满足业务敏捷的需要,但业内一些有远见的GIS应用开发商采用了自己的解决办法,基于组件式GIS构建了企业内部使用的GIS业务开发平台,采用插件架构来实现业务平台本身的可扩展性和可维护性。应用系统建成后,可通过扩展插件来扩展新功能,以满足需求的变化。但前提是用户不能更换开发商,因为这种扩展能力是构建在开发商私有的架构基础之上,很难在不同开发商之间共享。

  所幸的是,面向服务方法很快作为应对面向对象以及面向组件缺陷的解决方案呈现在人们眼前。面向服务是在面向组件思想基础上发展起来的,从多个角度看,从组件到服务都是一个本质上的飞跃,就像组件是对象的一个本质飞跃一样。SOA强调松耦合和粗密度,在SOA的应用程序中,开发者只需要关注于业务逻辑的编写,以及通过可交换的、可互操作的服务终结点(Service Endpoint)暴露业务逻辑。客户端调用这些终结点,而不是服务代码或者它的实现包。因此SOA具有更高效率的代码重用机制,可以动态按需构建应用系统,更有助于实现业务敏捷。

  既然SOA是实现业务敏捷的有效思想,而且早已提出,那么为什么GIS平台厂商迟迟不见行动呢?

支持SOA,GIS厂商早已开始

  实际上,GIS厂商早已开始支持SOA,当WebGIS平台软件具备了发布WEB服务的能力时候,就可以说其已经开始支持SOA,并有助于实现业务敏捷了。SOA不是一种具体的技术,而是一种架构思想。有了支持Open GIS的WMS, WCS, WFS等Web服务标准的WebGIS平台,应用开发商就可以构架符合SOA思想的应用系统,通过可交换、可跨平台互操作的服务终结点暴露业务逻辑,提高代码复用的效率。

  2003年,武汉大学测绘遥感信息工程国家重点实验室与北京超图公司进行了互操作试验,通过Open GIS的WMS规范,把分别来自两个服务器的WebGIS应用整合在一起,一个服务器采用GeoStar的WebGIS平台,另一个则是SuperMap的WebGIS平台。来自两个服务器的地图数据可以叠加在一起显示,功能也可以整合。

  在Web 2.0中,这样的整合被称为Mashup。Mashup这个词来源于流行音乐,是从两首不同的歌曲(通常属于不同的流派)中混合演唱和乐器的音轨而构成的一首新歌。对这个词的翻译五花八门,如“混搭”、“混血”、“糅合”甚至“熔”,在能找到一个合适的中文翻译之前,我们还是更愿意继续称之为Mashup。

  在Web 2.0中,Mashup一个著名的例子来自 www. 的Web 站点。它解释了地图Mashup到底是什么,该网站将芝加哥警局在线数据库中的犯罪记录与Google Maps的地图复合在一起。用户可以与Mashup 站点进行交互,例如告诉它在图形界面上显示一个包含图钉的地图,图钉展示南加州最近所有入室抢劫案件的详细信息。这种概念和呈现方式非常简单,犯罪和地图数据复合之后提供的可视化的功能非常有趣。

  尽管Mashup提供了一种令人激动的、简便的Web应用开发方式,WebGIS平台也支持Mashup,但对业务敏捷来而言,这还远远不够,GIS平台厂商还可以做得更多。之所以说WebGIS还不能满足业务敏捷,有以下几方面的原因:

  第一,WebGIS平台主要面向信息发布,GIS功能相对简单,还无法代替组件式GIS实现应用系统的全部功能,以至于我们在实际应用中,不得不混合使用多种类型的GIS软件来开发应用系统,如WebGIS和组件式GIS等,应用系统的架构也往往采用B/S和C/S混合的模式,前者负责信息发布和功能简单的应用部分,那些功能复杂的部分则由后者完成。

  第二,WebGIS服务器端不具备服务聚合(Service Aggregation)能力,在WEB客户端由二次开发者进行的简单聚合,难以满足大型专业应用系统建设的全部需求,也难于实现聚合后的服务再次以标准的方式发布以便被第三方聚合。

  第三,客户端GIS软件(桌面GIS和组件式GIS)缺乏完整的服务聚合能力,即使偶有支持使用Web数据或Web服务,也往往存在不少限制,外部服务被当作二等公民,无法很方便的使用,也不易与已有的概念模型相匹配。以至于上述混用B/S和C/S结构的模式难以通过服务整合形成一体化的系统。

  既然WebGIS还不能有效满足业务敏捷的需要,那么有没有更好的解决方案呢?

GIS的再次关键一跳

  综合考虑WebGIS对SOA已有的支持基础,以及存在的问题,我们提出服务式GIS(Service GIS)的概念和技术架构。

  Service GIS是一种基于面向服务软件工程方法的GIS技术体系,它支持按照一定规范把GIS的全部功能以服务的方式发布出来,可以跨平台、跨网络、跨语言地被多种客户端调用,并具备服务聚合能力以集成来自其他服务器发布的GIS服务。Service GIS软件平台的实现主要包括以下几方面的工作:

  ◆在细粒度组件式GIS基础上,封装粒度适中的全功能的GIS服务群,构成Service GIS的服务器,向客户端发布这些服务。这里强调全功能的GIS服务,包括数据管理、二维可视化、三维可视化、地图在线编辑、制图排版和各类空间分析和处理等。

  ◆服务器支持发布基于通用规范的服务,如WMS、WCS、WFS、WPS、GeoRSS、 KML等,以便被第三方软件作为客户端集成调用。

  ◆客户端GIS软件具备服务聚合能力,可聚合同一厂家服务器软件和第三方服务器软件发布的GIS服务,并与本地数据和本地功能集成应用。

  ◆服务器端软件具备强大的服务聚合能力,可以聚合来自其他服务器上发布的GIS服务,并可以将聚合后的结果再次发布,再次发布的服务还可以继续被其他的服务器软件聚合。

  关于服务的粒度,有必要简单做个说明。细粒度服务的特点是:通讯次数多,效率低,但灵活性高。举个例子,如果用细粒度服务实现缓冲区查询,我们需要调用两个不同的服务完成这个功能:服务一,输入一条道路线和缓冲区半径,输出一个缓冲区范围(多边形);服务二,输入一个多边形,查询处在该面范围内的所有居民点。连续调用上述两个服务即可完成缓冲区查询功能。

  粗粒度服务的特点是:通讯次数少,效率高,但灵活性相对较低。上述案例若用一个粗粒度服务实现则为:输入一条道路线和缓冲区半径,输出在这条道路线的缓冲区半径范围内的所有居民点,一次调用即可完成任务。

  实际上,服务粒度的粗细是相对的。仅仅提供粗粒度服务,则可能导致系统灵活性不够,所以在设计服务时会考虑多种级别的服务并存,在不同情况下需要调用不同粒度的服务。
Service GIS包括三个要素,即:服务器、服务规范和客户端。Service GIS的服务器是服务的提供者,可以遵循某一种或多种规范发布服务。服务规范可以是公认的服务标准,如WMS、WCS、WFS、WPS和GeoRSS等,同时GIS平台软件厂商也可以自定义服务规范。Service GIS的客户端是服务的接受者,一般地,可分为瘦客户端(Thin Client)和富客户端(Rich Client)两种,前者通常体现为浏览器中加载轻量级的插件,甚至无需任何插件,由浏览器直接执行来自服务器端的脚本实现;后者可以是通用的或专用的GIS桌面软件和组件开发平台,也可以是另一个服务器直接作为客户端,聚合前一个服务器发布的服务。

  Service GIS能更全面地支持SOA,通过对多种SOA实践标准与空间信息服务标准的支持,可以使用于各种SOA架构体系中,与其它IT业务系统进行无缝的异构集成,从而可以更容易地让应用开发者快速构建业务敏捷应用系统。与基于面向组件软件工程方法的组件式GIS相比,服务式GIS继承了前者的技术优势,但同时又有一个质的飞跃。从组件式GIS到服务式GIS,这既是后者在前者基础上的自然进化和发展,同时也是GIS领域再一次关键一跳!在今后一段时间内,Service GIS将与组件式GIS 互为补充,共同进步和发展,最终Service GIS将成为应用系统开发新的主流。

SuperMap的Service GIS架构

  超图一方面在发展和扩展已有的WebGIS产品SuperMap IS Java/.NET,同时也在研发新一代Service GIS技术。2007年9月,超图发布了SuperMap GIS 2008,不仅增加了SuperMap iServer 2008这一全新的Service GIS服务器软件开发平台,还在桌面GIS软件SuperMap Deskpro 2008和组件式GIS开发平台SuperMap Objects 2008中增加了服务聚合的能力,与移动GIS平台eSuperMap和网络浏览器一起构成了SuperMap iServer的客户端,让SuperMap GIS 2008成为一个完整的Service GIS产品体系。



图2 SuperMap GIS 2008的Service GIS架构

  与传统WebGIS不同的是,SuperMap iServer提供GIS全功能的服务器,而不仅仅局限于信息发布和基本的交互功能,同时在服务端提供了灵活的服务聚合功能。通过iServer的服务聚合器,可以把第三方服务聚合在服务端再发布出去。

  SuperMap iServer支持发布服务的规范,包括SuperMap自定义的服务规范,公认标准的服务规范,如WMS、WCS、WFS、WPS,以及其他厂商的服务规范,如Google的KML。在Google Earth中就可以直接集成使用SuperMap iServer发布的KML地图数据。

  服务聚合能力是SuperMap iServer一个十分重要的特色,SuperMap iServer服务聚合支持多级嵌套。服务端聚合带给应用开发商和应用单位的价值包括:第一,降低系统中的数据成本,可以直接调用相关部门,或者公众电子地图网站的地图作为底图;第二,简易,通过增强配置能力,减少二次开发;第三,集成异地部署的数据和功能;第四,高效重用,重组已有服务,快速满足需求变化。

  在SuperMap GIS 2008的具体技术实现中,融合了面向服务、面向组件和面向对象这三代软件工程方法。



图3 SuperMap GIS 2008融合了三代软件工程方法

  SuperMap iServer是采用面向服务的思想封装的粗粒度服务群,是Service GIS的服务器开发平台,适合构建松耦合系统,包括Java和.NET两个版本,即SuperMap iServer Java和SuperMap iServer .NET,后者将在SuperMap GIS 2009中提供。

  SuperMap iServer本身是基于组件式GIS——SuperMap Objects构建的,SuperMap Objects则是采用面向组件的思想封装的细粒度组建群,适用于构建紧耦合应用系统,包括SuperMap Objects Java和SuperMap Objects.NET两个版本。

  SuperMap UGC则是SuperMap Objects构建的基础内核,是一套基于C++开发的GIS核心功能类库,采用的是面向对象技术,封装了粒度更细的对象(C++类),主要作为SuperMap GIS技术体系的基础内核,但同时也可使用于个别有特殊要求的应用系统开发。

与Service GIS相关的概念澄清

  说到这里,有必要澄清两组概念之间关系与差别,第一组是Universal GIS与Service GIS,第二组是Server GIS与Service GIS。

  2005年,超图提出了共相式GIS(Universal GIS)技术框架的思想,Universal GIS是GIS软件研发的一种技术框架,实际上是超图研发中心内部采用的一种架构思想,它给用户带来直接的好处就是一套产品可以实现高效的跨平台效果,特别是跨操作系统,解决以前GIS厂商基于某种操作系统研发GIS模式所带来的问题。在图3的技术框架中,基于跨平台的C++内核UGC,构建支持多种操作系统和多种开发语言的组件式GIS——SuperMap Objects Java/.NET,然后又在SuperMap Objects Java/.NET基础上构建Service GIS的服务器开发平台——SuperMap iServer Java/.NET,同样支持多种操作系统和多种开发语言。上述整个技术体系,我们称之为Universal GIS。Service GIS与Universal GIS是从完全不同角度思考的,Service GIS与组件式GIS则是同一技术序列的不同层次,二者有继承和发展的关系。

  从字面上看,Service GIS和Server GIS之间更容易混淆。Service GIS是包括服务提供者(服务器)、服务接受者(客户端)和服务规范在内的,面向服务的完整的GIS软件技术框架。Server GIS则泛指凡是运行在服务器端的所有GIS软件,包括各种类型的WebGIS和在服务器端有中间件的空间数据库引擎,前者如国外同行的产品ArcIMS和MapXtreme等,以及国内软件SuperMap IS Java/.NET、GeoBeans、MapGIS IMS、GeoSurf等,后者如ArcSDE;此外,Service GIS的服务器本身也是一种Server GIS。

  尽管Service GIS软件技术还需要一段时间去发展和完善,但不容置疑,从组件式GIS到服务式GIS的关键一跳是GIS软件技术发展的重要里程碑,其意义绝不亚于十年前从传统GIS到组件式的一跳。在GIS领域,Service GIS也将成为继组件式GIS之后新的主流开发平台。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多