《WebGIS开发实践手册》2.2 ArcIMS服务器组件[1]
ArcIMS服务器层组件是其架构最核心的部分,它包含了空间服务器、虚拟服务器和ArcIMS服务三种对象和概念。其中,空间服务器是ArcIMS产生地图数据的最关键对象,而虚拟服务器则是管理前者的一个虚拟概念,它们的最终目标就是为了新建某种类型的ArcIMS服务。
2.2.1. 空间服务器Spatial Servers
ArcIMS的空间服务器是产生地图图像文件和与地图相关信息的核心对象,当它收到一个ArcXML请求时,会调用一个或多个函数来进行相应的处理。每个这样的函数都可以被看作是空间服务器的一种组件,这样的组件种类很多,包括以下几种:
Ø Image:根据ArcIMS Author产生的地图配置文件AXL生成地图影像文件;
Ø ArcMap Image:根据用ArcMap产生的地图配置文件MXD生成地图影像文件;
Ø Feature:产生地图要素流;
Ø Query:根据搜索条件寻找匹配的要素;
Ø Geocode:执行地址匹配运算;
Ø Extract:将选择的地图要素转换为Shapefile文件;
Ø Metadata:发布和搜索地图元数据;
Ø Route:必须安装可选的RouteServer扩展才能使用,用于计算两点或多点之间的路径,但其数据是美国的,不适合国内使用;
Ø SDCGeocode:基于RouteServer数据进行地址匹配操作;
那么,一个空间服务器对象是由哪些组件组成的呢?这种组成方式分为两种,一是除了ArcMap Image组件之外的其它所有组件组成的空间服务器;另一种则是仅由ArcMap Image组件组成的空间服务器。其关系如图 2‑2所示:
图 2‑2 空间服务器的组件
ArcIMS空间服务器在本质上是一个运行于计算机上的程序进程aimsserver.exe。在Windows平台中,我们可以在任务管理器的进程列表中找到它。ArcIMS默认安装时,仅有一个非ArcMap Image式空间服务器进程存在,如果在Windows、Solaris和Linux平台上安装ArcIMS时选择了ArcMap Server扩展插件,则会有另外两个ArcMap Image式空间服务器进程存在,即计算机上将同时存在三个aimsserver.exe进程。Aimsserver.exe进程也可以通过增加server,提高地图处理和显示能力。
尽管如此,空间服务器进程并不能被开发人员直接访问,我们对其的管理仅局限在添加和移除操作上,而对空间服务器的大部分交互工作都是通过虚拟服务器进行的。
2.2.2. 虚拟服务器Virtual Server
假设我们有2台电脑(即ArcIMS中的Server),每台机器上有5个空间服务器进程,由于不能与空间服务器进程直接进行交互,我们需要找到一种更好的方式对这10个进程进行管理,这可以使用ArcIMS提出的虚拟服务器概念。
比起空间服务器这类实际存在的对象(进程),虚拟服务器是一个纯粹概念上的管理工具。由于虚拟服务器的类型划分是根据空间服务器组件的功能作为依据,因此,每一个空间服务器都可以属于一个或多个虚拟服务器。这其中唯一的例外是ArcMap Server上的空间服务器,它是在安装ArcIMS时就指定的。在图 2‑3中,两个ArcIMS空间服务器都由一个名为ImageServer1的虚拟服务器进行管理。
图 2‑3 一个虚拟服务器管理两个空间服务器
ArcIMS中有多少种类型的虚拟服务器呢?空间服务器有9类组件,因此也就有9种不同的虚拟服务器。其中公共的有ImageServer1、ImageServerArcMap1、FeatureServer1、MetadataServer1四种;而私有的则是QueryServer1、GeocodeServer1、ExtractServer1、RouteServer1和SDCGeocodeServer1五种。图 2‑4展示了nbjbt这台计算机上存在的7种虚拟服务器,缺失的两种是因为没有安装必要的ArcIMS扩展插件。
图 2‑4 ArcIMS的虚拟服务器
虚拟服务器要么是公共的,要么是私有的。当我们使用管理工具时,只有公共虚拟服务器可以暴露给用户。我们可以选择产生或改变服务。但私有虚拟服务器的工作隐藏于幕后,它们只是在影像或要素服务需要时才被调用的。
如图 2‑5所示,该对话框用于新建一个虚拟服务器:
图 2‑5 新建一个虚拟服务器
在新建虚拟服务器的过程中,Server Type有四种选择,除了ImageServer-ArcMap外,其它三种虚拟服务器的Instances属性都是2,即默认有两个实例,而ImageServer-ArcMap只有1,即单个实例。同时,我们还可以在不同的Server上部署虚拟服务器,这个过程只需点击“New Server…”按钮选择一台Server即可,这样就可以根据荷载的情况在多台服务器硬件上部署虚拟服务器了。增加虚拟服务器,可以间接提升ArcIMS部分功能的处理能力。