什么是服务器对象扩展?

服务器对象扩展模块 (SOE) 可用于扩展 ArcGIS Server 地图和影像服务的基本功能。不支持其他服务类型。大多数 SOE 是通过将 ArcObjects 代码与 GIS 数据和地图结合使用来实现此目标的。ArcObjects 是构建 ArcGIS 的核心组件,通过 ArcObjects 编写 GIS 功能可以提供最大的灵活性。

如果您要执行的明确定义的业务逻辑很难利用 ArcGIS Web API 来实现,这时就可以选择使用 SOE。SOE 具有以下优势:

如果要提供无法通过其他方式获得的 ArcObjects 功能或需要提供可快速执行的 ArcObjects 功能,您可能需要开发 SOE。

SOE 适用于经验丰富的开发人员并需要了解多种开发平台的知识。ArcObjects SDK for Java 包含了多个 SOE 示例以供查看。

开发 SOE 须知

SOE 开发需要您具备通过 Java 调用 ArcObjects 的知识。同时还需要了解 REST 或 SOAP 原理。

另外,要为除自动生成的 SOE 以外的 SOE 编写自定义属性页面,您必须了解 Java Swing(针对 ArcCatalog 页面)或使用超文本标记语言 (HTML) 和 JavaScript 进行 Web 表单开发(针对管理器页面)的知识。

是否需要 SOE?

SOE 的开发需要了解 Web 服务开发和 ArcObjects,并且必须进行部署以供服务器使用。在开发服务器对象扩展之前,您不妨考虑一些更容易的替代方案。

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

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

以前许多开发人员针对不同任务编写 ArcObjects 代码,而现在无需 ArcObjects 便可实现这些任务。有关使用 ArcObjects 以外的其他方法来执行 Web 制图的详细讨论,请参阅服务器对象扩展的替代方法

6/13/2014