当你安装完arcims软件以后,已经包括了上图中的ArcIMS应用服务器,ArcIMS空间服务器两个中间件。当然还有Monitor, Tasker;工具软件admin,author;各种连接器servlet,javaconnector的代码等。
大家可以看到,arcXML在应用服务器和空间服务器之间传递。所以空间服务器是这些中间件中压力最大的。
表现
业务逻辑层:arcims的应用服务器和空间服务器是arcims软件自带的。
Arcims 的servlet连接器必须与web服务器(iis,tomcat…)绑定。而javaconnector支持http,tcp-ip等多种协议。可选择
数据存储层:arcims支持的文件,或arcsde空间数据引擎等。
Arcims应用服务器:管理虚拟服务器,地图服务(admin配置的),连接器请求线程管理等。连接器调用它,它在调用空间服务器。一个应用服务器可以连接多个空间服务器。
Arcims 空间服务器:把矢量书生成图片,或做空间分析,查询等。Arcims的核心。还好我们不要关注具体算法等。开源gis,mapxtreme,super map等也就这部分没arcims强。但空间服务器与别的组件的协议是arcxml。虽然arcxml规范比较全面,但这个高度的松散偶合也给 arcims的复杂开发带来些局限性。以后我会提到。
因为搞编程的人不是地理学专家、矢量数据结构专家、图象技术专家。至少不能共同关注这好些技术。所以arcXml规范的定义是极其重要的。也可以让外行人开发专业的程序。这叫好比VML.SVG标签语言
以前我也说过,如果你掌握了arcxml,那你就基本知道arcims能做什么,能实现什么功能。至于做的好坏,那看你的行业知识、编程能力了。
上面说了一堆废话,现在看看arcXML到底是什么。
ArcXML 是为了与arcIMS空间服务器通信而定义的协议。而arcIMS空间服务器是arcims的核心,它把地图和数据打包成适当的格式,发送到它的客户端(arcIMS应用服务器)。要懂arcxml,首先必须知道怎么样配置文件,建立arcims服务,请求和响应,以及怎么与空间服务器结合。
1、 建立一个axl为扩展名的配置文件。(xml格式)
2、 用 ArcIMS Administrator 建立并启动 ArcIMS Service
3、 接受请求
4、 响应请求
arcIMS 空间服务器是arcims的核心。Arcims软件也可以分布式部署ArcIMS Spatial.关于详细部署可以看arcims安装文档。有时间
(1) 传输时间:接器的选择会影响
(2) 排队时间:以多建立虚拟服务器来解决。
(3) 渲染时间:比较费事,可以分布式部署空间服务器来解决)
(4) 查询时间:数据库调优,arcsde调优。(有时间再讨论)
用图表来分析。
Servletconnector:
上图表示了servlet连接器的结构。注意,用这种连接器,把从arcims返回的arcxml直接传递给了浏览器,浏览器用字符串拆分技术或dom技术来解析这个复杂的xml串。(还好htmlview的模板提供了这些代码,不过用javascript拆分字符串,没用dom标准)
每次请求的arcxml字符串是很大的,arcxml包含的有些信息对用户是没用的,所以在web服务器与浏览器之间,浪费了许多带宽,对于二次开发人员,难度也加大不少。
javaconnector:
使用
但javaconnector 引来一个问题,它的Map java对象不是线程安全
如果你只是想简单的发布地图,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实现简直是噩梦。
开发webgis系统,对程序员的要求太高了,可是工资水平一直很低,行业极其不成熟,国内也没什么发展前途