`
lgx2351
  • 浏览: 175932 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

AGS 对象池和状态概要

阅读更多

http://www.cnblogs.com/flyingis/archive/2007/12/24/1012897.html

AGS是ArcGIS Server的简称,AGS开发首先要理解对象池和状态(object pooling and gis server state),ags帮助文档对此有很详细的描述,想在短时间内看完密密麻麻的英文字符、碎块代码和图片,有时会感觉有点头皮发麻,如果你对ags或ae开发有初步了解了,就花一点点时间看完下面的精简概要,适合当作随手的课堂笔记(注:概要笔记,不适合死抓概念讨论正确与否)。

    文章标题有两个名词:对象池、状态,就从他们入手。

    对象池,和数据库连接池概念类似,无非就是用一个大的容器,将一些已建立好的对象放入其中,随时听从调度,当请求的对象小于等于容器中最大对象数的时候,ags服务无需请求新的server对象,如果请求数大于容器中的对象了,sorry,只能耐心等待。获得请求速度的提升,必然要损失连接数的限制,有得必有失。

    状态,辞海中对于它的解释太多,在这里,认为server在有状态(stateful)情况下是可以改变的,无状态(stateless)情况下是不能改变的,因为它没有状态可以改:)我们所说的改变,指的是mxd服务里图层是否可见、渲染方式更改、数据的编辑。

    现在将两者结合起来,ags文档给出了如下建议:

    This aspect of stateful versus stateless use and server object sharing relates directly to the pooling model for the server object. The following programming rules apply to using server objects:
    (1)Client applications cannot change the properties of a pooled server object.
    (2)Client applications can change the properties of a non-pooled server object.

    稍加思考就会理解这种建议,在池化方式下,如果server对象是有状态的,那么当一个用户对其进行修改释放回对象池中后,后面调用该对象的请求将看到已经更改的server对象,如果每个用户都对调用的server对象进行了更改操作,对象池里面的对象就将显得杂乱不堪,每个用户访问到的都是不同的结果,在绝大多数情况下,这种现象都是不允许的,因此只有在非池化连接里,server对象拥有状态才更具有实际意义,因为不论对该server对象进行了什么操作,释放对象后该对象都将被销毁,下次调用时重新创建。

    现在联想到ags两种开发方式:SOAP API和AO API,前者只能进行无状态开发,后者无状态和有状态均可。可以看出这种设定是符合实际应用的,SOAP更多的应用于城域网/广域网的访问,通过http提供各种web服务,受网络带宽和安全性的限制,因此在池化方式下可以节省创建server对象的时间,无状态可以保证互联网上所有用户每次访问的数据是相同的,并且不能随意改动。AO API更适用于在企业内部使用,如Intranet,在无状态情况下,它的连接方式是SOAP OVER DCOM,更多的它通过arcgis server local连接方式应用于非池化的环境中,另外在非池化连接方式下,没有cache的地图浏览速度很慢,在城域网/广域网的范围内几乎不用考虑。

    什么情况下做什么样的选择已经有一个粗的框架了,最后看看ESRI对伸缩性、扩展性很强的server应用给出的建议:
    The question of stateful versus stateless use of the GIS server is central to the scalability of your application. An application is more scalable than another application if it can support a larger number of users with the same amount of computer resources. The keys to scalability are:
    (1)Make stateless use of the GIS server.
    (2)Use pooled server objects.
    (3)Minimize the time your application holds on to a server object. Release server objects as soon as possible and do not rely on .NET garbage collection to do it for you.

    补充一句:想在企业内部通过web实现arcgis桌面编辑、分析、管理功能,选择server ao api开发,非池化,有状态。

分享到:
评论

相关推荐

    网络克隆软件AGS

    【网络克隆软件AGS】是一款专为IT管理员设计的高效系统部署工具,它通过网络进行大规模计算机系统的快速克隆和部署,极大地节省了时间和人力成本。在IT领域,尤其是在企业环境中,批量安装操作系统和软件是一项繁琐...

    AGS01DB例程_IIC.rar

    AGS01DB是一款专用于空气质量监测的传感器,主要针对TVOC(总挥发性有机化合物)和CO2(二氧化碳)的浓度进行检测。在STM32F103系列微控制器上实现对AGS01DB的驱动,通常涉及到以下几个核心知识点: 1. **STM32F103...

    adm_ags_x64.dll

    直接拷贝该文件到系统目录里: 1、Windows 95/98/Me系统,将adm_ags_x64.dll复制到C:\Windows\System目录下。 2、Windows NT/2000系统,将adm_ags_x64.dll复制到C:\WINNT\System32目录下。 3、Windows XP/WIN7/win10...

    Autodesk Genuine Service卸载工具-AGS Uninstall patch

    autodesk genuine service卸载工具,这是一款实用的ags强制卸载工具,主要针对Autodesk公司旗下产品autodesk genuine service无法清除问题而开发的,使用它用户可以轻松的强制卸载,支持Autodesk 2021所有版本

    Ags01db.zip_ags01db_westernsg1

    在Linux环境下安装和使用Ags01db驱动程序是连接和操作Ags01db设备的关键步骤。首先,用户需要将"Ags01db.zip"这个压缩包解压,通常可以通过命令行工具如"unzip"来完成。解压后,文件名"ags01db"可能包含驱动的源代码...

    ags107.rar

    CDSN共享资源,免积分下载。

    从JSF到AGS Java ADF

    ### 从JSF到AGS Java ADF:深入解析与过渡 #### 一、JSF:挑战与机遇 ...对于希望在Java平台上构建高性能Web应用的开发者而言,深入理解和熟练运用JSF与AGS ADF,无疑是提升开发效率和应用质量的关键所在。

    ags:AGS编辑器和引擎源代码-Source code editor

    Adventure Game Studio(AGS)-是IDE和引擎,用于创建和运行冒险(又名“ quest”)类型的视频游戏。 尽管有其局限性,但它也有可能支持其他类型。 AGS最初由克里斯·琼斯(Chris Jones)于1999年创建,于2011年...

    基于REST的AGS应用

    这个文档是个PPT,描述REST在ARCGIS SERVER里的应用,并与SOAP服务比较,实例显示结果。

    基于Ags Script和Python的ISAT排放清单处理工具源码设计

    本项目是一款集成Ags Script和Python语言的ISAT排放清单处理工具源码设计,包含95个文件,涵盖14个pyc字节码文件、12个Python源代码文件、11个CSV数据文件、7个ADF ArcGIS数据文件、5个DBF数据库文件、5个PRJ项目...

    ags-archives-rest-api:AGS存档系统的REST API

    AGS存档系统是一个用于管理和访问大量数据的平台,而ags-archives-rest-api则是这个系统的一个重要组成部分,它提供了一套基于REST(Representational State Transfer)架构风格的API接口。REST API是现代Web服务的...

    2021-2022年收藏的精品资料主动进气格栅AGS对汽车风阻特性的影响分析.docx

    ### 主动进气格栅AGS对汽车风阻特性的影响分析 #### 一、引言 随着汽车技术的发展,提高汽车的燃油经济性和减少排放成为了汽车行业的重要目标之一。汽车的空气动力学特性对于实现这些目标至关重要。车辆在行驶过程...

    AGS iOS 开发包10.1.1

    Esri官方文档、开发者论坛和社区提供了大量的教程、示例代码和问答,可以帮助开发者更好地理解和使用AGS iOS开发包。 总之,AGS iOS 开发包10.1.1是开发地理空间应用的强大工具,它为iOS开发者提供了构建地图应用...

    AGS RuntimeSDK iOS v2.3.2

    AGS RuntimeSDK iOS v2.3.2

    PyPI 官网下载 | python-AGS4-0.3.5.tar.gz

    **PyPI 官网下载 | python-AGS4-0.3.5.tar.gz** PyPI(Python Package Index)是Python编程...同时,结合Esri的文档和社区资源,开发者可以学习如何充分利用AGS4提供的各种工具和函数,提高GIS应用的开发效率和质量。

    Arbor多隔间神经网络仿真库。_C++_AGS Script_下载.zip

    开发者可以直接利用C++的面向对象特性和模板机制来构造复杂的神经网络模型。同时,C++的标准库和广泛社区支持也为Arbor带来了丰富的工具和资源。 AGS Script是Arbor提供的一种脚本语言,用于在运行时控制和调度模拟...

    C#实现ArcGis_Server批量编辑图层几何对象

    ArcGIS Server支持使用`AGS.Editor`对象进行事务管理,可以包裹一系列编辑操作在一个事务中,提高数据操作的效率和安全性。 9. **性能优化**:为了提高批量编辑的效率,可以考虑分批处理,避免一次性提交大量操作...

    从AGS到LHC能量的核碰撞中方位各向异性的第一刻

    我们回顾与方位各向异性(v1)的第一个瞬间(通常称为定向流)有关的主题,... 本综述主题涉及或可能涉及的物理学包括对Quark Gluon等离子体的研究,更一般而言,包括对量子色动力学相图和描述可及相的状态方程的研究。

Global site tag (gtag.js) - Google Analytics