### ArcGIS Server 开发知识点详解 #### 一、ArcGIS Server 概述 ArcGIS Server 是一款由 Esri 公司开发的企业级地理信息系统(GIS)平台,它为用户提供了一个可扩展、高可用的环境来发布和管理地理数据与地理处理服务。ArcGIS Server 支持分布式的部署模式,使得 GIS Server 和 Web 应用可以部署在不同的机器上,从而提高了系统的灵活性和性能。 #### 二、ArcGIS Server 中 ArcObjects 的使用 在 ArcGIS Server 中,Web 应用通过远程调用 ArcObjects (AO) 组件来执行 GIS 相关的任务。这些 AO 对象运行在服务器端的 ArcSoc.exe 进程中,并且被统一管理在服务器上下文(Server Context)中。服务器上下文不仅负责 AO 对象的创建(通过 `IServerContext::CreateObject`),还负责它们之间的交互以及释放工作,确保资源的有效管理和利用。 #### 三、Web 应用与 ArcObjects 的交互 1. **Web 应用与 AO 对象的通信**: - Web 应用通过创建代理类的方式使用 AO 对象。例如,可以通过以下代码片段创建一个选择(Selection)对象: ```csharp IServerContext serverContext = webMap.ServerContext; AA.Selection o = serverContext.CreateObject("CLSID") as AA.Selection; IAAQueryResult result = o.Function(refFC, refPt1, refPt2); ``` - 在这里,`webMap.ServerContext` 获取到了当前的服务器上下文,然后通过 `CreateObject` 方法创建了一个选择对象,并调用其方法完成特定任务。 2. **对象释放的重要性**: - 在使用池式开发时,如果程序编写不当,可能会导致占用的 Server Object 无法被正确释放。例如,在创建了 `webMap` 对象后如果没有适当地释放,那么 Server Object 将不会被释放,即使关闭网页也无法释放。 - 为了避免这种情况,Esri 提供了 `using` 语句来帮助管理对象的生命周期。例如: ```csharp using (WebMap webMap = Map1.CreateObject()) { IServerContext serverContext = webMap.ServerContext; if (webMap.IsPool) webMap.ManageLife(serverContext); IFeature feature = null; ILayer layer = null; webMap.ManageLife(feature); webMap.ManageLife(layer); } ``` - 上述代码中,`webMap` 负责管理 `serverContext`、`feature` 和 `layer` 的生命周期,确保它们在使用完毕后被正确地释放。 #### 四、ServerContext 在 ArcServer 编程中的作用 1. **ServerContext 的概念**: - ServerContext 是一组对象运行的容器,所有的 ArcObjects 都需要在 ServerContext 上创建和运行。 - 使用 `ServerContext` 可以确保所有 ArcObjects 在同一个环境中运行,这样可以方便地进行数据交换和处理。 2. **ServerContext 创建方法**: - 通过以下示例代码可以创建一个连接到本地地图服务的上下文对象: ```csharp ESRI.ArcGIS.ADF.Web.UI.WebControls.Map mapCtrl; mapCtrl = (ESRI.ArcGIS.ADF.Web.UI.WebControls.Map)args.Control; ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapFunctionality mf; mf = (ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapFunctionality)mapCtrl.MapFunctionality; IServerContext serverContext = mf.GetServerContext(); ``` #### 五、总结 ArcGIS Server 提供了一套完整的框架用于构建高度可定制的地理信息系统。开发者需要理解如何正确地使用 ArcObjects 和 ServerContext,特别是要注意对象的生命周期管理,以避免内存泄漏和其他潜在问题。此外,掌握正确的编程实践对于构建稳定、高效的 Web GIS 应用至关重要。
- dk12013-05-06总结的不错,适合初学者啊
- 粉丝: 1
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助