ArcGIS 服务对象扩展(SOE)新手自学笔记(1):初识SOE.doc_第1页
ArcGIS 服务对象扩展(SOE)新手自学笔记(1):初识SOE.doc_第2页
ArcGIS 服务对象扩展(SOE)新手自学笔记(1):初识SOE.doc_第3页
ArcGIS 服务对象扩展(SOE)新手自学笔记(1):初识SOE.doc_第4页
ArcGIS 服务对象扩展(SOE)新手自学笔记(1):初识SOE.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.SOE介绍在ArcGIS 10.1中ArcGIS Server不在支持DCOM方式的连接,这也就意味着我们不能通过本地方式的连接使用ArcObjects提供的更多功能,所以我们推荐一种新的方式来实现这些功能,这种方式就是SOE服务器对象扩展。SOE存在于整个服务对象的生存期内,可以利用服务对象的资源并对其进行扩展。一个SOE通常在服务对象创建是初始化,并且在整个服务对象的生存期内只会被创建一次。SOE支持SOAP和REST两种访问方式,其通过强大的AO来扩展服务对象,并可以运行在一个没有AO的客户端中。SOE特别适用于那些使用ArcGIS APIs无法完成的复杂业务逻辑功能。SOE可以提供粗粒度的接口,一次完成复杂的工作,而不是向服务器端发送大量的请求。目前大多数Gis公司都有管网项目,而ArcGIS APIs并没有为我们提供几何网络的有关内容,工程师们大多数通过利用AE在后台完成分析操作,然后返回json格式数据。这样每个公司可能会有一套自己的函数库用来完成以上问题,SOE的出现刚好可以用来提供统一的方法来解决这个问题,且其执行速度很快。SOE比较适合那些有多种平台工作经验的开发者,开发一个SOE通常会用到AO、.NET或Java、REST或SOAP Web服务通信技术。2.重要接口首先我们来介绍几个必要的接口(REST方式):IServerObjectExtension、IObjectConstruct(可选)、IRESTQuestHandlerIServerObjectExtension接口主要由两个方法:Init-该函数有一个IServerObjectHelper类型的参数。该函数在服务启动时被调用, 并将IServerObjectHelper对象传入,此接口是对Server对象弱引用,可以通过其ServerObject属性得到Server对象。Shutdown-该方法用在服务器关闭时调用,经常我们在该方法中释放SOE中使用的资源。IObjectConstruct只有一个方法:Construct();该方法在Init方法执行后立即执行,该方法也只会执行一次,通常用来配置SOE属性,也可以将比较耗费资源的逻辑放在这个方法中。比如获取地图代码,或者获取一个每次请求都会被操作的图层。IRESTQuestHandler接口主要有以下两个方法:GetSchema() -以JSON格式返回SOE的资源列表HandleRESTREquest() 方法主要有两个作用:回调资源和操作的方法、获取资源在实例级别的描述。 该方法在识别这两个作用的时候是通过operationName参数,如果该参数是空字符产那就是第二个作用,否则是第一个作用。该方法的参数如下: (1).String capabilities:一组被资源授权的操作,可以为空字符串 (2).String resourceName: 资源名称. 空字符串表示根级别,子资源会通过/ 表示 (3).String operationName: 操作名称(4).String operationInput: 操作的参数,JSON格式(5).String outputFormat:客户端请求的输出格式,如JSON,AMF (6).String responseProperties: 通过操作返回的一组键值对,逗号分开3.大致流程(1)编写代码。通常使用ESRI提供的REST SOE模板(2)在每台SOC机器上注册SOE COM组件(3)将SOE注册到ArcGISServer中(4)为ArcCatalog或者Manager编写并部署一个属性页(可选)(5)在Server中启动SOE,并测试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请求的resourceN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论