ArcGIS Server .Net Web ADF體系結構

ArcGIS Server .Net Web ADF體系結構   

ArcGIS Server .net來創建應用有三個層次,
1 使用manager來創建一個web應用
2 使用 .net模板來創建應用
3 使用adf來創建應用
對於一個項目開發來說,需要採用第三中方式來進行開發的,第一,第二中方式一般用於剛剛基礎arcgis server的同志學習使用或者是非常簡單的應用來使用的,使用adf來進行開發,弄清楚adf的體系結構就顯的非常重要,否則就會象掉進arcobjects的巨多的組件堆裏的感覺是一樣的。在這個講座中會講到.Net ADF爲我們提供了什麼,我們該在ArcGIS Server.Net開發過程中怎麼樣有序的去使用它們。
以前我們的adf稱爲 Server adf,那是因爲只有單一的數據源,即ArcGIS Server。而現在的是Web Adf,是針對多數據源的,可以是ArcGIS Server, rcGIS Is等。
Adf爲我們提供的是控件和api。控件是提供用戶界面,而common apispecific api的類來具體完成GIS的功能。
首先我們來看看控件,9.2 ADF的控件明顯比以前版本複雜一些,除了我們常見的map,pagelayout,toc等控件之外,還出現了一系列的resoucemanager控件。這些控件的出現都是爲支持多數據源的這個目標服務的,在解釋控件的同時還會涉及到adf中的其他一些概念,這些概念都是貫穿adf的始終的。

1 ResoucesResouceManagerwebcontrols, functionality的關係。
首先我們來解釋一下ResoucesResouceManagerwebcontrols, functionality的關係。
控件和數據源之間的關係是通過一系列的ResouceManager控件來維護的。ResouceManager決定哪些數據源是可以使用的Resouces,以及這些Resouces怎麼樣被控件所使用。一旦一個數據源被ResouceManager管理之後,就被展現爲Resouces。控件通過Resouces到達數據源。Resouces可以把數據源以多種形式展現出來,比如可以提供一幅地圖展現在map控件種,它也可以把數據源以圖層列表的方式展現在toc控件中,也就是說Resource擁有不能的能力,這些不同的能力我們成爲不同的functionaligy
從控件角度來講,不同的控件可以通過不同的方式來使用相同的數據源,比如一個Resouce可以爲map控件提供一幅地圖,也可以爲toc控件提供一套圖層的列表,這就Resouces的不同的functionality
從數據源角度來講,不同的Resouces會通用的展現一些能力,也就是提供不同的functionality,比如展現地圖,查詢地圖等。
上面這些文字可能剛開始看起來比較費勁,但是對於使用.net開發的人來說一定要弄清楚這些關係。

2 Common APIsspecific APIs的關係
上面講了Resouces可以展現爲不同的能力,但是具體能夠展現爲哪些能力還是要看數據源本身能夠提供什麼樣的功能。但是有一些能力是所有數據源都能辦到的,也就是說Resouces可以展現出一些所有的數據源都可以提供的能力,比如提供地圖,比如查詢地圖,無論是arcgis server作爲數據源,還是arcims作爲數據源,這些都是基本的能力。因此adf就把實現這些基本的普通的功能所需要的類歸爲Common APIs。而有些功能是有些數據源特有的,比如提供編輯功能,那是arcgis server特有的,arcims是無法提供的。這些就被稱爲specific APIs
Specific APIs包括arcims api, arcweb api, ogc/wms api, arcgis server soap api, arcgis server arcobjects api,注意其中的arcobjects api也被列爲了specific api了,它是arcgis server數據源的specific APIs

3 Common APIs的基本結構,adf中如何來使用這些common APIs
我們在開發過程中首先接觸到的就是ADF中提供的這些Common APIs,而且它的結構比較明朗,不像Specific APIs那樣多樣。首先我們來看幾個基本接口,
IGISDataSouce――定義了數據源的連接
IGISResouce――定義了datasouce提供的信息類型等
IGISFunctionality――定義了resouce怎麼被使用
這三個接口是不同的數據源可以展現一些基本功能的基本接口,也就是說不同的數據源要實現基本的功能必須實現這三個基本的類,才能在控件上展現出那些基本的能力。各種數據源都用相應的類實現了這三個接口。
那首先來看一下這三個接口之間的關係,
一個GISDataSouce會包含一系列的GISResoucesGISDatasouce是一個比較大的概念,主要就包含了ArcGIS Server Local, ArcGIS Server internet ,ArcIms, WMS, ArcWeb這幾種。那就拿ArcGIS Server Local來說吧,它包含了MapResouce, GeocodeResouce, GeoprocessingResouce幾種。
一個GISResouce會包含一系列的GISFunctionalityFunctionality定義了resouces怎麼被使用。Functionality主要有兩種mapfunctionality,queryfunctionalityMapfunctionality主要展現resouce的地圖能力,比如輸出地圖圖片,改變地圖範圍,設置地圖中圖層的可見性等。而queryfunctionality主要展現resouce的數據的空間和屬性查詢能力。
剛纔說了不同的數據源都有相應的類來實現上面的基本接口,那我們來看看arcgis server local這種數據源的相應的實現類:
IGISDataSouce ――GISDataSouceLocal
IGISResouce ――MapResouceLocal, GeocodeResouceLocal
IGISFunctionality ――MapFunctionality QueryFunctionality

這就是web adf的優勢所在,它可以使得各種不同的數據源都展現爲resouce, 使得它們可以以相同的方式得到使用。對於控件而言,每個resouce就象一個圖層,而不管數據源是什麼。

就舉一個地圖放大的功能,一個mapcontrol中有兩個datasouce,一個是arcgis server local,一個是arcims, 地圖的範圍重新設定了之後,控件都通過每個resouces提供的mapfunctionality給每個resouces重新設定範圍,每個resouces輸出這個新的地圖。而mapcontrol呢就負責把這些輸出圖片顯示在同一個界面上。對於控件而言,每個resouce就象一個圖層。從resouce可以到達datasouce本身。

 

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