1.ServerObject的池化和非池化模式
当我们访问一个服务器对象Server Object的时候,这个对象是已经存在的呢?
还是在访问时新建的?都有可能,这取决于我们如何选择。如果我们选择共享池
化模式,则在SOM启动的时候,SOM就建立了几个SO供外界访问,一个SO被A请求访
问后,被释放回共享池中,还可以下次被B访问使用,因此,SO将可以被多个用户
访问。如果是非共享池模式,当一个请求访问时,SOM专门为它新建一个SO。
这样,在池化模式下,访问与SO的比例不是1:1,它支持更多的用户;而非池化
模式就是1:1的,它支持的用户比池化模式少。
SO 放在什么地方,对,它就放在一个Server Context中,即一个进程中。一个访
问连接到SO,是一个例程,这个例程是放置在一个进程中的。而对于这个进程的
特征,我们还需要进一步设置,即进程的孤立性。如果Server Context是高孤立
的(high isolation),那么一个进程中只能放置一个例程,这样保障了安全性;
如果是低孤立的,四个访问连接的例程都可以放置在一个进程中,它的特点是节
约资源。至于如何设置,就有必要考虑我们的硬件设备了。
2.ArcGIS Server池化和非池化类型服务区别
如果是非池化的服务,服务中的数据可以是注册了版本或者没有注册版本的,如
果是注册了版本的数据,所有的编辑操作是可以进行redo、undo操作,并且有冲
突解决的方案。如果是没有注册版本的数据,就不可以进行redo、undo的操作,
但是可以对编辑内容选择一次的保存和不保存。
如果是池化的服务,那么服务中的数据就只能是非版本的。这种情况下的
编辑功能是最简单的,编辑的内容一旦完成就进行了保存,没有办法redo、undo
。比如对一个多边形进行了节点移动的操作,一旦操作完成就不可以进行恢复。
3.形象比喻
池化-鱼
“一个水缸里有好多鱼,你想喂鱼。
池化是你任意抓住一条喂,喂了就放回去。
非池化是指定一条鱼让你喂,直到你不想再喂鱼,就把鱼杀了。
以上是我的理解,不知对否,请高手不吝赐教 !”
这个比喻有点意思,但是非池化还不仅是指定一条鱼的问题,事实是这条鱼原本
并不存在,要现生成。所以从非池化获得鱼的速度比池化中从已有的鱼中任意抓
一条要慢