ArcGIS Server APIs
SOAP
1)XML-structured 语言。
2)对server objects和server object extensions可用。
3)设计用作stateless 交互。
4)Catalog 请求由IServerCatalogAdmin 接口处理。
5)Service 请求由IRequestHandler 接口处理。
ArcObjects
1)远程与GIS Server上的ArcObjects 交互。
2)使用客户端的Primary Interop Assemblies (PIA) 和object libraries。
3)通过SOM访问获得ArcGIS Server services。
4)设计用作stateless 和stateful 交互。
ArcGIS Server MapResource 类型
A、MapResourceInternet – 连接到Web service endpoint
B、MapResourceLocal – 连接到Server Object Manager
1)访问ServerContext
2)使用ArcObjects
ArcGIS Server Internet: SOAP编程
1)MapResourceInternet
MapServerProxy, 访问value objects
2)通讯是stateless
3)使用pooled objects
Dim mapRes as ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapResourceInternet
mapRes = gisFunc.Resource
Dim mapsProxy as ArcGISServer.MapServerProxy = mapRes.MapServerProxy
Dim mapInfo as ArcGISServer.MapServerInfo =
mapsProxy.GetServerInfo(mapsProxy.GetDefaultMapName())
Dim mapDesc as ArcGISServer.MapDescription = mapInfo.DefaultMapDescription
Dim mLayerInfo as ArcGIServer.MapLayerInfo()
mLayerInfo = mapRes.MapServerInfo.MapLayerInfos
Dim layerDescs as ArcGISServer.LayerDescription()
layerDescs = mapDesc.LayerDescriptions
ArcGIS Server Local: ArcObjects 编程
1)远程访问ArcObjects
2)MapServerLocal
MapServer > IMapServer (COM) >IMapServerObjects (COM)
3)通过.NET部件访问高级的functionality
Dim mapFunc as IMapFunctionality = Map1.GetFunctionality(0)
Dim ags_mr as ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapResourceLocal
ags_mr =
CType(mapFunc.Resource,ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapResourceLocal)
' Access the ArcObjects COM ServerObject directly
Dim mapServer as ESRI.ArcGIS.Carto. IMapServer = CType(ags_mr.MapServer,IMapServer)
Dim mapServerObjs as ESRI.ArcGIS.Carto.IMapServerObjects
mapServerObjs = CType(mapServer,IMapServerObjects)
Dim map as ESRI.ArcGIS.Carto.IMap = mapServerObjs.Map
' Now perform more ArcObjects operations
Dim featClass as IFeatureClass = CType(map.Layers(0)).FeatureClass,
深入ArcGIS Server Local API
1)MapResourceLocal
通过DCOM访问server上的ArcObjects
ServerContext
2)所有的过程在远程完成
ArcObjects 远程编程
1)能在服务器上创建新的对象
2)MapServerLocal
ServerContextInfo
ServerContext
3)不需要release servercontext
Dim ags_mr as ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapResourceLocal
ags_mr =
CType(qfunc.Resource,ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapResourceLocal)
' Create a new ArcObjects COM objects
Dim context as ESRI.ArcGIS.Server.IServerContext = ags_mr.ServerContextInfo.ServerContext
Dim pnt as ESRI.ArcGIS.Geometry.IPoint = context.CreateObject("esriGeometry.Point")
pnt.X = 60
pnt.Y = 100
Dim topo as ESRI.ArcGIS.Geometry.ITopologicalOperator = CType(pnt, Itopological)
常用开发模式
--首先建立连接 Identity identity = new Identity("username", "pwd", "domain"); AGSServerConnection connection = new AGSServerConnection("fmc-pca187", identity); connection.Connect(); --获得服务器对象 IServerObjectManager m_pSOM = connection. ServerObjectManager ; IServerContext m_pServerContext = m_pSOM. CreateServerContext (" testMap" , "MapServer" ) ; IMapServer pMapServer = m_pServerContext . ServerObject as IMapServer ; --使用服务器对象 IMapServerObject s pMapServerObject s = ( IMapServerObject s) pMapServer ; IMap pMap = pMapServerObject s. get_Map (pMapServer .DefaultMapName) ; IFeatureLayer p FLayer = ( IFeatureLayer) pMap. get_Layer(0) ; IFeatureClass p FeatureClass = p FLayer . FeatureClass ; int i = p FeatureClass. FeatureCount (null) ; --释放服务器对象 m_pServerContext . ReleaseContext () ;