ArcGIS Enterprise SDK 包含多项其他技术,用于可支持集成工作流或模式的定制 GIS 服务。 通过这些模式,Java 或 .NET 软件开发人员可以使用 ArcGIS Enterprise SDK 编写代码,扩展现有服务、创建新模式或影响现有服务行为。
服务器对象扩展模块 (SOE) 用于将新方法或功能(REST 端点)添加至现有服务。 这些扩展模块不影响现有的服务端点和方法,因此通常只能被已知该端点并能直接调用该端点的自定义应用程序或工作流使用。 有关 SOE 的更多信息,请参见什么是 REST SOE。
服务器对象拦截器 (SOI) 用于影响、控制或调整特定受支持服务的现有端点功能。 这意味着每次请求服务都会调用 SOI 代码,开发人员可以选择覆盖现有的逻辑路径,如 /query 或 /identify 请求。 随后,SOI 代码可以对传入的请求进行处理,调整参数或输入;也可以对现有服务器后端的响应进行处理,移除属性、添加信息或执行其他操作。 有关 SOI 的更多信息,包括示例和编码指导,请参见什么是 SOI。
服务拦截器是一种新的开发模式,支持对某些服务模式或类型进行全局控制,运行在站点级别的 REST 层,而非单个服务。 拦截器可以用来控制一组服务的行为,而不是对每个服务单独应用 SOI。 关于服务拦截器的更多信息及与现有 SOI 概念的比较,请参见服务拦截器概述。
出于集成目的,这些扩展性模式提供了一种方法,可将集成部署到现有的应用程序服务器 (ArcGIS Server) 中,从而使其能够与其他 ArcGIS 工作流或模式进行集成。
SOE 建立在现有服务之上,因此在 ArcGIS Enterprise 部署中继承了联合服务的身份验证模型。 .NET 或 Java 开发模式可能已有用于远程数据集或系统的库或工具,因此使用 SOE 创建新的 Web 服务端点,可能比托管和构建独立服务更容易实现集成。
SOI 可与 /query 请求等现有端点配合使用。 这支持拦截查询,随后对查询输入或结果集执行任何所需操作,例如连接现有系统的数据,或根据对其他端点的查询结果进行筛选。 这些步骤会在每个请求中引入延迟,且应谨慎设计以避免性能显著下降。
ArcGIS Online 应用程序或服务可与 ArcGIS Enterprise 服务交互,通过在 Web 地图体验中使用这些图层,进行使用 SOI 和服务拦截器。 ArcGIS Pro 也是如此,作为这些服务类型的受支持客户端,它可以将这些服务用于可视化和制图,作为地理处理工具的数据源,或用于打印,同时完整保留所有 SOI 或服务拦截器逻辑。 SOE 通常由定制应用程序使用,这些应用程序专为配合这些针对特定用例的新端点而设计。
| 功能 | ArcGIS Online | ArcGIS Enterprise | ArcGIS Location Platform | ArcGIS Pro |
|---|---|---|---|---|
| SOE 和 SOI | N/A |
完全支持 部分支持
在着手开发 SOE、SOI 或服务拦截器之前,请参见 ArcGIS Enterprise SDK 文档,特别是 ArcGIS Enterprise SDK 设计理念,其中提供了关于这些开发模式的有用指导和背景信息。 请参见文档主题 REST SOE 构建策略,了解 SOE 开发的最佳实践和建议。