本地连接可以使用Dcom代理,而本质上DCOM代理是利用AO对象和ArcGIS Server 服务器对象打交道。所以本地连接,客户端就要有AO对象,当然也可以直接利用AO API(可以认为是远端服务器对象的AO代理),而不使用Dcom代理,(但是使用Dcom代理,因为代理和值对象是在客户端,所以要比AO快(AO proxies的所有操作都是在远程调用的基础上完成的,但是利用AO我们可以访问到远端的细粒度的AO对象)),而代理属于Soap的范畴,而获取Dcom代理,目前我发现两种方法,如下:
ESRI.ArcGIS.ADF.Identity id = new ESRI.ArcGIS.ADF.Identity(username, password, domain);
ESRI.ArcGIS.ADF.ArcGISServer.MapServerDcomProxy mapserver_dcom =
(MapServerDcomProxy) MapServerDcomProxy.Create(SOMname, servicename, id);
// do something with the DCOM proxy
mapserver_dcom.Dispose();
ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnectionconnection=null; ESRI.ArcGIS.Server.IServerContextserverContext=null;
try { connection=newESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection();
connection.Host="localhost"; connection.Connect();
ESRI.ArcGIS.Server.IServerObjectManagerserverObjectManager=connection.ServerObjectManager;
serverContext=serverObjectManager.CreateServerContext("MyMapService","MapServer");
ESRI.ArcGIS.ADF.ArcGISServer.MapServerDcomProxymapservice=new ESRI.ArcGIS.ADF.ArcGISServer.MapServerDcomProxy(serverContext,true);
ESRI.ArcGIS.ADF.ArcGISServer.MapServerInfomapinfo=mapservice.GetServerInfo(mapservice.GetDefaultMapName()); ESRI.ArcGIS.ADF.ArcGISServer.MapDescriptionmapdesc=mapinfo.DefaultMapDescription;
ESRI.ArcGIS.ADF.ArcGISServer.ImageTypeimgtype=newESRI.ArcGIS.ADF.ArcGISServer.ImageType(); imgtype.ImageFormat=ESRI.ArcGIS.ADF.ArcGISServer.esriImageFormat.esriImagePNG; imgtype.ImageReturnType=ESRI.ArcGIS.ADF.ArcGISServer.esriImageReturnType.esriImageReturnURL;
ESRI.ArcGIS.ADF.ArcGISServer.ImageDisplayimgdisp= newESRI.ArcGIS.ADF.ArcGISServer.ImageDisplay(); imgdisp.ImageHeight=500; imgdisp.ImageWidth=500; imgdisp.ImageDPI=96;
ESRI.ArcGIS.ADF.ArcGISServer.ImageDescriptionimgdesc= newESRI.ArcGIS.ADF.ArcGISServer.ImageDescription(); imgdesc.ImageDisplay=imgdisp; imgdesc.ImageType=imgtype;
ESRI.ArcGIS.ADF.ArcGISServer.MapImagemapimg=mapservice.ExportMapImage(mapdesc,imgdesc);
System.Net.HttpWebRequestwebreq=System.Net.WebRequest.Create(mapimg.ImageURL)asHttpWebRequest; System.Net.HttpWebResponsewebresp=webreq.GetResponse()asHttpWebResponse; System.Drawing.Imageimg=System.Drawing.Image.FromStream(webresp.GetResponseStream()); } catch(Exceptionex){} finally { serverContext.ReleaseContext(); connection.Dispose(); }
|
优质内容筛选与推荐>>
1、Java集合类学习笔记(List集合)2、IntelliJ IDEA 破解3、TCP/IP,HTTP,Socket初识4、java程序员的NodeJS初识篇5、Dapper.NET——轻量ORM