1、?arcims的體系結構?
?
??
當你安裝完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、?響應請求

4、?arcims核心(ArcIMS Spatial)
? arcIMS 空間服務器是arcims的核心。Arcims軟件也可以分布式部署ArcIMS Spatial.關于詳細部署可以看arcims安裝文檔。有時間我寫篇專門講講。如果是正版軟件,你可以讓esri公司來干這個事。

(1)?傳輸時間:接器的選擇會影響
(2)?排隊時間:以多建立虛擬服務器來解決。
(3)?渲染時間:比較費事,可以分布式部署空間服務器來解決)
(4)?查詢時間:數據庫調優,arcsde調優。(有時間再討論)
5、?servletconnector與javaconnector的區別
arcims開發經驗總結
arcIMS 客戶端 連接器的選擇
以前文章我也簡單說了說。
用圖表來分析。
Servletconnector:
?
上
圖表示了servlet連接器的結構。注意,用這種連接器,把從arcims返回的arcxml直接傳遞給了瀏覽器,瀏覽器用字符串拆分技術或dom技術
來解析這個復雜的xml串。(還好htmlview的模板提供了這些代碼,不過用javascript拆分字符串,沒用dom標準)
??? 每次請求的arcxml字符串是很大的,arcxml包含的有些信息對用戶是沒用的,所以在web服務器與瀏覽器之間,浪費了許多帶寬,對于二次開發人員,難度也加大不少。
javaconnector:
?
使用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
的公司該收復失地的,畢竟我們是有優勢的。
參考:
arcxmlguide.htm
arcims性能優化和調整? 許曉輝