首先介绍几个概念:
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)