黃智華
(南寧市勘測院,廣西 南寧 530000)
萬維網(wǎng)是人類歷史上最深遠(yuǎn)、最廣泛的傳播媒介。萬維網(wǎng)的成功,在很大程度上是因?yàn)槠滠浖軜?gòu)的設(shè)計(jì)滿足了Internet規(guī)模的分布式超媒體系統(tǒng)的需求。在Web2.0時(shí)代,呼喚有一種現(xiàn)代Web架構(gòu)的模型,用來指導(dǎo)Web的設(shè)計(jì)、定義和部署。2000年,加州大學(xué)歐文分校的Roy Thomas Fielding博士提出了REST(表述性狀態(tài)轉(zhuǎn)移)這種軟件架構(gòu)的概念。REST允許程序在不同計(jì)算機(jī)上獨(dú)立于操作系統(tǒng)或平臺進(jìn)行通訊,通過發(fā)送一個(gè)HTTP請求到網(wǎng)址,并獲取某種格式的返回?cái)?shù)據(jù),支持的格式包括 XML或嵌入網(wǎng)址的XML。REST中,數(shù)據(jù)在調(diào)用之后仍保持原始狀態(tài)。
目前在主流的Web服務(wù)實(shí)現(xiàn)方案中,因?yàn)镽EST模式的Web服務(wù)相對來說更加簡潔,越來越多的Web服務(wù)開始采用REST風(fēng)格設(shè)計(jì)和實(shí)現(xiàn)。例如,網(wǎng)易郵箱提供REST風(fēng)格的Web服務(wù)進(jìn)行郵件管理;雅虎提供的Web服務(wù)也是REST風(fēng)格的。利用REST開發(fā)地理信息系統(tǒng),可以順理成章地繼承REST的優(yōu)勢。
自從2008年ArcGIS Server 9.3發(fā)布以來,其新增了一種新的GIS服務(wù)——ArcGIS Server REST服務(wù),并逐漸開始大行其道。正是有了這樣一個(gè)基于REST的服務(wù),地理信息系統(tǒng)開發(fā)難度的問題才得以迎刃而解。
第一,它將表現(xiàn)層與后臺徹底分離。ArcGIS Server REST將GIS基礎(chǔ)和核心功能全部進(jìn)行了封裝,并以服務(wù)的方式提供給客戶端,如常見的地圖展示、圖層信息訪問、空間幾何查詢、高級分析功能等。客戶端無論是Javascript、Flex還是Silverlight無需關(guān)注GIS功能的實(shí)現(xiàn)。這樣低耦合的設(shè)計(jì)方法,結(jié)構(gòu)更加清晰,大大方便了系統(tǒng)的維護(hù)。
第二,便于快速開發(fā)。沒有任何后臺邏輯之前,表現(xiàn)層就可以開始設(shè)計(jì),甚至沒有發(fā)布服務(wù),亦可以模擬服務(wù)來進(jìn)行開發(fā),最后再將模擬服務(wù)換成真正的服務(wù)即可。
第三,合理分配負(fù)載,減輕服務(wù)器壓力。如果大量數(shù)據(jù)渲染全部交由GIS Server進(jìn)行處理,然后將處理結(jié)果生成一張圖片返回,大并發(fā)的時(shí)候服務(wù)器速度會(huì)很慢甚至死掉,然而基于REST的應(yīng)用架構(gòu),REST負(fù)責(zé)將需要的數(shù)據(jù)傳回客戶端,壓力較大的渲染工作放到客戶端進(jìn)行,有效減輕了服務(wù)器的壓力。
在使用和消費(fèi)REST方面,ArcGIS API for JavaScript、ArcGIS API for Flex、ArcGIS API for Silverlight就是ArcGIS的“三劍客”,使大量開發(fā)人員可根據(jù)需要選用它們進(jìn)行地理信息系統(tǒng)的開發(fā)。
從根本上說,REST API就是由網(wǎng)址組成的。首先構(gòu)建請求網(wǎng)址,接著發(fā)送請求到ArcGIS Server,等待接收服務(wù)器的響應(yīng),然后解析和使用服務(wù)器的響應(yīng)。這種優(yōu)勢對基于瀏覽器的編程方面特別重要。使用REST API到服務(wù)器端和桌面編程也是非常簡單,因而有很大的發(fā)展?jié)摿Α?/p>
南寧市基礎(chǔ)地理信息服務(wù)平臺采用了 Silverlight技術(shù),基于ArcGIS Server和綁定服務(wù)開發(fā)富客戶端程序。使用ArcGIS API for Silverlight,能容易地創(chuàng)建高質(zhì)量的交互、華麗的界面和表現(xiàn)力豐富的Web程序。
首先要?jiǎng)?chuàng)建REST服務(wù),必須要將GIS資源發(fā)布為Web服務(wù),使他們能夠被互聯(lián)網(wǎng)或局域網(wǎng)的客戶端應(yīng)用程序遠(yuǎn)程調(diào)用。可以使用ArcCatalog或ArcGIS Server Manager發(fā)布。發(fā)布之后,就可以使用瀏覽器訪問“http://(服務(wù)器)/ArcGIS/rest/ services/(服務(wù)名稱)/(服務(wù)類型)”這樣的方式展示服務(wù)的大量元數(shù)據(jù)。
在ArcGIS API for Silverlight中調(diào)用它顯示地圖,只需簡單的代碼:
正是基于這種簡潔清晰的REST方式,開發(fā)的南寧市基礎(chǔ)地理信息服務(wù)平臺實(shí)現(xiàn)了放大、縮小、漫游、復(fù)位、前進(jìn)、后退、放大鏡查看、信息查看、搜索、點(diǎn)測、線測、面測、鷹眼、圖層、書簽、數(shù)據(jù)資源切換等基本功能。
在性能方面,緩存是改善REST地圖性能的關(guān)鍵技術(shù)。實(shí)時(shí)創(chuàng)建地圖是最費(fèi)力和最耗時(shí)的方式,所以從緩存中找回地圖將大大提高性能。如果存儲(chǔ)空間不受限制,高速緩存是最佳的選擇方案。在南寧市基礎(chǔ)地理信息服務(wù)平臺中,根據(jù)需求對GIS資源分級建立了緩存,使響應(yīng)速度得到了提升,增強(qiáng)了用戶體驗(yàn)。
REST開發(fā)正在流行,有理由相信REST將會(huì)不斷得到發(fā)展和完善。