ArcGIS Server是一个三层的分布式系统,它由多个组件组成。AS的组件分为两部分,一是服务器端组件,如web服务器和GIS服务器;另一端是客户端组件,即访问AS的程序,如web浏览器和ArcGIS的桌面端和AE产品。第一层是客户端、第二层是web服务器,第三层就是GIS服务器。
我们先不谈桌面端的产品,先讨论服务器端的两个组件,即web服务器和GIS服务器。
WEB服务器是三层结构的第二层,它是用于构建web服务的计算机,需要安装web服务器软件,如IIS等。WEB服务器用于接收客户端请求并运行web应用程序和服务。最简单的WEB服务器可以只负责解析HTTP协议,但如果要干点别事情,如能够解析ASP、JSP等等WEB程序,就必须在WEB服务器上安装点别的组件。如ArcIMS中,我们需要在WEB服务器上安装连接器就是这个道理。同样,在AS中,我们开发的基于AS的WEB应用程序(ASP.NET网页)和web服务都在web服务器上,要运行起来还得装ADF Runtime才行,因为这些程序都使用到了AO,必须在WEB服务器上也安上必要的组件才行。因此,为了能够通过WEB服务器访问AS,我们必须在WEB服务器上安装两个软件:WEB服务器软件,如IIS,AS应用程序框架,即ADF Rumtime。
GIS服务器负责管理和运行服务器对象。它包括一个Server Object Manager(SOM)、一个到多个Server Object Containers(SOC)和AS软件开发包。
Server Object Manager是一个用于管理GIS资源,如地图或定位器的对象,我们在ArcCatalog中新建服务后添加的Server Object就是这个对象。它本身是一个AO组件,并且有权限来使用服务器端的其它AO组件。SOM负责管理一群SOC,即一群进程,如负责将外部访问交给某个进程处理,平衡SOC的荷载。它也是一切访问AS的程序接触到AS的总阀门。
SOC是一个进程,当我们访问一个Server Object时系统会根据情况决定是否建立一个SOC,这个进程中可以容纳一个或多个Server Object的访问例程。我们可以在进程管理器中看到它。而Server Object,则是提供地图服务和定位器服务的对象,这个对象在编程中非常重要。
因此,一个外部访问是这样进行的:
访问连接到SOM,SOM将分配一个SOC给访问,这个SOC是一个进程通道,我们的任何访问和操作都在这个通道内完成,通过这个进程中的一个例程,我们获得了一个Server Object,这个SO,就是我们需要获取的对象,我们可以通过IMapServer接口来对其进行编程或访问了。
因此,ArcGIS Server,实际上就是一个管理服务器对象的对象服务器。
备注:本文引用自http://www.hmgis.cn/post/241.html