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()。

你可能感兴趣的:(REST SOE模板概览)