DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> ArcIMS體系結構
ArcIMS體系結構
編輯:AJAX詳解     

 ArcIMS可以運行在一個分布式環境中,包含客戶端和服務器組件。一個完整服務的運行過程可以簡單的描述為:一個客戶端向服務器發送請求信息,服務器處理請求並返回信息到客戶端,客戶端將所獲取的信息展現給終端用戶。

 

ArcIMS空間服務器(ArcIMS Spatial Server

ArcIMS空間服務器是ArcIMS的中心樞紐,承載著高負荷的計算任務,對地圖數據的請求和相關信息進行處理。當接收到一個服務請求,ArcIMS空間服務器主要可以完成以下功能:

Image—從在ArcIMS Author或ArcMap中創建的地圖數據中創建影像文件

Feature—緩沖地圖特征數據

Query—查找和搜索條件相匹配的特征數據

Geocode—執行地址匹配操作

Extract—從選擇的地圖特征數據中創建shapefile

Metadata—打印出metadata數據

Route—在一系列的點之間計算路徑距離

 

兩個後台的進程支持著ArcIMS空間服務器的運行:ArcIMS Monitor和ArcIMS Tasker,在Windows中它們作為Windows服務運行,在Unix和Linux中作為daemon進程。

ArcIMS Monitor跟蹤ArcIMS空間服務器的狀態。當系統重啟時,ArcIMS Monitor將自動恢復ArcIMS服務。

ArcIMS Tasker清除output目錄中的文件。這些由空間服務器創建,以支持ArcIMS服務的文件,將在用戶定義的時間間隔後被清除。當前服務為地圖服務時,用戶發送請求得到的數據均是由ArcIMS空間服務器對請求產生響應,返回的數據是圖片,保存在output目錄中,ArcIMS Tasker會在一定時間後清除這些圖片數據。

ArcIMS應用服務器(ArcIMS Application Server

ArcIMS應用服務器控制著傳入請求,跟蹤當前哪些服務運行在哪些ArcIMS空間服務器中。ArcIMS應用服務器將請求傳輸到適合的空間服務器。應用服務器是一個Java應用程序,在Windows操作系統中作為一個Windows服務,在Unix和Linux中作為一個daemon進程。

ArcIMS應用服務連接器(ArcIMS application server connectors

ArcIMS應用服務連接器將Web服務器和ArcIMS應用服務器連接在一起。ArcIMS Servlet Connector是ArcIMS的默認連接器。它使用ArcXML在 Web服務器和ArcIMS應用服務器之間傳遞信息。

相對於ArcIMS Servlet Connector,還有幾種其他的連接器可供選擇:

ColdFusion Connector

ActiveX Connector

ArcIMS Java Connector

ArcIMS .Net Link

ColdFusion和ActiveX連接器配合自定義的客戶端工作,並且將自己的語言轉換成ArcXML。ArcIMS Java Connector通過JSP客戶端或獨立的Java應用程序和ArcIMS應用服務器保持通信。.Net Link提供TCP/IP或HTTP連接到應用服務器。

關於連接器的相關資料,在ArcIMS Help中搜索主題:

More about the ArcIMS Servlet Connector

Connectors and ArcMap Server

The ArcIMS documentation set

ArcIMS VIEwers

當使用ArcIMS Designer創建了一個為用戶提供地圖內容的網站時,可以選擇三種ArcIMS VIEwers:Html、Java Standard、或Java Custom。通過定制這些VIEwers或定制客戶端可以達到基本相同的效果。另外,還可以使用比較成熟的客戶端,如ArcMap、ArcExplorer和Metadata Explorer。

從本質上說,vIEwer或客戶端就是Internet GIS應用或網絡應用的網站,提供用戶需要的地圖服務。

當用戶訪問這些網站的時候,他們可以在vIEwer中看到嵌入在網站中的定制地圖。整個vIEwer決定了網站的外觀和功能。

相關vIEwer的相關資料,在ArcIMS Help中搜索主題:

Choosing a vIEwer for your Web site

Designing a Web site

Overview of using the ArcIMS VIEwers

arcIMS 客戶端 連接器的選擇
客戶端選擇。 
   就IMS來說提供了 Html Viewer ,Java Standard VIEwer Java Custom VIEwer
 
   Java Standard Viewer,Java Custom VIEwer功能差不多。 對於程序員、中國客戶來說。Java    
Standard Viewer基本不用。典型的胖客戶端,Image 和Feature MapServices 都要下載APPLET,客戶端還要裝jre。隨著微軟IE對applet的抵制 和 ArCGIs Server(遠程數據分析,Feature MapServices的替代)成熟,估計這種胖客戶端沒什麼大用了,至少我覺得在中國是這樣的。就我接觸的webgis項目中,applet的應用不是很多,政府部門更是因為安全性,很少用。(>http://www.668map.com/)用applet,但是假如我們對於大數據量的gis應用,有還多業務查詢、分析。估計把數據放到緩沖中的做法就懸了。還有假如我要加遙感應用,數據量大的更是可怕。 我個人對Java VIEwer前景不是看好。另外AJax技術的成熟,applet基本沒什麼地位了。

   HTML VIEwer:AJax的成熟。隨著web程序的流行,xHtml,Javascript,CSS的成熟(對不同浏覽器有統一標准就完美了,不過客戶端 IE就現在還是老大)。arCGIs server的客戶端也是Html vIEw(沒辦法.Net,J2EE還是以浏覽器為主要客戶端的)。另外html,xHtml是如此的輕便,頁面是可以如此的漂亮,擴展,維護也不用編譯什麼的。雖然不支持Feature MapService,但Feature MapService的應用可以由arCGIs server實現。>http://maps.google.com

連接器選擇。
.Net Link 、ActiveX 、APPServerLink 、ColdFusion 、General、Java 、Servlet 、WMS 
思想就是把ArcXML封裝了,再向ArcIMS發送請求,客戶端展示。
下面以arcIMS提供了例子探討一下Servlet Connector ,javaconnector。請自行配置HtmlvIEw和Javasconnector的例子。

Servlet Connector:修改vIEwer.htm,使JSForm.htm 可以在頁面中看到。(

JSForm.htm加載地圖前代碼
......
function passXML() {
}
......  
加載地圖後代碼
......
function passXML() {
var XMLResponse='version="1.1">maxx="116.741417757427" maxy="40.08" />';
parent.MapFrame.processXML(XMLResponse);
}
........
在aimsXML.JS中看函數function HtmlSendToServer(URLString,XMLRequest,theType)和function 
processXML(theReplyIn) 一目了然了,HtmlSendToServer把我們組合的arcXML發送到com.esri.esrimap.Esrimap?ServiceName,返回的XMLResponse由processXML顯示出來。
核心代碼就這些,你在Javascript文件夾中的大部分JS文件是 組合請求的arcXML字符串 和解析從arcIMS返回的arcXML字符串。其他JS文件是DHtml,參數,公有函數等。看上去挺嚇人的。我個人覺得htmlvIEw例子裡的JS代碼可重用性很高。但必須很熟悉這些代碼,函數。和其他連接器比較,htmlvIEw可以說是最簡單的了。熟悉Html,熟悉Javascript,有arcXML文檔,這就夠了。

剩下的是用 Javascript構造不同的arcXML,請求arcIms, 用dHtml,Javascript顯示返回arcXML.
(大家可以看一下JSpForm.JSP,用com.esri.aims.mtIEr.io.ConnectionProxy類來請求IMS服務。和上面的流程差不多。>http://support.esri.com/index.cfm?fa=knowledgebase.techarticles.gateway&p=16&pf=217上面講的都不錯,從更深的角度講了各個連接)

javaconnector:把arcXML文檔用java對象封裝起來。組合arcXML的工作由純面向對象的Java語言來做,
com.esri.aims.mtIEr.io.ConnectionProxy 對象請求ims服務器,返回java對象的響應。servlet connector 是字符串,而java connector是java對象。這樣java語言的優勢,java對象的可操作性,易用性,方便性就顯露出來拉。Javaconnector對 arcIMS服務動態增加等。

Map map=new Map();
map.initMap(mapCon,750,false,false,false,false);
map.setHeight(500);
map.setWidth(400);
map.refresh();   
String url=map.getMapOutput().getURL();
Map對象封裝ArcXML,map.refresh() 請求IMS服務。 請求完了Map對象包括響應的內容。(其實map.initMap也觸發了一次請求 GET_SERVERINFO。Javaconnector的類庫設計的有問題。)

servlet connector 和 Javaconnector比較

一、性能
   servlet connector: 用戶下載Javascript文件。組合arcXML在客戶端執行。如果用戶機器不是太慢的話,性能應該是最好的,服務器壓力也小。據說ims 群集安裝,系統配置的好的話,可以支持幾百萬用戶。
   javaconnector:比不上servlet connector。1、java對象的封裝,在服務器端運行。(不過可忽略)2、Map對象建立的性能損耗。map.initMap(), map.refresh()都要觸發請求ims。操作一次地圖 新建一個map對象的做法是不可能的。有兩個解決 把map對象放到Session中和 map對象池。 把map對象放到Session,用戶多的時候,web服務器壓力很大,多用戶時不可行。 map對象池 ,map對象的鈍化,激活(EJB的提法)操作復雜。因為不同用戶當前操作狀態不一樣(在arCGIs9 server中,狀態保存是個值得研究的地方)。運用javaconnector 性能問題得考慮。(個人覺得Javaconnector類庫建立的有問題,用反編譯工具看,代碼設計有改進的地方,可以解決map對象初始化問題)。

二、功能:
   servlet connector: arcXML的所有功能。 問題在 組合arcXML和顯示響應的arcXML的環節上。因為這些用Javascript實現。有一定局限性。 比如,我要把 響應arcXML 的查詢結果排序。實現起來費事。(arcXML查詢不支持order by ).不可以對ims服務操作。
   javaconnector:arcXML的所有功能。可以用java語言的優勢處理很多問題。比如前面排序。動態圖層、與遙感影象圖的疊加實現起來都比較方便。還可以結合arcSDE的Java接口處理元數據。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved