【ArcGIS 10.5 产品白皮书】第二章 ArcGIS平台产品---ArcGIS GIS Server(7)自定义扩展开发

0
分享 2017-04-01
用户可以使用可在ArcGIS客户端执行的自定义逻辑来扩展ArcGIS GIS Server地图和影像服务,可使用两种方法扩展这些服务类型:

1.1. 服务器对象扩展模块(SOE)

可用于创建新的服务操作,以扩展地图或影像服务基本功能。如果用户要执行的明确定义的业务逻辑很难利用ArcGIS客户端API 来实现,这时就可以选择使用SOE 。大多数SOE 是通过将 ArcObjects 代码与 GIS 数据和地图结合使用来实现此目标的。 ArcObjects 是构建ArcGIS 的核心组件,通过 ArcObjects 编写 GIS 功能可以提供最大的灵活性。

SOE 适用于创建新的服务操作,以扩展地图或影像服务的基本功能,SOE 具有以下优势:

· 可将 SOE 以表述性状态转移 (REST) 或简单对象访问协议 (SOAP) Web 服务的形式进行暴露,从而使构建于 ArcGIS 客户端 API 和任何其他 REST 或 SOAP 客户端上的自定义客户端能够方便地对其进行调用。事实上,RESTSOE 会显示在ArcGIS 服务目录中并可暴露出ArcGIS 客户端API 能够识别的典型对象类型(大多数采用JSON 格式)。

· 构建SOE时,用户只是提供在ArcGIS GIS Server上进行工作的大致方法,而不是从客户端对服务器进行大量的调用。SOE 可非常有效地封装 ArcObjects 逻辑,从而为用户快速执行调用提供了理想的环境。

判断是否需要SOE

开发SOE最容易的替代方案,可能就是创建实现业务逻辑的地理处理模型,然后将该模型作为服务进行发布。可使用模型构建器以交互方式对需要的工具进行拖放和连接,而无需编写 ArcObjects 代码。地理处理服务同样支持异步执行功能,这样用户可以开始作业、执行其他操作并随后返回来检查结果。

地理处理服务的缺点是占用的内存较大并且运行速度可能比SOE 慢。如果用户一天只运行某个流程几次,那么这不是什么问题。然而,如果一天要运行某个流程很多次,或者有许多并发用户,则花些时间来构建SOE 是值得的。

1.2. 服务器对象拦截器(SOI)

可用于拦截地图或影像服务的现有内置操作请求。这使用户可以执行自定义逻辑,并可针对现有客户端无缝覆盖现有操作,从而更改这些服务行为。上述客户端可以是使用ArcGIS API for Javascript 和 ArcGIS Runtime SDKs 等构建的应用程序。

SOI适用于更改现有地图或影像服务操作行为。例如,用户可以更改查询或地图影像导出请求行为。如果需要一个地图服务可以同时开启多个SOI扩展满足不同的拦截需求。

判断是否需要SOI

如果用户想扩展服务器的新功能,可考虑使用SOE或地理处理模型和脚本。SOI适用于对一个已经存在的ArcGIS Server服务添加一个功能或操作,这种改变对于已经存在的客户端应用程序来说是察觉不到的。

· 用户可以通过创建 SOI 来实施自定义业务逻辑(如安全性),或对默认地图或影像服务不符合的要求进行审核。例如:

· 在服务器创建的所有地图影像上加水印 - 可通过创建 SOI 向服务器创建的地图影像上叠加自定义水印。该功能可让组织或托管公司确保所有影像上均正确添加了标识。

· 审核并记录所有请求 — 出于调试目的,用户可创建 SOI 以记录收到请求的详细信息,如有关输入参数和该请求传递的用户凭据的完整信息。

· 后处理响应 — 可向发出的响应添加来自不受ArcGIS GIS Server支持的单独业务系统的其他信息,以便将空间数据与其他商业智能数据进行连接。

· 地图服务操作级别的访问控制 — ArcGIS GIS Server仅支持向所有服务用户提供启用服务操作或完全禁用访问操作。SOI 可基于用户角色对收到的请求进行过滤,以实现服务操作级别的访问。

· 地图服务图层级别的访问控制 — 无论用户是具有对所有服务数据的完全访问权限,还是不具访问权限,ArcGIS GIS Server都仅提供服务级别的数据访问。SOI 可用于对特定图层的访问进行过滤,还可以根据用户角色过滤图层内的数据。

1.3. 开发扩展模块须知

开发扩展模块需要用户具备通过Java或.NET编程语言调用 ArcObjects 的知识。同时还需要了解REST或SOAP原理。使用Java开发的扩展模块可以部署至ArcGIS GIS Server (Windows) 和ArcGIS GIS Server (Linux) 。使用 .NET 开发的扩展模块仅可部署至ArcGIS GIS Server (Windows) 。

只能针对特定的服务类型(地图服务或影像服务)开发扩展模块。例如,无法开发既适用于地图服务,又适用于影像服务的通用扩展模块。在这种情况下,必须为每种服务类型开发单个扩展模块;即为地图服务和影像服务各开发一个扩展模块。

另外,如果要为扩展模块编写自动生成属性页面之外的自定义属性页面,用户必须了解 Windows 窗体开发或 Java Swing(针对 ArcCatalog 页面)或使用超文本标记语言 (HTML) 和 JavaScript 进行Web窗体开发(针对 Manager 页面)的知识。
【ArcGIS 10.5 产品白皮书】第二章 ArcGIS平台产品---ArcGIS GIS Server(1)概述:http://zhihu.esrichina.com.cn/article/2909
【ArcGIS 10.5 产品白皮书】第二章 ArcGIS平台产品---ArcGIS GIS Server(2)架构:http://zhihu.esrichina.com.cn/article/2908
【ArcGIS 10.5 产品白皮书】第二章 ArcGIS平台产品---ArcGIS GIS Server(3)主要功能:http://zhihu.esrichina.com.cn/article/2907
【ArcGIS 10.5 产品白皮书】第二章 ArcGIS平台产品---ArcGIS GIS Server(4)产品级别:http://zhihu.esrichina.com.cn/article/2906
【ArcGIS 10.5 产品白皮书】第二章 ArcGIS平台产品---ArcGIS GIS Server(5)服务类型:http://zhihu.esrichina.com.cn/article/2905
【ArcGIS 10.5 产品白皮书】第二章 ArcGIS平台产品---ArcGIS GIS Server(6)扩展模块:http://zhihu.esrichina.com.cn/article/2904
【ArcGIS 10.5 产品白皮书】第二章 ArcGIS平台产品---ArcGIS GIS Server(7)自定义扩展开发:http://zhihu.esrichina.com.cn/article/2903
【ArcGIS 10.5 产品白皮书】第二章 ArcGIS平台产品---ArcGIS GIS Server(8)包含的主要技术:http://zhihu.esrichina.com.cn/article/2902
【ArcGIS 10.5 产品白皮书】第二章 ArcGIS平台产品---ArcGIS GIS Server(9)部署:http://zhihu.esrichina.com.cn/article/2901

0 个评论

要回复文章请先登录注册