Dcom代理 Server


本地连接可以使用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


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号