解释Server object

来源:互联网 发布:免费sd卡误删数据恢复 编辑:程序博客网 时间:2024/06/08 01:39

Server Objects

server对象是一个在SOC的一个进程中的一个“粗粒度”的组件。主要有这么几个:

1esriCarto.MapServer

2esriLocation.GeocodeServer

3esriGeodatabase.GeodataServer

4esriGlobeCore.GlobeServer

MapServer对象提供了访问一个map文件和在地图上进行查询和绘图的方法。GeocodeServer对象提供了访问一个address locator和进行与geocode有关操作的方法。GeodataServer提供了访问一个geodatabase和进行有关Geodatabase操作的方法。GlobeServer对象提供了访问Globe文档和展示Globe的方法。以上这些“粗粒度”的对象都使用Server端“细粒度”的ArcObjects进行操作。应用程序可以使用server object里的高级别的“粗粒度”的方法。也可以使用“细粒度”的ArcObjects对象。

不像ArcObjects组件那样,一个server object可以被GIS Server管理员预先配置。在客户端程序连接GIS Server之前,GIS Server管理可以通过Arccatologserver object的属性进行设置。当server object被预先配置时,管理员必须指定一些配置属性,比如是否是池化。Pooling的状态决定了一个应用程序使用server object的类型。

Getting Server objects from the Server

通过向server请求得到一个server context,然后从server context中得到server object。可以把server context看成是一个进程,被server管理着,而一个server object就在里面运行。你的应用程序通过操纵server objectcontext来维持server object的生命。所以当我们用完server object以后要通过释放server context来释放server object

就和前面所说的一样,开发人员可以通过server object来得到与它相关的对象,比如,通过MapServer可以得到MapLayer对象。这些对象和ArcGIS Desktop还有ArcGIS Engine开发中的对象一样,只不过它是驻留在server端的。

一定要注意,只有当server context释放以后,其他的应用程序才能使用这个server object。如果你的代码里面没有包含这个释放语句的话,server context的释放就得等到回收器工作以后才能得到释放。

Getting a Server Object Extension

当你使用一个server object时,你可以得到它所支持的扩展的方法。IServerObjectExtensionManager接口有很多方法就是用来得到这些扩展方法的。这些扩展方法都是随着ArcGIS Server的安装而装上去的随拿随用的,也可以是开发人员自定义的。

Managing Server Object Lifetime

管理server object的生存周期也是使用server object的很重要的一个方面。就像先前所说的那样。Server object的生存是在server context里面的,可以通过CreateServerContext()函数得到server context,进而得到server object

你对server object操控时间的长短也就意味着server object和它所联系着的对象的生存期的长短。当你使用ReleaseContext()函数来释放server context以后,你就再也不能使用server object以及从server context对象得到的其他对象了。当一个server objectcontext释放以后,poolednon-pooled状态将决定在context身上所发生的事情。下面这幅图说明的是pooled情况:

pooled

non-pooled

1、客户端程序连接SOM并且请求一个server object

2SOM给客户端返回一个在池中可以使用的一个server object的代理对象

3、客户端通过调用这个代理对象来和server object工作

4、当客户端完成与server object的工作以后就释放它。释放以后它又返回到池中被另一些客户端使用。

下面这是non-pooled情况:

 

 

1、客户端程序连接SOM并且请求一个server object

2SOM创建一个新的server object的实例并且把这个server object的代理对象返回给客户端。

3、客户端通过调用这个代理对象来和server object工作

4、当客户端完成与server object的工作以后就释放它。Server object被释放以后,它的生命也就结束了。SOM将会重新创建一个新的server object来给随后的请求使用。

 

关于如何管理一个应用程序的状态,另外有篇文章会说到

参考资料:几乎全是从ESRI Develop Help中的Programming with server objects这节翻译过来的。

 

 

 

原创粉丝点击