用Data source-specific APIs 编程

ArcGIS Server APIs
SOAP
1)XML-structured 语言。
2)
server objectsserver 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 类型

AMapResourceInternet – 连接到Web service endpoint

BMapResourceLocal – 连接到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)所有的过程在远程完成

 

 

用Data source-specific APIs 编程

 

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 () ;

  

 

 

你可能感兴趣的:(设计模式,编程,Web,Access,SOAP)