国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ArcGIS Server的池化與非池化服務(wù)研究

2010-04-19 07:00程柱高飛胡小華
城市勘測 2010年4期
關(guān)鍵詞:池化圖層實(shí)例

程柱,高飛,胡小華

(1.合肥工業(yè)大學(xué)土木與水利工程學(xué)院,安徽合肥 230009; 2.合肥市國土資源局信息中心,安徽合肥 230001)

基于ArcGIS Server的池化與非池化服務(wù)研究

程柱1?,高飛1,胡小華2

(1.合肥工業(yè)大學(xué)土木與水利工程學(xué)院,安徽合肥 230009; 2.合肥市國土資源局信息中心,安徽合肥 230001)

介紹了ArcGIS Server的基本知識(shí)和體系結(jié)構(gòu),分析了ArcGIS Server中服務(wù)器對象池化與非池化服務(wù)的特點(diǎn),并通過實(shí)例比較兩種服務(wù)之間的不同點(diǎn)以及各自優(yōu)點(diǎn)和缺點(diǎn),指出了它們各自的應(yīng)用場合,為開發(fā)WebGIS系統(tǒng)提供參考。

ArcGIS Server;WebGIS;池化;非池化

1 引 言

隨著各行業(yè)各部門對GIS應(yīng)用的增加以及GIS技術(shù)的快速發(fā)展并逐步成熟完善,利用Internet/Intranet技術(shù)在互聯(lián)網(wǎng)上發(fā)布地理信息,以方便用戶瀏覽、查詢以及獲取空間信息和應(yīng)用,已成為傳統(tǒng)GIS向WebGIS發(fā)展的必然趨勢,而ArcGIS Server的出現(xiàn),為構(gòu)建高性能WebGIS提供了新的解決方案。本文在簡要介紹ArcGIS Server的基礎(chǔ)上,對ArcGIS Server開發(fā)中服務(wù)器對象的池化與非池化服務(wù)進(jìn)行探討。

2 ArcGIS Server簡介

ArcGIS Server是ESRI(Environmental Systems Research Institute)一套后臺(tái)基于ArcObjects(用于構(gòu)造ArcGIS系列平臺(tái)的一個(gè)組件對象庫)搭建的強(qiáng)大的B/ S開發(fā)工具,同時(shí)也是一個(gè)用于構(gòu)建集中管理、支持多用戶的企業(yè)級(jí)GIS應(yīng)用的平臺(tái),它不僅可以提供在線地圖發(fā)布和在線地圖瀏覽的功能,而且可以提供在線的分析和地圖編輯功能。

ArcGIS Server由GIS服務(wù)器和.NET或Java的應(yīng)用開發(fā)框架(ADF)兩部分組成。GIS服務(wù)器是ArcObjects對象的宿主,主要由一個(gè)SOM(服務(wù)器對象管理器)和若干個(gè)SOC(服務(wù)器對象容器)所組成,主要管理和運(yùn)行服務(wù)器對象(Server Objects)。應(yīng)用開發(fā)框架則使用ArcObjeets對象來構(gòu)建和部署Web應(yīng)用和桌面應(yīng)用,應(yīng)用開發(fā)框架包括一組Web控件、Web應(yīng)用模板,以及開發(fā)幫助和實(shí)例代碼等。

3 池化與非池化服務(wù)

ArcGIS Server中服務(wù)器對象是空間數(shù)據(jù)的載體,創(chuàng)建和銷毀服務(wù)器對象需要較大的開銷,并且服務(wù)器對象可創(chuàng)建最大數(shù)目也是有限的。所以,為了優(yōu)化系統(tǒng)運(yùn)行時(shí)的性能,必須對服務(wù)器對象的生命周期進(jìn)行有效管理,并且對于不同應(yīng)用場景選擇相應(yīng)管理方式,為了解決該問題,可以通過設(shè)置服務(wù)器對象的池化與非池化服務(wù)管理來解決。

3.1 池化服務(wù)

