ArcGIS Server 中AJAX应用系列(3)
????工作已經(jīng)初步落實(shí),這個(gè)文章是我原來(lái)投遞給雜志社的,但估計(jì)質(zhì)量比較差,被涮了,但不管如何,給大家做個(gè)參考吧!?
??? 這個(gè)系列準(zhǔn)備分成以下幾節(jié):
????Ajax的基本概念及.Net Callback 回調(diào)機(jī)制???
?????ArcGIS Server Ajax 框架分析及運(yùn)行原理
??? 基于工具欄使用ArcGIS Server Ajax 框架
??? 基于.Net Callback 回調(diào)機(jī)制使用ArcGIS Server Ajax 框架
??? 基于第三方Ajax框架擴(kuò)展ArcGIS Server Ajax 框架
??? 基于Ajax調(diào)用空間Web服務(wù)
基于ArcGIS Server的空間Web服務(wù)異步調(diào)用
周勝 ,鄒艷紅
(中南大學(xué)地學(xué)與環(huán)境工程學(xué)院 湖南長(zhǎng)沙 410083)
摘要:針對(duì)當(dāng)前空間Web服務(wù)平臺(tái)ArcGIS Server存在服務(wù)響應(yīng)效率低等問(wèn)題,將Ajax技術(shù)引入傳統(tǒng)空間Web服務(wù)模型,實(shí)現(xiàn)異步響應(yīng)空間Web服務(wù)。基于ArcGIS Server平臺(tái)提出了集成Ajax技術(shù)空間Web服務(wù)的框架,并通過(guò)實(shí)例研究了構(gòu)建空間Web服務(wù)和異步調(diào)用的過(guò)程。結(jié)果表明,集成Ajax技術(shù)空間Web服務(wù)的框架減少了數(shù)據(jù)傳輸量和Web調(diào)用時(shí)間,顯著提高了數(shù)據(jù)使用與功能服務(wù)調(diào)用效率,相比傳統(tǒng)空間Web服務(wù)框架具有明顯優(yōu)勢(shì)。
關(guān)鍵字:ArcGIS Server;空間Web服務(wù);Ajax
Research on Asynchronous Calling Spatial Web Services of ArcGIS Server
Zhou Sheng, Zou Yan Hong
(School of Geosciences and Environment Engineering; Central South University; Changsha 410083; )
Abstract: To solve the delaying response of prevailing Services which exists in spatial web service platform ArcGIS Server, Ajax is introduced into the traditional Spatial Web Service model to achieve an effect of asynchronous response of the Spatial Web Service. According to ArcGIS Server, presents a feasible framework of Spatial Web Service integrated with Ajax and provides a corresponding example. The results show that the framework reduce the volume of data?transmission and Web call time, significantly improve data use and?efficiency of the function service calls,?has obvious advantages?compared to the framework of traditional spatial Web services.
Key Words: ArcGIS Server; Spatial Web Services; Ajax
0.???????? 前言
Web服務(wù)(Web service)作為一種面向服務(wù)架構(gòu)的技術(shù),通過(guò)標(biāo)準(zhǔn)Web協(xié)議提供服務(wù),其松散耦合結(jié)構(gòu)保證了不同平臺(tái)應(yīng)用服務(wù)互操作的進(jìn)行。空間Web服務(wù)即在空間信息服務(wù)中引入Web服務(wù)技術(shù)[1],空間Web服務(wù)保證了空間信息操作的平臺(tái)無(wú)關(guān)性,又與其它應(yīng)用系統(tǒng)資源融合,最大程度利用現(xiàn)有資源,其核心內(nèi)容是通過(guò)Web服務(wù)與GIS功能相結(jié)合以服務(wù)的方式在網(wǎng)絡(luò)上發(fā)布,實(shí)現(xiàn)異構(gòu)地理空間信息的共享與互操作[2]。
傳統(tǒng)的空間Web服務(wù)在響應(yīng)效率方面存在明顯缺陷:其“請(qǐng)求-響應(yīng)”模式下用戶每次請(qǐng)求總是要等待服務(wù)器響應(yīng)且返回響應(yīng)都要重新刷新整個(gè)頁(yè)面。同時(shí),少量數(shù)據(jù)的改變也會(huì)導(dǎo)致頁(yè)面的全部刷新,既增加了網(wǎng)絡(luò)流量及服務(wù)器的負(fù)擔(dān),又導(dǎo)致互操作和交互性能相對(duì)較差。本文將基于典型空間Web服務(wù)的企業(yè)級(jí)平臺(tái)ArcGIS Server,在傳統(tǒng)空間Web服務(wù)上集成Ajax技術(shù),實(shí)現(xiàn)地理空間Web信息服務(wù)的異步響應(yīng),解決服務(wù)調(diào)用效率及用戶體驗(yàn)問(wèn)題,達(dá)到信息資源與地理空間信息的高效率共享與服務(wù)的目的。
1.???????? ArcGIS Server機(jī)制原理
1.1?????????? 體系結(jié)構(gòu)
ArcGIS Server基于ArcObjects以分布式對(duì)象技術(shù)標(biāo)準(zhǔn)構(gòu)建,ArcObjects由各種組件、接口和方法組成,其組件涉及面從細(xì)粒度對(duì)象(單個(gè)的幾何對(duì)象)到粗粒度對(duì)象(與ArcMap文檔交互的地圖對(duì)象)[3],因此ArcGIS Server每個(gè)組件都各自扮演著特定的角色,諸如進(jìn)程管理、激活、解除活動(dòng)以及平衡分配資源等。
ArcGIS Server由GIS服務(wù)器、Web服務(wù)器、Web瀏覽器、桌面產(chǎn)品四部分組成(圖1)。GIS服務(wù)器本身包括兩部分:Server Object Manager(SOM)和Server Object Containers(SOCs)。SOM是一個(gè)Windows/Unix服務(wù)進(jìn)程,它管理著一組分布在一個(gè)或多個(gè)服務(wù)器對(duì)象容器機(jī)器上的SOC,Web應(yīng)用通過(guò)局域網(wǎng)或廣域網(wǎng)直接連接到SOM服務(wù)器名稱或IP地址。SOC支持多個(gè)并發(fā)的服務(wù)器對(duì)象,因此提高了服務(wù)器使用性能。
ArcGIS Server的服務(wù)器對(duì)象實(shí)質(zhì)是一種粗粒度的ArcObjects組件對(duì)象,通過(guò)服務(wù)器對(duì)象可以訪問(wèn)與之相關(guān)的細(xì)粒度的ArcObjects組件對(duì)象。ArcGIS Server中的GIS 服務(wù)器可以宿主多個(gè)服務(wù)器對(duì)象,而服務(wù)器對(duì)象本質(zhì)上體現(xiàn)了GIS內(nèi)在的資源,可通過(guò)服務(wù)器對(duì)象的客戶端共享GIS 數(shù)據(jù)資源。
圖1 ArcGIS Server 體系結(jié)構(gòu)
1.2?????????? 內(nèi)核機(jī)制原理
ArcGIS Server是服務(wù)器端的ArcObjects組件集,具備跨平臺(tái)基礎(chǔ),通過(guò)對(duì)服務(wù)器對(duì)象的管理及ArcGIS Server的分布式體系部署機(jī)制,在Web環(huán)境下可獲得ESRI桌面GIS功能。
(1) 服務(wù)器對(duì)象管理;ArcGIS Server中服務(wù)器對(duì)象是空間數(shù)據(jù)的載體,服務(wù)器對(duì)象可創(chuàng)建最大數(shù)目必須是有限的。為了優(yōu)化系統(tǒng)運(yùn)行時(shí)的性能,對(duì)服務(wù)器對(duì)象的生命周期進(jìn)行有效的管理,可以通過(guò)設(shè)置服務(wù)器對(duì)象的池式(pooled)與非池式(none-pooled)管理來(lái)解決。非池式管理即用戶第一次請(qǐng)求服務(wù)器對(duì)象時(shí)服務(wù)器對(duì)象創(chuàng)建,用戶會(huì)話結(jié)束后釋放服務(wù)器對(duì)象。池式服務(wù)器對(duì)象是在服務(wù)器運(yùn)行時(shí)預(yù)先創(chuàng)建了指定數(shù)目的服務(wù)器對(duì)象,用戶請(qǐng)求服務(wù)器對(duì)象時(shí)優(yōu)先使用已創(chuàng)建的服務(wù)器對(duì)象,沒(méi)有空閑服務(wù)器對(duì)象才創(chuàng)建新的服務(wù)器對(duì)象,并且當(dāng)操作結(jié)束后立即將服務(wù)器對(duì)象釋放回到服務(wù)器對(duì)象池中等待下一個(gè)用戶會(huì)話。
(2) 分布式體系部署機(jī)制;ArcGIS Server提供了基于DCOM的負(fù)載平衡方法,進(jìn)行分布部署時(shí),經(jīng)過(guò)Windows域授權(quán)的用戶身份運(yùn)行ArcGIS Server SOM/SOC,并以具有訪問(wèn)SOM/SOC權(quán)限的用戶身份運(yùn)行Catalog或Manager管理ArcGIS Server。Web應(yīng)用服務(wù)器、GIS服務(wù)器可同時(shí)部署在同一臺(tái)機(jī)器,也可部署到多臺(tái)機(jī)器,GIS服務(wù)器的負(fù)載平衡由SOM完成,另外額外部署了一個(gè)SOC進(jìn)程,用于負(fù)載平衡算法。
2.???????? 基于Ajax技術(shù)的ArcGIS Server空間Web服務(wù)框架設(shè)計(jì)
1.3?????????? 基于Ajax的空間Web服務(wù)異步調(diào)用
現(xiàn)有大部分Web服務(wù)交互遵循的是請(qǐng)求/響應(yīng)模式(即基于表單-Form的提交), 請(qǐng)求/響應(yīng)模式要求用戶進(jìn)行一次Http請(qǐng)求后,等待服務(wù)器端返回一個(gè)動(dòng)態(tài)生成的HTTP網(wǎng)頁(yè)結(jié)果后,再進(jìn)行下一項(xiàng)操作。因此現(xiàn)有Web服務(wù)交互在實(shí)際應(yīng)用中存在著多方面的缺陷:。
目前,基于Ajax的網(wǎng)絡(luò)地理信息服務(wù)不斷出現(xiàn),最為典型的如Google Maps等,在這些應(yīng)用中Ajax技術(shù)優(yōu)勢(shì)得到了充分的體現(xiàn)。因此在傳統(tǒng)空間Web服務(wù)中引入Ajax引擎,以異步方式實(shí)現(xiàn)空間Web服務(wù)的交互,將在一定程度上解決當(dāng)前空間Web服務(wù)所存在的缺陷。在基于Ajax引擎的空間Web服務(wù)異步交互模型中(圖2),客戶端通過(guò)JavaScript調(diào)用Ajax引擎產(chǎn)生服務(wù)請(qǐng)求,Ajax引擎將請(qǐng)求異步送回Web服務(wù)器,在Web服務(wù)器結(jié)果返回之前,客戶端任何操作不受影響;Web服務(wù)器通過(guò)HTTP調(diào)用Web服務(wù),GIS服務(wù)器接到服務(wù)請(qǐng)求向數(shù)據(jù)庫(kù)請(qǐng)求并處理數(shù)據(jù),結(jié)果最后由Ajax引擎返回給客戶端,以可視化方式在客戶端瀏覽器呈現(xiàn)。
圖2?Ajax引擎的空間Web服務(wù)異步交互模型
1.4?????????? 集成Ajax技術(shù)的ArcGIS Server空間Web服務(wù)框架
在Ajax技術(shù)引入空間Web服務(wù)基礎(chǔ)上,本文基于ArcGIS Server平臺(tái)提出集成Ajax技術(shù)的空間Web服務(wù)框架(圖3),框架中將空間數(shù)據(jù)庫(kù)資源視為可訪問(wèn)的Web服務(wù)并結(jié)合ArcGIS Server強(qiáng)大的后臺(tái)服務(wù)功能,從而實(shí)現(xiàn)了數(shù)據(jù)交換和共享,并取得良好的用戶體驗(yàn)。相對(duì)傳統(tǒng)空間Web服務(wù)框架主要優(yōu)勢(shì)在于:按需取數(shù)據(jù),最大程度減少冗余;無(wú)刷新更新,減少等待時(shí)間;應(yīng)用中間層技術(shù),減少服務(wù)器端負(fù)擔(dān)等。
圖3 集成Ajax技術(shù)的ArcGIS Server空間Web服務(wù)框架
2?????????? 實(shí)例應(yīng)用研究
筆者在以長(zhǎng)沙市為背景,基于ArcGIS Server平臺(tái)開(kāi)發(fā)的飲食管理實(shí)驗(yàn)系統(tǒng)中,集成Ajax技術(shù)進(jìn)行了空間Web服務(wù)開(kāi)發(fā)研究。
2.1?????????? 實(shí)例系統(tǒng)簡(jiǎn)介
基于ArcGIS Server平臺(tái)開(kāi)發(fā)的飲食管理系統(tǒng)是一個(gè)面向餐飲空間信息與非空間信息的服務(wù)、控制與管理的WebGIS系統(tǒng),系統(tǒng)基于三層架構(gòu)設(shè)計(jì),如圖4所示,其中應(yīng)用層(虛線框內(nèi))基于.NET平臺(tái)及ArcGIS Server .NET ADF提供的組件進(jìn)行開(kāi)發(fā)。系統(tǒng)數(shù)據(jù)均由Oracle分布式儲(chǔ)存與管理,并借助于空間數(shù)據(jù)庫(kù)引擎(ArcSDE)訪問(wèn)。系統(tǒng)集成Ajax技術(shù)進(jìn)行了空間Web服務(wù)開(kāi)發(fā),在輕易實(shí)現(xiàn)互操作性的同時(shí),也使得系統(tǒng)資源達(dá)到最大共享,下面以構(gòu)建空間地址定位服務(wù)為例,闡述Web服務(wù)的實(shí)現(xiàn)和異步調(diào)用過(guò)程。
圖4 長(zhǎng)沙市飲食管理信息系統(tǒng)架構(gòu)圖
2.2?????????? 空間地址定位服務(wù)構(gòu)建與異步調(diào)用實(shí)例
空間地址定位是把描述成地址的地理位置信息轉(zhuǎn)換成可以用于ArcGIS Server的地理坐標(biāo)形式,具體方法是指將用戶交互式輸入的地址信息或從數(shù)據(jù)庫(kù)相關(guān)的地址描述信息,在經(jīng)過(guò)語(yǔ)義分析、字符串拆分,調(diào)用ArcGIS Server地圖編碼服務(wù),使地址信息自動(dòng)獲取對(duì)應(yīng)空間地理坐標(biāo)值,并準(zhǔn)確定位到相應(yīng)空間位置。
ArcGIS Server是服務(wù)器端ArcObjects組件集,對(duì)ArcGIS Server的編程操作都意味著對(duì)遠(yuǎn)端服務(wù)器上對(duì)象的操作,因此只有先與GIS服務(wù)器進(jìn)行連接,才能使用ArcObjects組件集進(jìn)行開(kāi)發(fā),下面為連接代碼。
ESRI.ArcGIS.ADF.Identity userIdentity = new ESRI.ArcGIS.ADF.Identity(username, password, domain);
ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection agsConnnection = new AGSServerConnection(host, userIdentity); // 創(chuàng)建用戶標(biāo)識(shí)并使用標(biāo)識(shí)建立連接
agsConnnection.Connect();
GIS服務(wù)器端ArcGIS Server地理編碼服務(wù)根據(jù)用戶輸入信息在一定范圍內(nèi)進(jìn)行地址匹配,完成匹配的地址數(shù)據(jù)被賦予空間坐標(biāo),從而在地圖上表示出此地址數(shù)據(jù)所代表的空間位置,完成空間地址定位服務(wù)的構(gòu)建部分關(guān)鍵語(yǔ)句如下。
?????? IPropertySet geocodeResults = geocodeServer.GeocodeAddress(addressProperties, null);
???????? IPoint addressPoint = (IPoint)geocodeResults.GetProperty("Shape");
用戶在瀏覽器頁(yè)面按格式輸入空間定位點(diǎn)的地址信息,在發(fā)送消息時(shí),為了達(dá)到異步調(diào)用地址定位服務(wù),客戶端采用Asp.NET提供的Callback回調(diào)技術(shù)實(shí)現(xiàn)客戶端的回調(diào)。
Function void GetAddr()
{Var Addrtxt= document.getElementById('Addr_txt').value;//異步返回服務(wù)器地址信息
<%=sCallBackFunctionInvocation%>}
?? ?Ajax 引擎將回調(diào)信息以XMLHTTP方式發(fā)送給服務(wù)器,服務(wù)器端添加Web服務(wù)引用并調(diào)用方法,Web 服務(wù)代理程序?qū)⑵滢D(zhuǎn)化為SOAP消息,通過(guò)網(wǎng)絡(luò)進(jìn)行空間Web服務(wù)調(diào)用語(yǔ)句如下,實(shí)現(xiàn)的系統(tǒng)空間定位服務(wù)界面如圖5所示
sCallBackFunctionInvocation = Page.ClientScript.GetCallbackEventReference(this, "message", "processCallbackResult", "context");?? ……
ToxicLocation.ToxicSiteLocator toxloc = new ToxicLocation.ToxicSiteLocator();//調(diào)用空間Web服務(wù)
object[] objs = toxloc.FindToxicLocations("message[0] "," message[1] ",10000);
for (int i = 0; i < objs.Length; i++)
{ ToxicLocation.ToxicSite toxsite = objs[i] as ToxicLocation.ToxicSite;?? ……?? }
3?????????? 結(jié)束語(yǔ)
基于Ajax技術(shù)的ArcGIS Server空間信息Web服務(wù)框架真正體現(xiàn)了SOA(面向服務(wù)架構(gòu))的理念,有效地解決了空間信息Web服務(wù)響應(yīng)效率的問(wèn)題,提高了空間信息服務(wù)的交互能力及用戶體驗(yàn)。但是, Ajax技術(shù)在空間信息Web服務(wù)中的應(yīng)用及開(kāi)發(fā)過(guò)程中還應(yīng)當(dāng)注意存在的問(wèn)題:不同瀏覽器之間的兼容、Ajax的濫用導(dǎo)致網(wǎng)絡(luò)堵塞、空間信息Web服務(wù)的安全性及遠(yuǎn)程通信等,因此都有待進(jìn)一步的深入與研究。
圖 5 系統(tǒng)空間定位服務(wù)
參考文獻(xiàn)
[1]??????? 劉岳峰.地理信息服務(wù)概述[J].地理信息世界.2004,(6):26-29
[2]??????? 馮文釗,彭立芹,張宏,閭國(guó)年.基于.NET平臺(tái)和Web Service 方式的WebGIS系統(tǒng)集成[J].計(jì)算機(jī)工程.2004, 24(11):64-66
[3]??????? ESRI. Developer Help For ArcGIS v9.2 [M].USA:Esri,2006
[4]??????? Garrett J J.Ajax:A New Approach to Web Applications[EB/OL].[2005-01-18] http://www. Adaptivepath.com/publica-tions/essays/archives/
[5]??????? 王凌云,李琦,喻文承. Web Service 與地理信息互操作[J]. 測(cè)繪科學(xué), 2004, 29 (1) : 38-41.
[6]??????? 孫立堅(jiān),劉紀(jì)平,王亮,等. 基于Web Services技術(shù)的GIS體系結(jié)構(gòu)研究[J]. 地理信息世界, 2005, 3 (3) : 21-25.
[7]??????? 劉南,劉仁義. Web GIS原理及其應(yīng)用[M ] . 北京:科學(xué)出版社, 2002: 10-15.
?
轉(zhuǎn)載于:https://www.cnblogs.com/chinazhousheng/archive/2009/01/12/1374408.html
總結(jié)
以上是生活随笔為你收集整理的ArcGIS Server 中AJAX应用系列(3)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [转载]Programming MS O
- 下一篇: 10月15日 第一天申请成功