1、 arcims的体系结构 
 arcimstijiagou.jpg
   当你安装完arcims软件以后,已经包括了上图中的ArcIMS应用服务器,ArcIMS空间服务器两个中间件。当然还有Monitor, Tasker;工具软件admin,author;各种连接器servlet,javaconnector的代码等。
   大家可以看到,arcXML在应用服务器和空间服务器之间传递。所以空间服务器是这些中间件中压力最大的。
   表现层:html,applet,ocx控件。也可以是c/s的任何桌面程序。
   业务逻辑层:arcims的应用服务器和空间服务器是arcims软件自带的。
Arcims 的servlet连接器必须与web服务器(iis,tomcat…)绑定。而javaconnector支持http,tcp-ip等多种协议。可选择 的与web服务器绑定,但ims的admin软件必须有web服务器才能运行,另外arcims中的图片也是个url,也需要web服务器。所以web服 务器是各种连接器的容器。
   数据存储层:arcims支持的文件,或arcsde空间数据引擎等。

Arcims应用服务器:管理虚拟服务器,地图服务(admin配置的),连接器请求线程管理等。连接器调用它,它在调用空间服务器。一个应用服务器可以连接多个空间服务器。
Arcims 空间服务器:把矢量书生成图片,或做空间分析,查询等。Arcims的核心。还好我们不要关注具体算法等。开源gis,mapxtreme,super map等也就这部分没arcims强。但空间服务器与别的组件的协议是arcxml。虽然arcxml规范比较全面,但这个高度的松散偶合也给 arcims的复杂开发带来些局限性。以后我会提到。
2、 arcXml的重要性
因为搞编程的人不是地理学专家、矢量数据结构专家、图象技术专家。至少不能共同关注这好些技术。所以arcXml规范的定义是极其重要的。也可以让外行人开发专业的程序。这叫好比VML.SVG标签语言一样,如果你不懂数学算法,不可能画一个椭圆。
    以前我也说过,如果你掌握了arcxml,那你就基本知道arcims能做什么,能实现什么功能。至于做的好坏,那看你的行业知识、编程能力了。
3、 Introduction to ArcXML
上面说了一堆废话,现在看看arcXML到底是什么。
ArcXML 是为了与arcIMS空间服务器通信而定义的协议。而arcIMS空间服务器是arcims的核心,它把地图和数据打包成适当的格式,发送到它的客户端 (arcIMS应用服务器)。要懂arcxml,首先必须知道怎么样配置文件,建立arcims服务,请求和响应,以及怎么与空间服务器结合。
 
1、 建立一个axl为扩展名的配置文件。(xml格式)
2、 用 ArcIMS Administrator 建立并启动 ArcIMS Service
3、 接受请求
4、 响应请求
intro_1.gif
4、 arcims核心(ArcIMS Spatial)
  arcIMS 空间服务器是arcims的核心。Arcims软件也可以分布式部署ArcIMS Spatial.关于详细部署可以看arcims安装文档。有时间我写篇专门讲讲。如果是正版软件,你可以让esri公司来干这个事。
arcimsxnyx.jpg
(1) 传输时间:接器的选择会影响
(2) 排队时间:以多建立虚拟服务器来解决。
(3) 渲染时间:比较费事,可以分布式部署空间服务器来解决)
(4) 查询时间:数据库调优,arcsde调优。(有时间再讨论)
5、 servletconnector与javaconnector的区别

arcims开发经验总结
arcIMS 客户端 连接器的选择
以前文章我也简单说了说。

用图表来分析。
Servletconnector:
 servlet.jpg
上 图表示了servlet连接器的结构。注意,用这种连接器,把从arcims返回的arcxml直接传递给了浏览器,浏览器用字符串拆分技术或dom技术 来解析这个复杂的xml串。(还好htmlview的模板提供了这些代码,不过用javascript拆分字符串,没用dom标准)
    每次请求的arcxml字符串是很大的,arcxml包含的有些信息对用户是没用的,所以在web服务器与浏览器之间,浪费了许多带宽,对于二次开发人员,难度也加大不少。
javaconnector:
 javaconnector.jpg
使用javascnnector ,浏览器与web服务器之间传输的协议由二次开发人员定义,这可能会加大编程难度,但随着ajax技术的成熟,开源框架dwr,json等的完善,这部分工作会越来越简单。
但javaconnector 引来一个问题,它的Map java对象不是线程安全的,而这个对象的初始化比较费时间。它和jdbc中的数据库连接差不多。针对这个对象写了个Map池,从我们项目运行的情况看, 效果还不错。如果用javaconnector,对java编程需要一定的基础。
6、 业务的复杂度决定我们应该用哪种连接器
如 果你只是想简单的发布地图,htmlview就可以满足你的需求。如果有复杂的业务,gisporal定制,权限管理,那你用htmlview会让你面临 灾难。我选择javaconnector. Using_ActiveX_Connector, Using_NETLink也有文档。 但你要做大型,高性能的webgis,j2ee必定是受选,unix,arcims在j2ee的积累,arcims很多程序使用java实现的。(另外 arcinfo最早是在unix命令行形式运行的)。
A、 java语言比javascript高级多了。Htmlview大多数用javascritp实现。
B、 跨浏览器的支持。噩梦吧。
C、 ajax技术的成熟,客户端与服务器端交互容易多了。
D、 webgis无刷新更新数据是必须的,那必须下载足够多的数据。安全性是个问题。
E、 权限判断,业务定制等用javascript实现简直是噩梦。
   
7、 webgis开发人员的感想
开 发webgis系统,对程序员的要求太高了,可是工资水平一直很低,行业极其不成熟,国内也没什么发展前途,让我好多次有想法转行专门做j2ee去,但还 是坚持下来了。国内这帮搞gis的都是学院派出生,相对编程能力,计算机应用水平比较差,对it行业市场把握能力也较差,被别人抢的先机。现在以 google牵头各大搜索引擎都提供的 地图服务,另外国内 edushi等又有一批仿三维的地图服务出现,让我看到一思希望。做传统gis 的公司该收复失地的,毕竟我们是有优势的。


参考:
arcxmlguide.htm
arcims性能优化和调整  许晓辉