在ArcGIS Server開發(fā)中選取池化服務(wù)時(shí),服務(wù)器對象是在服務(wù)器運(yùn)行時(shí)預(yù)先創(chuàng)建了指定數(shù)目的,并且只在用戶請求服務(wù)器對象時(shí),優(yōu)先使用己創(chuàng)建的服務(wù)器對象,如果沒有空閑的服務(wù)器對象才會(huì)創(chuàng)建新的服務(wù)器對象返回給用戶進(jìn)程進(jìn)行相應(yīng)的操作,并且當(dāng)用戶操作結(jié)束后立即將服務(wù)器對象釋放回到服務(wù)器對象池中等待下一個(gè)用戶會(huì)話。示意圖如圖1所示。

圖1 池化方式處理流程圖

(1)池化服務(wù)分類

池化服務(wù)可以分為High Isolation和Low Isolation兩種。High Isolation是指服務(wù)的每個(gè)實(shí)例(instance)都會(huì)獨(dú)占一個(gè)arcsoc.exe進(jìn)程,Low Isolation則是指一個(gè)進(jìn)程內(nèi)可保有多個(gè)(默認(rèn)是8個(gè),最多可達(dá)256個(gè))實(shí)例。Low Isolation的好處是可以啟動(dòng)相對少的arcsoc.exe來維持同樣數(shù)量的實(shí)例,節(jié)約服務(wù)器的內(nèi)存資源;但如果一個(gè)arcsoc.exe崩潰,那么里面的所有實(shí)例都會(huì)被銷毀,即使用戶正在使用它們。High Isolation的優(yōu)缺點(diǎn)則與之相反。一般來說,對于池化服務(wù)使用High Isolation設(shè)置。

(2)池化服務(wù)特點(diǎn)

池化服務(wù)具有以下3個(gè)主要特性:

首先池化服務(wù)器對象是預(yù)先創(chuàng)建的服務(wù)器對象,它在用戶請求服務(wù)器對象前就已預(yù)先獲取了服務(wù)器對象中包含的空間信息,并在內(nèi)存中創(chuàng)建并維持了指定數(shù)目服務(wù)器對象。這有效地降低了每次用戶請求時(shí)重復(fù)獲取空間信息的時(shí)間與創(chuàng)建服務(wù)器對象的系統(tǒng)開銷。

其次池化服務(wù)器對象是可供多個(gè)用戶共享。由于池化服務(wù)器對象僅僅在用戶請求時(shí)返回給用戶,當(dāng)用戶的一次操作結(jié)束后立即釋放服務(wù)器對象到服務(wù)器對象池中,所以池化服務(wù)器對象允許多個(gè)應(yīng)用程序進(jìn)程共享同一個(gè)服務(wù)器對象,即多個(gè)用戶可以在其操作進(jìn)程中使用同一個(gè)服務(wù)器對象,從而達(dá)到資源的最大化利用,而且由于在用戶獲取服務(wù)器對象前已經(jīng)創(chuàng)建了服務(wù)器對象,所以減少了重復(fù)創(chuàng)建和銷毀服務(wù)器對象的開銷,加速了系統(tǒng)響應(yīng)時(shí)間。

最后池化服務(wù)器對象是無狀態(tài)的。由于用戶每次操作都需要重新獲取服務(wù)器對象,并且在操作后釋放服務(wù)器對象以供其他用戶訪問,所以池化服務(wù)器對象一定是無狀態(tài)的對象。每次調(diào)用的服務(wù)器對象都是初始化時(shí)狀態(tài),其本身無法自動(dòng)保存其狀態(tài)。并且池化服務(wù)器對象只讀模式,這意味著不能修改服務(wù)器對象及其相關(guān)對象,但是一般在系統(tǒng)中都需要有狀態(tài)的服務(wù)器對象,即需要知道用戶上次操作的狀態(tài)。比如地圖的按比例縮放操作,只有知道了用戶前一狀態(tài)的視圖范圍與縮放比例才能返回給用戶放大后的結(jié)構(gòu),如果不保存服務(wù)器的狀態(tài)將會(huì)導(dǎo)致每次用戶調(diào)用按比例縮放功能都會(huì)返回初始化時(shí)地圖狀態(tài)按照縮放比例縮放后的范圍,所以當(dāng)使用無狀態(tài)的服務(wù)器對象時(shí),必須在程序中保存服務(wù)器對象狀態(tài)。

