首先介绍几个概念:
Server Objects
一个服务器对象就是一个粗粒的ArcObject
l MapServer—展示地图文档
l GeocodeServer—展示定位器
能从一个服务器对象获得其它相关的对象:
MapServer –>Map àLayer
Server context
1)可以把Server context 是一个进程 (ArcSOC.exe)
2)作为访问server object 和ArcObjects的入口
3)需要小心地管理Server Context的生命周期
服务器对象的生命周期
普通步骤(COM应用程序)
1. 连接
2. 创建一个 context
3. 访问 server object
4. 释放 context
服务器对象存活在上下文中。
调用CreateServerContext来获得一个包含专门服务器对象的服务器上下文。
只要持有服务器上下文,服务器对象和所有相关的其它对象就是活动的,可以使用。
一旦释放了服务器上下文,就不能再使用服务器对象或从上下文中获得任何其它对象。
在池式的服务器对象/上下文情况下,即使释放了服务器上下文,服务器也将处理其他用户/会话的服务器对象/上下文请求。
在Context之间传递对象
1)一个Context不可以直接使用在另一个Context中创建的对象
2)必须序列化对象
3)对象必须实现IPersistStream接口 (serializable)
4)使用 SaveObject和LoadObject方法
‘在 geocode servers context中保存点对象
Dim sPoint As String = geocodeContext.SaveObject(geocodedPoint)
‘在map’s server context中装载点对象
Dim mapPoint As IPoint = mapContext.LoadObject(sPoint)