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。