Service GIS,業務敏捷的GIS應用之道

進入21世紀以來,GIS在各行各業的應用取得快速發展,GIS平臺軟件已經從一項專業的軟件技術,發展成爲IT領域十分重要的平臺類軟件,在越來越多的領域發揮着重要作用。政府和企事業單位建立了大量的GIS應用系統,這些應用系

  進入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.chicagocrime.org 的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之後新的主流開發平臺。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章