REST SOE模板概覽
本文將解釋REST SOE模板中的部分程式碼的含義。關於如何開啟該模板,請參見如何在Visual Studio中開啟REST SOE模板。
我們知道一個SOE就是你伺服器上的一個COM類,這一點很重要。所以SOE中有幾行和COM相關的程式碼,這些程式碼給你的SOE分配了一個唯一的ID,並使它對COM是可見的。你也會看到與SOE相關的一些attributes,可以用來定義SOE的顯示名稱、屬性和能力(有時候在ArcGIS的對話方塊中稱作“允許的操作”)。示例程式碼如下:
[C#]
[ComVisible(true)][Guid("fbcd47be-14e5-4c65-b49d-7cdb6871f30a")][ClassInterface
(ClassInterfaceType.None)][ServerObjectExtension("MapServer", AllCapabilities =
"", DefaultCapabilities = "", Description = "Insert SOE Description here",
DisplayName = "SimpleRestSoe1", Properties = "", SupportsREST = true,
SupportsSOAP = false)]
[VB.NET]
<ServerObjectExtension("MapServer", AllCapabilities
= "", DefaultCapabilities
= "", _
Description
= "Insert SOE Description here", DisplayName
= "SimpleRestSoe1",
Properties
= "", SupportsREST
= True, SupportsSOAP
= False)>
你無須更改這些程式碼。當你建立專案的時候,GUID會自動分配。
你會注意到你的SOE類是實現了一些介面,程式碼如下:
[C#]
public class SimpleRestSoe1: IServerObjectExtension, IObjectConstruct,
IRESTRequestHandler
[VB.NET]
Public Class RestSOE1
Implements IServerObjectExtension, IObjectConstruct, IRESTRequestHandler
如下的介面都是建立REST SOE所必需的,各個介面的功能如下所示:
IServerObjectExtension——該介面包含了Init()和Shutdown()方法,分別用於啟動和關閉SOE。你無需關注模板中的這部分程式碼,除非你要在關閉SOE時銷燬一些資源。如果在SOE第一次啟動的時候,你需要執行一些邏輯程式碼,不要把程式碼寫在Init()函式中或者SOE的建構函式中,你應該將程式碼寫在下面的IObjectConstruct.Construct() method中。
IObjectConstruct——該介面僅僅包含了一個方法 Construct(),該方法在你的SOE第一次啟用的時候執行。你應該把重要的業務邏輯程式碼(不需要在每次請求的時候都執行的程式碼)寫在此處。比如,如果你知道你總要處理地圖中的某一個圖層,那麼你可以把獲取該圖層的程式碼寫在此處。
IRESTRequestHandler——該介面用於處理REST請求和響應。該介面中的方法建立schema並處理請求。
在SOE的建構函式中,你會發現SoeRestImpl 類被例項化了,程式碼如下所示:
[C#]
reqHandler = new SoeRestImpl(soe_name, CreateRestSchema())as IRESTRequestHandler;
[VB.NET]
Dim restImpl As New SoeRestImpl(c_SOEName, rootResource)
reqHandler = CType(restImpl, IRESTRequestHandler)
SoeRestImpl類用於如下功能:
a.驗證SOE的schema
b.驗證HandleRESTRequest 呼叫中的資源名和操作名
c.記錄服務呼叫和響應
d.處理錯誤
SoeRestImpl類實現了IRESTRequestHandler介面。一般情況下,SOE類包含了一個SoeRestImpl類的例項並儲存了對IRESTRequestHandler介面的引用。你可以在模板中看到這部分內容。
模板中剩餘的函式用於定義REST SOE可以做什麼以及如何處理每一個SOE請求。CreateRestSchema() 方法定義了SOE中可獲得的資源和操作。每個資源和操作都有一個相關的處理函式,當請求資源或執行操作的時候,相應的處理函式就會被呼叫。模板中包含了一個示例資源處理函式RootResHandler()以及一個示例操作處理函式SampleOperHandler()。
相關文章
- SOE開發概覽
- 示例:建立REST SOEREST
- 如何在Visual Studio中開啟REST SOE模板REST
- REST SOE是什麼?REST
- 建立REST SOE的schemaREST
- 處理REST SOE請求REST
- 在REST SOE中處理JSONRESTJSON
- 在客戶端程式中使用REST SOE客戶端REST
- 建立REST SOE實戰演練系列連結REST
- 關於構建REST風格的SOE的策略REST
- 概覽
- 機器學習概覽機器學習
- Babel 社群概覽Babel
- Hooks概覽(譯)Hook
- 推理框架概覽框架
- Flutter框架概覽Flutter框架
- Java NIO 概覽Java
- 學習概覽
- IT專案概覽
- PyQt5 概覽QT
- Dart語言概覽Dart
- React Hooks-概覽ReactHook
- Flutter技術概覽Flutter
- HTTP報文 概覽HTTP
- Redis分散式概覽Redis分散式
- BIO,NIO,AIO概覽AI
- Vuex - 原始碼概覽Vue原始碼
- 概覽【JavaScript那些事】JavaScript
- 編譯原理概覽編譯原理
- Goolge AppEngine概覽GoAPP
- redis基本操作概覽Redis
- 設計模式概覽設計模式
- 管理平臺模板 Django REST Framework +ElementUIDjangoRESTFrameworkUI
- Python 基礎概覽Python
- SpringMVC 解析(一)概覽SpringMVC
- Microsoft Graph for Office 365概覽ROS
- python - pipenv 使用概覽Python
- 微服務概覽與治理微服務