0. 学习ArcIMS可查看文档系列:
   ArcIMS帮助文档(htm格式),可通过单击Author、Administrator、Designer等工具的Help菜单选项Help Contents打开。
   Customizing_the_HTML_Viewer.pdf文档,已下载到本机,主要用于学习html viewer客户端站点开发。
   ArcXML程序员开发帮助手册(ArcXML_Programmers_Ref_Gd.pdf),安装文件目录E:\安装程序\ArcIMS9.0_New\ArcIMS9.0_New\Documentation\ArcXML_Guide下即可找到。
1. Author主要用于构建地图和创建地图配置文件(*.AXL)
2. Administrator主要用于发布地图服务( FeatureServer或ImageServer)
3. Desinger主要用于创建WebSite站点,在其中引用之前发布的地图服务,并选择地图载体viewer的类型。其中,引用的地图类型为FeatureServer,则viewer只   能为Java Customer Viewer或Java Standard Viewer;如果地图类型为ImageServer,则viewer只能为html viewer或java viewer。
4. 在访问时,URL字符串针对地图服务类型不同:
     不管地图类型是哪种,登陆网站时,都将采用default.htm作为网站的入口文件。其唯一的功能就是用来判断客户所使用的网页浏览器的类型,是IE还是NetScape,在此判断的基础上,浏览器会自动跳转到对应的框架构造页面。
   FeatureServer站点:自动跳转到http://localhost/website/sitename/frame.htm,其中sitename是指在designer中的创建站点时所取的站点名称。  例如:http://localhost/website/ims1/frame.htm
  ImageServer站点:自动跳转到http://xionglee/website/sitename/viewer.htm,其中sitename是指在designer中的创建站点时所取的站点名称。例如:http://xionglee/website/sanfransico/viewer.htm
5. 在输入URL时,尽量采用机器名,而不要采用localhost。尽管有时是在本机进行站点浏览测试,但有时采用localhost会造成该错误:
ERR0134] Requested Service is not available.

http://xionglee/servlet/com.esri.esrimap.Esrimap?ServiceName=SanFranSico

此时,浏览器地址会自动跳转到:http://localhost/website/sanfransico/Run.htm
6. Manager提供了另一种简便的创建和维护网站的工具。它使用一种基于向导的方法全程引导程序员创建网站。它包括ArcIMS三个主要组成部分-Author,Administrator,Designer。使用Manager,可以快速高效地通过网络,集中进行地图网站的发布与定制。实现了异地环境下地图网站的发布与管理。
7. 每次采用Administrator创建一个Service时,每当点击保存按钮时,都会在D:\Program Files\ArcGIS\ArcIMS\AppServer\目录下创建一个ArcIMSSite.sez文件,该文件记录了创建服务的信息。如果删除一个原有的服务,并重新创建同名的服务时,需要删除该服务记录文件,并充启Application、Monitor、Task等服务。否则会在利用Administraor创建新服务时,出现该错误:[Erro0125] Error when trying to administrator 。
8. Web服务器的Application Server Connector和ArcIMS的应用服务器(Application Server)的通信是基于Servlet发送ArcXML,因此需要安装Java环境和Servlet运行环境。ArcIMS的Author和Design、Administrator也是基于Java实现。
9. Application Server Connector的作用: 
用于连接Web Server和ArcIMS Application Server的Application Server Connectors,其本质是ArcIMS定制开发的API,此外,还有Java、ActiveX、ColdFusion、Servlet、.net等几种API。ArcIMS默认Servlet Connector为默认的连接器,通过Connector和Application Server通信,将请求由Servlet Connector发送给Application Server(如需要将请求格式转换为ArcXML,还需进行格式转换为ArcXML)。
ArcIMS的核心是ArcXML,Application Server管理Spatial Server,处理ArcXML请求,并返回ArcXML的结果,对于不同的开发接口(Connector),或者也处理这样的XML,或者由 Connector封装了此类请求,然后在后台与Application Server交互。在这个过程中,Connector主要负责对WebServer传递过来的客户端的请求按照ArcXML格式进行封装,再将处理后的ArcXML请求传递给Application Server。如果客户端为HTML Viewer,则客户端的js代码,已将请求转换为ArcXML格式,此时Connector只需要将请求信息传递给Application Server即可。
运行于Application Server的地图服务(Service)是无状态的,也就是说他只是根据ArcXML请求,调度Spatial Server来不断的生成图片或者其他数据,然后以ArcXML的格式返回给Web Server的Application Server Connectors。因此,用户(地图)的状态,例如当前的缩放比例,位置等,或者在Web服务器端通过Seesion保留,或者在客户端通过某种方式保留(如表单的隐藏域,Url参数等等)。
10. ArcIMS的体系架构:

  
    ArcIMS Spatial Server (空间服务器)

    是ArcIMS的终端,提供主要的GIS功能。其主要组件主要实现地图渲染,即地图render。其结构如下:


当收到一个请求时,空间服务器将执行以下功能:
• Image—creates image files from maps created in either ArcIMS Author or ArcMap™

• Feature—streams map features

• Query—searches for features matching search criteria

• Geocode—performs address-matching operations

• Extract—creates shapefiles from selected map features

• Metadata—publishes metadata

• Route—calculates routes between a set of two or more stops

      这些功能与Virtual Server(虚拟服务器)相对应。
      另外,两个后台运行的windows服务将用来支持Spatial Server的运行,分别是:ArcIMS Monitor和ArcIMS Tasker。它们的功能分别为:

• ArcIMS Monitor tracks the state of the ArcIMS Spatial Server. When your system is rebooted, ArcIMS Monitor automatically restores your ArcIMS services.
 • ArcIMS Tasker removes output files. These files, generated by the Spatial Server to support ArcIMS services, are removed at a user-defined time interval.

ArcIMS Application Server(应用服务器)

 应用服务器(Application Server)主要用于处理客户端请求和跟踪运行在空间服务器(Spatial Server)上的服务(Services)的状态。它传递一个请求信息到某个较空闲的空间服务器(Spatial Server)。作为一项Java应用,它是做为系统服务列表项中的一项服务而运行在windows服务器上的(可查看管理工具-服务)。当然,它也可以作为一个虚拟的进程运行在UNIX和Linux服务器上。

ArcIMS application server connectors(应用服务器连接器)

 从客户端发送过来的请求和响应,都需要在Web服务器和ArcIMS应用服务器之间进行连接,这就需要应用服务器连接器(ArcIMS Application Server connectors )来完成。ArcIMS指定Servlet connectors为系统默认的服务器连接器,这就是为什么我们在能够在ArcIMS安装包中找到ServletExec安装包的原因。安装后,Servlet Connector主要作为web servlet运行,使得web服务器能够处理ArcXML请求。
当然,还有其它几种连接器也可完成此项任务,包括:

• ColdFusion ® Connector

• ActiveX® Connector

• ArcIMS Java™ Connector

• ArcIMS .NET Link

 它们的区别在于:

The ColdFusion and ActiveX connectors work with custom clients and translate their own languages into ArcXML. The ArcIMS Java Connector communicates with the ArcIMS Application Server via a JavaServer Pages™ (JSP™) client or a standalone Java application. The .NET Link provides a TCP/IP or HTTP connection to the Application Server. For more information about these connectors, see the Customizing ArcIMS series of books.
不管采用上述哪种连接器,都需要将请求转换为ArcXML。再由连接器将请求发送给ArcIMS Application Server。由于Web服务器的Application Server Connector和ArcIMS的应用服务器(Application Server)的通信是基于Servlet发送ArcXML,因此需要安装Java环境和Servlet运行环境。ArcIMS的Author和Design、Administrator也是基于Java实现。
以上内容参考文章:ArcIMS帮助文档-ArcIMS architecture内容。

 11. ArcIMS的开发模式:

  • 使用Author、Designer通过可视化方式来设计地图,发布,无须编程;
  • 使用Connectors来开发,目前可以使用ASP、.net、Java等等方式来开发。
12. ArcIMS的体系结构如下图所示:

13. 开发模式与运行机制
使用ArcIMS的设计工具Author、Designer来编辑Axl定义文件,增加地图服务,定制Html客户端或者Java客户端,发布地图服务,这种开发模式都属于客户端处理模式;而使用ActiveX Connector,.Net Link的方式开发,则属于服务器端处理模式。这里的处理是指处理ArcXML。
客户端处理模式,使用Html客户端或者定制Html客户端开发。系统的运行机制如下:


这种模式下,客户端的请求已经是ArcXML格式封装的,然后由Web服务器委托Application Server Connectors处理,由于请求已经是ArcXML格式,Connector的任务只是简单的把请求转发给Application Server。
这种模式下,发送和返回请求都需要在客户端来处理,因此,ArcIMS的Html客户端的JS代码行数达到万行级别,也就不奇怪了。另外,返回和发送ArcXML,其中很多数据都是无关紧要或者不需要的,对于网络通信,也是一个负担。得到服务器端返回的ArcXML后,客户端JS负责解析,然后再在服务器下载需要的图片,显示在客户端。
以上内容,可参照文章:http://www.cnblogs.com/maweifeng/archive/2006/07/28/462417.html