3.2 非池化服務(wù)

非池化服務(wù)是在用戶第一次請求服務(wù)器對象時(shí)創(chuàng)建,并當(dāng)用戶會(huì)話結(jié)束后才會(huì)釋放服務(wù)器對象,所以一個(gè)非池化服務(wù)器對象對應(yīng)一個(gè)用戶進(jìn)程,如圖2所示。

圖2 非池化方式處理流程圖

非池化服務(wù)器對象在用戶會(huì)話開始時(shí)創(chuàng)建,在整個(gè)用戶進(jìn)程中都是使用著同一個(gè)服務(wù)器對象,直到用戶會(huì)話結(jié)束后才會(huì)銷毀該服務(wù)器對象。一個(gè)服務(wù)器對象對應(yīng)著一個(gè)用戶進(jìn)程,所以非池化服務(wù)器對象是有狀態(tài)的,有狀態(tài)服務(wù)器對象是可讀寫的對象,意味著應(yīng)用可以對服務(wù)器對象及其相關(guān)對象作改動(dòng)。如修改圖層的可見性,修改圖層要素集中的內(nèi)容等。但是在非池化管理狀態(tài)下一個(gè)服務(wù)器對象只能服務(wù)于一個(gè)用戶,而且服務(wù)器對象的創(chuàng)建都是在每次用戶請求時(shí)才創(chuàng)建,如果全部使用非池化的服務(wù)器對象將會(huì)使得服務(wù)器在大并發(fā)訪問時(shí)產(chǎn)生嚴(yán)重的性能問題,甚至癱瘓,所以當(dāng)不需要修改服務(wù)器對象中要素集內(nèi)容的情況下盡量使用池化服務(wù)器對象來改善系統(tǒng)性能。

4 實(shí)例分析

4.1 發(fā)布地圖服務(wù)并創(chuàng)建站點(diǎn)

在ArcCatalog中發(fā)布一個(gè)地圖服務(wù),這里服務(wù)名稱為hefeitd。該地圖服務(wù)包括兩個(gè)圖層,一個(gè)是合肥地區(qū)的影像數(shù)據(jù)圖層,另一個(gè)是合肥地區(qū)道路交通網(wǎng)的矢量數(shù)據(jù)圖層。然后在Visual Studio 2005中創(chuàng)建一個(gè)站點(diǎn),向Default.aspx頁面中添加ArcGIS Server ADF的Map控件和MapResourceManager控件,并且使用hefeitd服務(wù)。向頁面中添加一個(gè)asp.net的web服務(wù)器控件Button,標(biāo)題改為delete layer。

4.2 使用C#編寫刪除圖層功能

向delete layer按鈕的Click事件添加處理方法。首先連接ArcGIS Server,然后創(chuàng)建servercontext,獲取IMap接口,刪除一個(gè)圖層,釋放servercontext。關(guān)鍵代碼如下:

運(yùn)行程序,可以在 IE頁面中瀏覽,效果如圖 3 (a),同時(shí)在ArcCatalog中預(yù)覽hefeitd服務(wù),該地圖服務(wù)與IE頁面中看到的一樣,包括合肥地區(qū)的影像數(shù)據(jù)圖層和道路交通網(wǎng)矢量數(shù)據(jù)圖層。

圖3 IE瀏覽器中顯示效果圖

4.3 兩種服務(wù)的比較

當(dāng)選擇的是池化服務(wù)時(shí),點(diǎn)擊delete layer按鈕后,道路交通網(wǎng)的矢量圖層被刪除,只留下影像圖層,如圖3(b),同時(shí)在ArcCatalog中預(yù)覽,效果如圖4(a),可以發(fā)現(xiàn)和瀏覽器中的效果一樣,也是只有影像圖層,沒有矢量的圖層。這是池化服務(wù)的效果,因?yàn)樵跒g覽器中刪除的圖層時(shí)使用的服務(wù)器對象并沒有被銷毀,然后被ArcCatalog使用,這樣在IE瀏覽器中的操作就影響了其他用戶的地圖狀態(tài)。

圖4 ArcCatalog顯示效果圖

