1.REST SOE
當客戶端使用REST方式發送SOE請求時,實際上是利用HTTP協議發送了一個請求字符串,ArcServer獲得該字符串后會將其解析成一系列命令執行,並返回JSON數據。
返回的JSON格式數據如下:
2.創建REST SOE
(1)提醒
為了確保你創建的REST SOE能夠成功執行,你需要仔細考慮一下向服務器端發送請求的數據類型和你希望返回的數據。
一個REST SOE通常包含資源和操作兩部分(Resource和Operation):
Resource---可以從服務器端獲取的一系列信息。它類似於類中暴露出的某一個屬性;
Operation---服務器端根據發送的請求進行一系列的操作。在Operation執行完后,你可以獲得文本、圖片或其他類型的數據。可以將Operation看做類中的一個方法。
在為自己的REST SOE編寫代碼之前,我們需要明確他所需要的Resource和Operation。有必要畫出一個圖表,並標記出它們的輸入輸出參數,REST SOE可以包含多個資源和操作,作為初學者最好制定一個操作。
(2)REST SOE模板
現在我們創建一個完整的SOE,在VS2010中新建一個項目,選擇Server Object Extention,並在右邊選擇REST 模板,如下圖:
需要注意一般情況下,Vs2010會默認.NET4.0環境,這時候你看不到右邊的模板,你只需選擇.NET3.5即可。
點擊確定創建模板后,Vs會為我們自動生成一系列代碼,下面我們簡要介紹一下該模板:
SOE的真身其實就是一個COM組件,每個Com組件都會有一個GUID作為標識。
我們的SOE模板中實現了一系列的類和接口,我們來認識一下這些類和接口:
ServicedComponent---SOE的基類,不需要對他做任何事;
IServerObjectExtension---包含Init和ShutDown兩個函數用來啟動和停止SOE;
IObjectConstruct---只有一個Construct方法,只在SOE啟動時運行一次,用來放置一些不需要在每次請求都運行的邏輯;
IRESTQuestHandler---使用REST SOE必要的接口,用來獲取請求並返回處理結果。他的方法主要用來創建Schema和處理Requests。
在該模板的構造函數中,你會看到如下代碼:
SoeRestImpl類主要由以下作用:
*驗證SOE的Schema
*驗證HandlerRESTRequest請求的resourceName和OperationName
*驗證SOE的Capabilities
*記錄服務請求和返回
*處理錯誤
SoeRestImpl類實現了IRESTRequestHandler接口。通常情況下SOE工程中都會有一個該類的實例和一個IRESTRequestHandler接口的引用。
下一篇我們將詳細討論SOE中的Schema、Resource和Operation。