一、程序集(ESRI.ArcGIS.Server)
1、IGISServerConnection
当应用程序需要使用ArcGIS Server上发布的服务,或者需要在Server上创建新的对象,或者希望获取对Server的管理权限时,可以使用该接口连接到ArcGIS Server
使用IGISServerConnection连接ArcGIS Server时,运行应用程序账户必须在Server的agsusers或者agsadmin组里面
2、两个接口
IServerObjectManager: 获取Server支持服务类型,服务列表,服务目录,获取已发布的某一个服务的相关信息,修改已发布的某一个服务的内容(比如往Map增加一个图层)
IServerObjectAdmin: 权限更高,包括发布服务、删除服务、启动或停止服务、更改服务配置属性信息等
3、使用权限
IServerObjectManager: 运行应用程序的账户必须在ArcGIS Server的agsusers组里面;
IServerObjectAdmin: 运行应用程序的账户必须在ArcGIS Server的agsadmin组里面;
4、两个接口的使用举例
// 获取发布的服务列表(XSemap:MapServer)
IGISServerConnection2 gisServerConnection = new GISServerConnection() as IGISServerConnection2;
gisServerConnection.Connect("machineName"); // 服务器机器名
IServerObjectManager serverObjectManager = gisServerConnection.ServerObjectManager;
IEnumServerObjectConfigurationInfo enumConfigInfo = serverObjectManager.GetConfigurationInfos();
IServerObjectConfigurationInfo configInfo = enumConfigInfo.Next();
while (configInfo != null) // 列举所有发布的服务及类型(MapServer等)
{
MessageBox.Show(configInfo.Name + ": " + configInfo.TypeName);
configInfo = enumConfigInfo.Next();
}
// 获取服务器目录列表(如arcgiscache/arcgisjobs/arcgisoutput)
IEnumServerDirectoryInfo pEnumSDirInfo = serverObjectManager.GetServerDirectoryInfos();
IServerDirectoryInfo pSDirInfo = pEnumSDirInfo.Next();
while (pSDirInfo != null)
{
MessageBox.Show(pSDirInfo.Path);
pSDirInfo = pEnumSDirInfo.Next();
}
// 获取可发布的地图服务类型(如MapServer,ImageServer,GPServer,GeoCodeServer等)
IEnumServerObjectTypeInfo pEnumTypeInfo = serverObjectManager.GetTypeInfos();
IServerObjectTypeInfo pTypeInfo = pEnumTypeInfo.Next();
while (pTypeInfo != null)
{
MessageBox.Show(pTypeInfo.Name);
pTypeInfo = pEnumTypeInfo.Next();
}
// ServerContext是服务器上的一个进程,你可以创建新的进程,也可以使用现有的进程
// IServerContext提供操作某一个进程内对象的方法,包括在进程内创建新的对象,删除对象、更新对象等等
// (1)创建一个空的ServerContext,并在其中添加一个Polygon
IGISServerConnection gisServerConnection = new GISServerConnection();
gisServerConnection.Connect("3EDRYUFUUEMCCKS");
IServerObjectManager4 serverObjectManager = (IServerObjectManager4)gisServerConnection.ServerObjectManager;
IServerContext serverContext = serverObjectManager.CreateServerContext("","");
// IServerContext serverContext = serverObjectManager.CreateServerContext("XSemap", "MapServer"); 获取已发布某一个地图服务进程
IPointCollection4 gonColl = (IPointCollection4)(serverContext.CreateObject("esriGeometry.Polygon"));
二、探究了下,程序集(ESRI.ArcGIS.GISClient)基本可以实现与上一个程序集相同的功能,分别通过IAGSServerConnection 接口和IAGSServerConnectionAdmin接口
三、注意:两个程序集对Server的深度控制都只限于局域网中使用