• arcims体系结构分析


     arcims体系结构分析:1、 arcims的体系结构

       当你安装完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、 响应请求

    4、 arcims核心(ArcIMS Spatial)
      arcIMS 空间服务器是arcims的核心。Arcims软件也可以分布式部署ArcIMS Spatial.关于详细部署可以看arcims安装文档。有时间我写篇专门讲讲。如果是正版软件,你可以让esri公司来干这个事。

    (1) 传输时间:接器的选择会影响
    (2) 排队时间:以多建立虚拟服务器来解决。
    (3) 渲染时间:比较费事,可以分布式部署空间服务器来解决)
    (4) 查询时间:数据库调优,arcsde调优。(有时间再讨论)
    5、 servletconnector与javaconnector的区别

    用图表来分析。
    Servletconnector:

    上图表示了servlet连接器的结构。注意,用这种连接器,把从arcims返回的arcxml直接传递给了浏览器,浏览器用字符串拆分技术或dom技术来解析这个复杂的xml串。(还好htmlview的模板提供了这些代码,不过用javascript拆分字符串,没用dom标准)
        每次请求的arcxml字符串是很大的,arcxml包含的有些信息对用户是没用的,所以在web服务器与浏览器之间,浪费了许多带宽,对于二次开发人员,难度也加大不少。
    javaconnector:

    使用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 的公司该收复失地的,毕竟我们是有优势的。
  • 相关阅读:
    SQL语法之DDL和DML
    流的装饰模式
    SharePoint 通过客户端API访问SharePoint状态栏
    SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法
    30个特别酷的SharePoint站点
    在Sharepoint站点状态栏显示列表内容数据
    在SharePoint2010中如何使用状态栏?
    SPGridView and Pagination in SharePoint SharePoint中的SPGridView和分页功能
    一步步教你在SharePoint站点创建具有分页、排序、筛选功能的SPGridView Web部件
    使用对象模型读取SharePoint列表
  • 原文地址:https://www.cnblogs.com/googlegis/p/2979090.html
Copyright © 2020-2023  润新知