ArcGIS Server开发技术交流记录

1.   ArcGIS Engine ArcGIS Server 的交叉点,是否可以利用 ArcGIS Engine 直接开发成 COM 组件,然后由 ArcGIS Server 调用,或者先通过 Web Services 的方式调用,再通过 ArcGIS Server 调用 Web Services
可以利用 Engine 开发 COM 组件的方式,然后由 ArcGIS Server 直接调用,或者通过类的方式来集成 (但是 Engine 提供的组件的实现和逻辑应该分开,即 Engine 开发组件不能带有界面,而只能通过 Engine 来实现封装特定功能的组件,因为 IE 和开发 COM 组件的界面无法融合) ,同时, Engine 提供的组件必须提供符合 Server 要求的统一接口。
如果部署在一台服务器上,也可以通过 Web Services 的方式进行集成。
 
2.   开发 Web 应用程序,是否可以只采用 ArcGIS Server ,而不需要 ArcGIS Engine 。如果使用 Engine 的话,优势主要体现在哪些方面?
开发 Web 应用程序,可以只采用 ArcGIS Server ,可以不需要 ArcGIS Engine 。因为 Server Engine 底层的 API 是相同的。而采用何种架构模式取决于用户需求和具体的应用。两者实现的方式有一定的差别。
 
3.   ArcGIS Server ArcIMS 的关系。 ArcGIS Server 是否可以取代 ArcIMS ,如果不能的话,它们的侧重点各是什么? ArcGIS Server 是否可以用于地图数据发布?
ArcGIS Server 可以代替 ArcIMS ,但是必须有高效的服务器,同时实现很好的负载平衡。 ArcIMS 适合高性能的地图数据发布,它提供的功能比较简单(只具备 Viewer 的操作),但是速度明显优于 ArcGIS Server 。而 ArcGIS Server 可以实现所有 Engine 可以实现的功能,包括一些高级的 GIS 功能,比如空间分析等
 
4.   ArcGIS Server 部署方案
采用 ArcGIS Server 开发,部署时推荐使用 Windows 2003 Server ,有利于负载平衡。也可以采用 2000 Pro/XP ,但是最好采用 Server 平台
 
5.   Server Objects
 
A server object is a coarse-grained ArcObjects component that runs in a process on the SOC machine. ArcGIS Server comes with two out-of-the-box server objects:
. esriCarto.MapServer
. esriLocation.GeocodeServer
 
 
6.   池式和状态
Pooled server objects are expected to be used in a stateless manner . As a developer, you are responsible for making sure that the state of the server object, or its associated objects, has not changed when you return the object to the pool (by releasing its context via ReleaseServerContext).Each time a user or application session makes a request to create a pooled server object, it’s indeterminate which running instance it will get out of the pool; therefore, all instances must have the same state or applications will experience inconsistent behavior.
Non-pooled server objects can be used in a stateful manner . Since nonpooled server objects and their contexts are destroyed when you release them, you need to hold onto them for as long as the state is important to you. When you call ReleaseServerContext, or you allow the server context to go out of scope, the server object and its context are destroyed, purging any state changes you made.
 
7.   状态管理
有状态(状态发生改变的时候)——非池式的服务器对象(或者池式的服务器对象,但在释放返回服务器上下文的时候能恢复的原来起始的状态,这种情况比较少)
 
无状态(状态不改变)——池式的服务器对象(也可以使用非池式的服务器对象,但不能发生状态的改变,这种情况比较少)
 
8.   状态改变
调用服务器对象状态的方法:从地图的服务器对象中增加 / 删除图层
                           改变服务器对象中图层的 Renderer
调用环境状态的方法:
                   可以作用于池式 / 非池式的服务器对象,但是在池式的服务器对象中,应用程序在执行操作前不应该依赖处于特殊状态的环境;如果应用程序依赖于环境的状态时,在执行操作前要求设置所需要的环境状态
 
9.   SCALABILITY 的关键在于 GIS Server 的状态性,保持应用程序 Scalability 的标准
使用无状态的 GIS Server
池式的服务器对象
减少应用程序控制服务器对象的时间。及时地释放服务器对象,不能仅仅依赖于 .NET 自带的垃圾回收系统
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值