14. 几种ArcIMS viewer在构建站点时website文件目录中文件组成结构的不同
     在客户端处理模式下,我们会采用html viewer或java viewer两种类型的viewer嵌入到浏览器之中。根据开发人员在网站开发过程中选取的服务类型和数据流等要求,选择不同的viewer集成到浏览器之中。html viewer适合于不需要数据流和数据集成相对简单的网站,通过html,javascript脚本库或修改javascript代码实现对html浏览器的定制。如果地图服务类型为影像地图类型(Image Services),则只能采用Html viewer作为浏览器的查看器。这种情况GIS功能有限,但不需要java2插件或Applet的支持。
    此时website对应站点目录的文件结构如下:
    default.htm 是访问网站的第一个网页。
    Run.htm 通过在default.htm中脚本函数对客户端浏览器及系统平台等环境判断,执行该页面。
    在该页面中,指定了两个frame框架页面:MapFrame--Authorize.htm、 PostFrame--jsForm.htm。
   Authorize.htm  主要负责将客户端请求封装为ArcXML请求字符串,通过form.submit()方式发送给Application Server Connector。当服务器端返回访问权限响应,再对应响应进行处理。若通过权限验证,则打开viewer.htm主窗口页面。
   jsForm.htm 主要用于创建提交请求处理的Form控件。
   viewer.html 是html viewer网站的主窗口页面,是经过前面几个页面的处理和验证之后的最终显示页面。其中定义了站点主窗口各模块功能所需调用的框架页面。包括:TopFrame、ToolFrame、MapFrame、TextFrame、TOCFrame、ModeFrame、BottomFrame、PostFrame等。
    ArcIMSparam.js 保存多数定制参数。存储了在designer中选择的参数以及其它许多影响网站的外观和功能参数的javascript参数文件。
    javascript脚本库(javascript文件夹),主要用于发送客户端ArcXML请求到Connector和处理服务器返回的ArcXML响应。包括:aimsXML.js、aimsMap.js、aimsCommon.js等16个脚本文件。
15. 在用Administrator创建服务时,影像数据流服务(Image Service)与要素数据流服务(Feature Service)的区别:
     创建要素数据流服务,需要选择FeatureServer实例作为虚拟服务器,此时Axl文件中所指定的图层的数据来源必须至少包含一个shapefiles要素类型,不允许只有一个Image类型的图层作为数据源的情况,否则只能选择ImageServer作为虚拟服务器;
     而创建影像数据流服务,可以选择ImageServer或FeatureServer实例,即Axl文件中所指定的图层(Layer)的数据来源必须可以为Image Files类型,也可以为shapfiles要素类型。当数据来源为shapefiles类型数据,在页面浏览时,服务器端将以影像数据流的方式将数据传输到客户端浏览器。
16. 在用designer定制网站时,javascript类库生成条件:
如果网站调用地图服务类型为ImageServer类型实例,则浏览器可选择Java Viewer或html Viewer两种查看器。创建站点子文件目录中是否会自动创建javascript类库,根据浏览器嵌入的viewer分为以下几种情况:
     如果采用了Java Custom Viewer或Java  Standard Viewer查看器,则不会自动创建javascript类库在网站目录下;
     如果采用了html Viewer查看器,则会自动创建javascript类库在网站目录下。
如果网站调用地图服务类型为FeatureServer类型实例,则不会在网站目录下。
从上面可以看出,是否创建javascript类库,主要还是取决于创建的站点是html网站还是java网站。因为java网站采用的是applet嵌入到客户端浏览器,由applet内部机制实现ArcXML的转换与发送响应。无需javascript函数功能实现ArcXML的处理。
16. 关于.Net Link的安装。
ArcIMS默认安装情况下,不会安装.Net Link Runtime&Developer Help。如果需要采用服务器后台进行ArcIMS二次开发,则必须安装.Net Link运行时,才能调用ESRI.ArcIMS.Server.dll类库中的接口方法。需要重新安装ArcIMS时,选定特定的组件。

如果在安装窗口对应节点下,没有看到.Net Link Runtime安装节点,则说明你的机器上缺乏.net framework1.1和.net framework1.1 sdk(注意:这两样东西不是同一个组件,都需要安装)。安装后,再安装ArcIMS时,就会看到该选项。
待续...