池化和非池化地圖服務的區別

來源:互聯網
上載者:User

下面的小樣本來體驗一下池化和非池化地圖服務的區別。步驟如下:
1,發布一個地圖服務,選擇作為Pooled服務,其它設定預設,這裡假設服務名稱world。該地圖服務包括兩個圖層,一個是世界影像資料圖層,另一個是世界大洲的向量資料圖層。


2,在VS 2005中建立一個網站。向Default.aspx頁面中添加Map控制項和MapResourceManager控制項,並且使用world服務。向頁面中添加一個asp.net的web伺服器控制項Button,標題改為delete layer。

3,向delete layer按鈕的Click事件添加處理方法。首先使用具有agsadmin許可權的使用者串連arcgis server,然後建立servercontext,擷取IMap介面,刪除一個圖層,釋放servercontext。代碼如下:
protected void Button1_Click(object sender, EventArgs e)
{
ESRI.ArcGIS.ADF.Identity identity = new ESRI.ArcGIS.ADF.Identity("user", "password", "hostname");
ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection agsconnection;
agsconnection = new ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection("hostname", identity);
agsconnection.Connect();
IServerObjectManager som = agsconnection.ServerObjectManager;
IServerContext serverContext = som.CreateServerContext("world", "MapServer");
IMapServer mapServer = serverContext.ServerObject as IMapServer;
IMapServerObjects mapServerObjects = mapServer as IMapServerObjects;
IMap map = mapServerObjects.get_Map(mapServer.DefaultMapName);
map.DeleteLayer(map.get_Layer(0));
mapServerObjects.RefreshServerObjects();
serverContext.ReleaseContext();
}

4,在IE中瀏覽頁面,效果如下。

5,同時在ArcCatalog中預覽world服務,效果如下。

6,點擊delete layer按鈕後,大洲的向量圖層被刪除,只留下影像圖層,效果如下。

7,同時在ArcCatalog中預覽world服務,效果如下,可以發現和瀏覽器中的效果一樣,也是只有影像圖層,沒有向量的圖層。這是Pooled服務的效果,因為在瀏覽器中刪除的圖層時使用的伺服器對象並沒有被銷毀,然後被ArcCatalog使用,這樣在IE中的操作就影響了其它使用者的地圖狀態。

Not Pooled
8,在ArcCatalog中把world服務修改為Not pooled,如所示。

9,把delete layer按鈕的Click事件處理方法修改為如下代碼:
protected void Button1_Click(object sender, EventArgs e)
{
ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapFunctionality agsMapFunctionality =
(ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapFunctionality)Map1.GetFunctionality(0);
MapResourceLocal m_AGSLocalMapResource = (MapResourceLocal)agsMapFunctionality.Resource;
IServerContext serverContext = m_AGSLocalMapResource.ServerContextInfo.ServerContext;
IMapServer mapServer = serverContext.ServerObject as IMapServer;
IMapServerObjects mapServerObjects = mapServer as IMapServerObjects;
IMap map = mapServerObjects.get_Map(mapServer.DefaultMapName);
map.DeleteLayer(map.get_Layer(0));
mapServerObjects.RefreshServerObjects();
}
10, 在IE中瀏覽頁面,效果如下。

11,同時在ArcCatalog中預覽world服務,效果如下。

12,點擊delete layer按鈕後,大洲的向量圖層被刪除,只留下影像圖層,效果如下。

13,同時在ArcCatalog中預覽world服務,效果如下,可以發現和瀏覽器中的效果不一樣,影像圖層和向量圖層都存在。這是NotPooled服務的效果,ArcCatalog和瀏覽器查看地圖時使用的並不是同一個serverobject,所以彼此之間沒有產生幹擾。

Pooled和Not Pooled各有優勢,從我們的樣本上看Pooled服務效能更好一些,但是,Not Pooled服務可以維護狀態,尤其是在資料編輯的功能實現時使用。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.