AGS 对象池和状态概要

简介:

 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开发,非池化,有状态。


本文转自Flyingis博客园博客,原文链接:http://www.cnblogs.com/flyingis/archive/2007/12/24/1012897.html,如需转载请自行联系原作者

相关文章
|
10月前
|
数据采集 运维 DataWorks
DataWorks on EMR StarRocks,打造标准湖仓新范式
本文整理自阿里云计算平台产品专家周硕(簌篱)在阿里云DataWorks on EMR StarRocks解决方案介绍中的分享。介绍了阿里云DataWorks与EMR Serverless StarRocks的结合使用,详细阐述了在数据同步、数据消费、数据治理三大场景中的核心能力。DataWorks作为大数据开发治理平台,提供了从数据建模、数据集成、数据开发到数据治理的全链路解决方案,结合StarRocks的高性能分析能力,帮助企业实现OLAP分析、湖仓一体开发及数据综合治理,满足复杂业务场景下的需求,提升数据处理和分析效率。
|
8月前
|
人工智能 测试技术 Python
VideoChat-Flash:上海AI Lab开源高效处理超长视频的多模态大模型
VideoChat-Flash 是上海人工智能实验室等机构推出的多模态大模型,通过分层压缩技术高效处理长视频,支持长达数小时的视频输入,推理速度提升5-10倍。
286 1
VideoChat-Flash:上海AI Lab开源高效处理超长视频的多模态大模型
|
11月前
|
存储 人工智能 自然语言处理
高级 RAG 技术:提升生成式 AI 系统输出质量与性能鲁棒性【预检索、检索、检索后、生成优化等】
高级 RAG 技术:提升生成式 AI 系统输出质量与性能鲁棒性【预检索、检索、检索后、生成优化等】
高级 RAG 技术:提升生成式 AI 系统输出质量与性能鲁棒性【预检索、检索、检索后、生成优化等】
|
11月前
|
存储 编解码 算法
微帧科技:综合多项指标评价视频质量,才能更接近主观感受
视频质量评价指标如PSNR、SSIM和VMAF是衡量画面质量的重要工具,但不应成为视频工作者的唯一目标。微帧致力于优化画质,提升观看体验,强调综合评估指标,以实现最接近人眼主观感受的效果。本文探讨了PSNR avg.MSE与PSNR avg.log的区别,以及VMAF的优势与不足。
|
11月前
|
人工智能
智谱 AI 大模型
智谱是清华大学技术成果转化公司,推出中英双语千亿级大模型 GLM-130B、对话模型 ChatGLM、开源模型 ChatGLM-6B、AI 提效助手智谱清言、高效率代码模型 CodeGeeX、多模态理解模型 CogVLM、文生图模型 CogView 和文生视频模型 CogVideo。是国内开源大模型的领先者,大模型领域的经典成功商业案例。
|
11月前
|
存储 缓存 监控
哪些场景适合使用 Navigator.sendBeacon?
【10月更文挑战第6天】
194 2
|
11月前
|
测试技术 数据库 Android开发
深入解析Android架构组件——Jetpack的使用与实践
本文旨在探讨谷歌推出的Android架构组件——Jetpack,在现代Android开发中的应用。Jetpack作为一系列库和工具的集合,旨在帮助开发者更轻松地编写出健壮、可维护且性能优异的应用。通过详细解析各个组件如Lifecycle、ViewModel、LiveData等,我们将了解其原理和使用场景,并结合实例展示如何在实际项目中应用这些组件,提升开发效率和应用质量。
320 6
|
人工智能 自动驾驶 算法
探索未来:人工智能如何改变我们的生活
在这篇文章中,我们将深入探讨人工智能(AI)如何正在改变我们的生活。从自动驾驶汽车到智能家居,从虚拟助手到医疗诊断,AI的应用已经深入到我们生活的方方面面。我们将通过具体的例子和数据,展示AI的潜力和挑战,以及它如何影响我们的工作、学习和娱乐。最后,我们将提出一个开放性问题,引发读者对未来AI发展的思考。
393 32
|
人工智能 编解码 物联网
AI视频风格转换:Stable Diffusion+EBSynth
本文我们将使用一个新的工具 EBSynth 来补全重绘后的关键帧图片之间的序列帧,其它步骤还是继续使用原来的方法,不过相关参数上要做些调整,请看我慢慢道来。
1406 1
AI视频风格转换:Stable Diffusion+EBSynth
|
存储 缓存 分布式计算
You Only Cache Once:YOCO 基于Decoder-Decoder 的一个新的大语言模型架构
YOCO是一种新的解码器-解码器架构,旨在解决大型语言模型推理时的内存限制问题。通过只缓存一次键值对,YOCO显著减少了GPU内存占用,与Transformer相比,内存使用降低了约L倍。模型由自解码器和交叉解码器组成,自解码器使用滑动窗口注意力,而交叉解码器利用全局KV缓存。实验表明,YOCO在保持竞争力的性能同时,提高了推理速度,尤其是在处理长序列时。此外,YOCO还减少了预填充时间,提升了吞吐量。
532 3