arcims結構分析

1、 arcims的體系結構 
 arcimstijiagou.jpg
   當你安裝完arcims軟件以後,已經包括了上圖中的ArcIMS應用服務器,ArcIMS空間服務器兩個中間件。當然還有Monitor, Tasker;工具軟件admin,author;各種連接器servlet,javaconnector的代碼等。
   大家可以看到,arcXML在應用服務器和空間服務器之間傳遞。所以空間服務器是這些中間件中壓力最大的。
   表現層:html,applet,ocx控件。也可以是c/s的任何桌面程序。
   業務邏輯層:arcims的應用服務器和空間服務器是arcims軟件自帶的。
Arcims 的servlet連接器必須與web服務器(iis,tomcat…)綁定。而javaconnector支持http,tcp-ip等多種協議。可選擇的與web服務器綁定,但ims的admin軟件必須有web服務器才能運行,另外arcims中的圖片也是個url,也需要web服務器。所以web服務器是各種連接器的容器。
   數據存儲層:arcims支持的文件,或arcsde空間數據引擎等。

Arcims應用服務器:管理虛擬服務器,地圖服務(admin配置的),連接器請求線程管理等。連接器調用它,它在調用空間服務器。一個應用服務器可以連接多個空間服務器。
Arcims 空間服務器:把矢量書生成圖片,或做空間分析,查詢等。Arcims的核心。還好我們不要關注具體算法等。開源gis,mapxtreme,super map等也就這部分沒arcims強。但空間服務器與別的組件的協議是arcxml。雖然arcxml規範比較全面,但這個高度的鬆散偶合也給 arcims的複雜開發帶來些侷限性。以後我會提到。
2、 arcXml的重要性
因爲搞編程的人不是地理學專家、矢量數據結構專家、圖象技術專家。至少不能共同關注這好些技術。所以arcXml規範的定義是極其重要的。也可以讓外行人開發專業的程序。這叫好比VML.SVG標籤語言一樣,如果你不懂數學算法,不可能畫一個橢圓。
    以前我也說過,如果你掌握了arcxml,那你就基本知道arcims能做什麼,能實現什麼功能。至於做的好壞,那看你的行業知識、編程能力了。
3、 Introduction to ArcXML
上面說了一堆廢話,現在看看arcXML到底是什麼。
ArcXML 是爲了與arcIMS空間服務器通信而定義的協議。而arcIMS空間服務器是arcims的核心,它把地圖和數據打包成適當的格式,發送到它的客戶端(arcIMS應用服務器)。要懂arcxml,首先必須知道怎麼樣配置文件,建立arcims服務,請求和響應,以及怎麼與空間服務器結合。
 
1、 建立一個axl爲擴展名的配置文件。(xml格式)
2、 用 ArcIMS Administrator 建立並啓動 ArcIMS Service
3、 接受請求
4、 響應請求
intro_1.gif
4、 arcims核心(ArcIMS Spatial)
  arcIMS 空間服務器是arcims的核心。Arcims軟件也可以分佈式部署ArcIMS Spatial.關於詳細部署可以看arcims安裝文檔。有時間我寫篇專門講講。如果是正版軟件,你可以讓esri公司來幹這個事。
arcimsxnyx.jpg
(1) 傳輸時間:接器的選擇會影響
(2) 排隊時間:以多建立虛擬服務器來解決。
(3) 渲染時間:比較費事,可以分佈式部署空間服務器來解決)
(4) 查詢時間:數據庫調優,arcsde調優。(有時間再討論)
5、 servletconnector與javaconnector的區別

arcims開發經驗總結
arcIMS 客戶端 連接器的選擇
以前文章我也簡單說了說。

用圖表來分析。
Servletconnector:
 servlet.jpg
上圖表示了servlet連接器的結構。注意,用這種連接器,把從arcims返回的arcxml直接傳遞給了瀏覽器,瀏覽器用字符串拆分技術或dom技術來解析這個複雜的xml串。(還好htmlview的模板提供了這些代碼,不過用javascript拆分字符串,沒用dom標準)
    每次請求的arcxml字符串是很大的,arcxml包含的有些信息對用戶是沒用的,所以在web服務器與瀏覽器之間,浪費了許多帶寬,對於二次開發人員,難度也加大不少。
javaconnector:
 javaconnector.jpg
使用javascnnector ,瀏覽器與web服務器之間傳輸的協議由二次開發人員定義,這可能會加大編程難度,但隨着ajax技術的成熟,開源框架dwr,json等的完善,這部分工作會越來越簡單。
但javaconnector 引來一個問題,它的Map java對象不是線程安全的,而這個對象的初始化比較費時間。它和jdbc中的數據庫連接差不多。針對這個對象寫了個Map池,從我們項目運行的情況看,效果還不錯。如果用javaconnector,對java編程需要一定的基礎。
6、 業務的複雜度決定我們應該用哪種連接器
如果你只是想簡單的發佈地圖,htmlview就可以滿足你的需求。如果有複雜的業務,gisporal定製,權限管理,那你用htmlview會讓你面臨災難。我選擇javaconnector. Using_ActiveX_Connector, Using_NETLink也有文檔。但你要做大型,高性能的webgis,j2ee必定是受選,unix,arcims在j2ee的積累,arcims很多程序使用java實現的。(另外 arcinfo最早是在unix命令行形式運行的)。
A、 java語言比javascript高級多了。Htmlview大多數用javascritp實現。
B、 跨瀏覽器的支持。噩夢吧。
C、 ajax技術的成熟,客戶端與服務器端交互容易多了。
D、 webgis無刷新更新數據是必須的,那必須下載足夠多的數據。安全性是個問題。
E、 權限判斷,業務定製等用javascript實現簡直是噩夢。
   
7、 webgis開發人員的感想
開發webgis系統,對程序員的要求太高了,可是工資水平一直很低,行業極其不成熟,國內也沒什麼發展前途,讓我好多次有想法轉行專門做j2ee去,但還是堅持下來了。國內這幫搞gis的都是學院派出生,相對編程能力,計算機應用水平比較差,對it行業市場把握能力也較差,被別人搶的先機。現在以 google牽頭各大搜索引擎都提供的 地圖服務,另外國內 edushi等又有一批仿三維的地圖服務出現,讓我看到一思希望。做傳統gis 的公司該收復失地的,畢竟我們是有優勢的。

 

文章轉自:http://www.blogjava.net/zkjbeyond/archive/2006/05/12/45872.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章