服务介绍 |
SuperMap iServer 采用了面向服务的体系架构(Service-Oriented Architecture,SOA),SOA 强调使用服务封装不同的功能单元,服务所暴露的接口通过契约规定其功能性和非功能性的作用和特征,从而实现在广域网络(如,Internet)环境下的业务集成和互操作,而不受平台环境的限制并易于重用。
SuperMap iServer 可提供的服务类型如下:
SuperMap iServer 可以使用多种来源提供的数据来发布上述服务,如 SuperMap 工作空间数据、远程 WMS 服务、远程 WFS 服务、远程 REST Map 服务等。
表1 SuperMap iServer 的服务来源
GIS 功能 |
服务类型 | 服务来源 |
地图功能 | 地图 REST 服务 | SuperMap 工作空间数据、远程 WMS 服务、远程 WMTS 服务、远程 REST Map 服务、超图云服务、Bing Maps 服务、天地图服务、MBTiles 文件等。 |
WMS 服务 | ||
WMTS 服务 | ||
数据功能 | 数据 REST 服务 | SuperMap 工作空间数据、远程 WFS 服务、远程 REST Data 服务。 |
WFS 服务 | ||
WCS 服务 | ||
分析功能 | 空间分析 REST 服务 | SuperMap 工作空间数据,以及 REST SpatialAnalyst 服务。 |
交通网络分析 REST 服务 | SuperMap 工作空间数据,以及 REST TransportationAnalyst 服务。 | |
交通换乘分析 REST 服务 | SuperMap 工作空间数据,以及 REST TrafficTransferAnalyst 服务。 | |
WPS 服务 | SuperMap 工作空间数据。 | |
三维功能 | 三维 REST 服务 | SuperMap 工作空间数据,以及 REST 3D 服务。 |
三维网路分析 REST 服务 | SuperMap 工作空间数据。 | |
动态标绘功能 | 动态标绘REST服务 | Plot 文件。 |
在 SuperMap iServer 中所有的 GIS 功能都封装成服务,这些服务是松散耦合的,强调互操作,可以按照某种方式与组件、应用程序或其他服务进行组合。在 SuperMap iServer 中一个服务由服务接口、服务组件和服务提供者三个部分组成。
服务提供者(GIS Service Provider)封装并统一了对功能的不同实现,屏蔽了不同服务来源的区别,对于不同的服务来源有不同的服务提供者,例如,用于获取 SuperMap iObjects 提供的 GIS 功能的 UGCMapProvider,用于获取 WMS 服务的 WMSMapProvider 等;服务组件是对不同服务提供者的功能进行组合和封装,封装成粒度较粗的模块,例如地图组件、数据组件等;对于一个服务组件,SuperMap iServer 在服务接口层支持将其按照不同的服务规范发布成网络服务,比如 REST 服务、WMS 服务等。
SuperMap iServer 发布服务时,使用服务组件将服务提供者提供的功能封装起来,然后再将服务组件发布成合适类型的服务。一个服务组件可以使用多个服务提供者,一个服务组件同时还可以发布成多种类型的服务。下图以 Map 服务组件为例来说明服务组件、服务接口和服务提供者的关系。
SuperMap iServer 服务可以是通用空间服务(Generic Spatial Service),也可以是领域空间服务(Domain Spatial Service)。通用空间服务指通常的 GIS 服务,如地图服务、空间数据服务、空间分析服务等;而领域空间服务则用来描述 GIS 在特定行业中的应用相关的服务,用户通过对通用空间服务的二次开发或配置,添加自己的业务逻辑,就能定制出满足某一行业领域特殊需求的空间服务,进而达到通用空间服务在具体领域的多层次复用。例如气象领域,在通用空间服务的基础之上,加上天气预报服务、气象警报服务等,定制出满足气象行业特殊要求的气象领域服务,用户通过使用该服务能够方便地查询某一城市的天气情况并在地图上显示,查询哪些地区进入了预警状态等。配置成什么类型的服务取决于服务组件的选取,如果使用的 SuperMap iServer 的 Map 服务组件,那么这个服务就是地图服务,并可以通过服务接口发布成 REST 地图服务、WMS 服务等;如果用户根据特定行业实现了一个领域空间服务组件,使用这个服务组件的服务就是一个领域空间服务,同样可以通过服务接口将其发布成多种类型的服务。
一个服务配置情况,即,使用什么服务组件、服务提供者和提供什么服务接口,是由 SuperMap iServer 的配置管理模块来实现的。有关服务的配置请参见 服务的配置。