在ArcCatalog中把hefeitd服務(wù)修改為非池化,點(diǎn)擊delete layer按鈕后,在IE中瀏覽頁面,發(fā)現(xiàn)道路交通網(wǎng)的矢量圖層被刪除,只留下影像圖層,如圖3(b),同時(shí)在ArcCatalog中預(yù)覽hefeitd服務(wù),可以發(fā)現(xiàn)和IE瀏覽器中的效果不一樣,影像圖層和矢量圖層都存在。這是非池化服務(wù)的效果,如圖4(b)。ArcCatalog和瀏覽器查看地圖時(shí)使用的并不是同一個(gè)服務(wù)器對象,所以彼此之間沒有產(chǎn)生干擾。

5 結(jié) 語

在ArcGIS Server開發(fā)過程中,服務(wù)器對象選擇池化或非池化服務(wù)方式各有優(yōu)勢,池化的服務(wù)可以在多個(gè)應(yīng)用程序之間會(huì)話中共享,當(dāng)應(yīng)用程序會(huì)話返回一個(gè)池化服務(wù)實(shí)例到服務(wù)器,就可以被其他應(yīng)用程序的會(huì)話使用,故池化服務(wù)適用于無狀態(tài)操作,而非池化服務(wù)可以維護(hù)狀態(tài),尤其是在數(shù)據(jù)編輯的功能實(shí)現(xiàn)時(shí)使用。在實(shí)際使用過程中應(yīng)根據(jù)具體情況選擇合適的服務(wù)類型,以便WebGIS系統(tǒng)發(fā)揮最佳的性能。

[1]陳非.ArcGIS Server 9.2的概念和新特性[R].北京:ESRI中國(北京)有限公司,2006

[2]沈百玲.AreGIS Server簡介[R].北京:ESRI中國(北京)有限公司,2004

[3]吳功和,叢明日.基于ArcGIS Server分布式GIS的應(yīng)用[J].測繪科學(xué)技術(shù)學(xué)報(bào),2006.23(1):52~55

[4]劉光,唐大仕.Web GIS開發(fā)——ArcGIS Server與.NET [M].北京:清華大學(xué)出版社,2009

[5]汪昊琦.基于ArcGIS的企業(yè)級(jí)GIS系統(tǒng)開發(fā)與應(yīng)用[D].上海:華東師范大學(xué),2007.6

[6]ESRI.ArcGIS Server Developers Guide[R].2006

[7]康玲,傅俊鋒,王懷清等.基于ArcGIS Server的WebGIS應(yīng)用系統(tǒng)開發(fā)[J].水利能源科學(xué),2007.25(1):26~29

Research of Pooled and None-Pooled Service Based on ArcGIS Server

Cheng Zhu1,Gao Fei1,Hu XiaoHua2
(1.School of Civil Engineering,HeFei University of Technology,Hefei 230009,China;2.The Information Center of the Land And Resource Department of Hefei,Hefei 230001,China)

This paper introduced the basic knowledge and the architecture of ArcGIS Server,then analyzed characteristics of pooled and none-pooled service of ArcGIS Server’s server object,meanwhile,compared the differences,advantages and disadvantages of these two kinds of service by example,pointing out their applications as well as providing references for developing WebGIS.

ArcGIS Server;WebGIS;pooled;none-pooled

1672-8262(2010)04-70-04

P208

B

2009—11—12

程柱(1984—),男,在讀碩士研究生,研究方向?yàn)榈乩硇畔⑾到y(tǒng)與數(shù)字測繪技術(shù)。

猜你喜歡
池化圖層實(shí)例
基于Sobel算子的池化算法設(shè)計(jì)
卷積神經(jīng)網(wǎng)絡(luò)中的自適應(yīng)加權(quán)池化
設(shè)施蔬菜病害識(shí)別中的CNN池化選擇
基于卷積神經(jīng)網(wǎng)絡(luò)和池化算法的表情識(shí)別研究
巧用混合圖層 制作抽象動(dòng)感森林
圖層法在地理區(qū)域圖讀圖中的應(yīng)用
跟我學(xué)添加真實(shí)的光照效果
完形填空Ⅱ
完形填空Ⅰ
國外建筑CAD圖層標(biāo)準(zhǔn)發(fā)展現(xiàn)狀與研究