"ArcGIS Engine 如何操纵Server"
在 ArcGIS 的世界中,ArcGIS Engine 是一个强大的开发工具,允许开发者构建与地理空间数据相关的桌面、移动和 Web 应用程序。本文档主要讨论如何在 ArcGIS Engine 10.1 版本中操纵 ArcGIS Server,特别关注在新版本中由于 DCOM 支持的移除而引发的问题以及解决方案。
在10.1之前,一些开发者利用 ArcGISEngine 来管理和操控 ArcGIS Server,包括发布和停止服务等任务,这些操作是通过 DCOM(分布式组件对象模型)方式进行的。然而,从10.1版本开始,ArcGIS Server 不再支持 DCOM 连接。这意味着使用旧版代码中涉及 GISServerConnection 或 AGSServerConnection 接口的开发者需要进行相应的代码更新。
面对这个问题,Esri 提供了新的 ADMIN API,使得开发者可以通过 HTTP 请求来构造管理 ArcGIS Server 所需的参数。这标志着管理方式从 DCOM 转向了基于 HTTP 的 RESTful API。通过学习桌面客户端(ArcGIS Desktop)如何连接到 Server,我们可以理解如何在代码中实现这一转变。在 ArcGIS Desktop 中,连接 Server 需要指定角色和服务类型,如 SDS(Service Definition Files)和 ArcGISServer。
以下是一个示例代码片段,展示了如何在 ArcGIS Engine 10.1 中使用 IPropertySet 连接 ArcGIS Server:
```csharp
public IServerObjectAdmin ConnectAGS(string host, string username, string password)
{
try
{
IPropertySet propSet = new PropertySetClass();
propSet.SetProperty("Server", host);
propSet.SetProperty("User", username);
propSet.SetProperty("Password", password);
propSet.SetProperty("Version", "10.1");
propSet.SetProperty("ConnectAsAdmin", true);
// 创建服务器连接
IAGSServerConnection agsConnection = new AGSServerConnectionClass();
agsConnection.Initialize(propSet);
return agsConnection.ServerObject as IServerObjectAdmin;
}
catch (Exception ex)
{
// 错误处理
}
}
```
此代码示例演示了如何通过设置属性集合(IPropertySet)来建立连接,包括主机名、用户名、密码、版本号以及表明要以管理员身份连接的标志。然后,使用 AGSServerConnection 类初始化并返回 IServerObjectAdmin 接口,以便进行管理操作。
除了上述的 IAGSServerConnection 接口,ArcGIS Engine 10.1 还提供了其他接口和类,如 IAOIConnection 和 IAOIAdminConnection,用于操作和管理 ArcGIS Server。通过这些接口,开发者可以执行发布服务、启动或停止服务、监控服务器状态等一系列管理任务。
总结起来,从 ArcGIS Engine 10.1 开始,管理 ArcGIS Server 的方式发生了变化,开发者需要从依赖 DCOM 的方式转向使用基于 HTTP 的 ADMIN API。这不仅要求代码的更新,同时也意味着需要对新的 API 和接口有深入的理解,以确保应用能顺利地与 ArcGIS Server 10.1 及更高版本进行交互。