-----------------------------------

Acquista i software ArcGIS tramite Studio A&T srl, rivenditore autorizzato dei prodotti Esri.

I migliori software GIS, il miglior supporto tecnico!

I migliori software GIS, il miglior supporto tecnico!
Azienda operante nel settore GIS dal 2001, specializzata nell’utilizzo della tecnologia ArcGIS e aderente ai programmi Esri Italia Business Network ed Esri Partner Network

-----------------------------------



giovedì 21 maggio 2009

Pooled Workspace Connection

Uno dei maggiori problemi, quando si fanno elaborazioni con un geodatabase tramite webservice, è la richiesta di connessione al workspace.
Ad ogni accesso tramite il webservice abbiamo un costo fisso dovuto alla creazione della connessione al workspace. Questo problema inoltre porta ad avere, in termini di scalabilità, un impatto negativo.
Un modo per ovviare a ciò è crearsi una pooled workspace connection. In sostanza, ci creiamo un servizio di tipo GeodataServer pooled. Quando le istanze del servizio vengono inizializzate creano la connessione al geodatabase. Il nostro servizio web utilizza questa connessione già pronta evitando il costo fisso descritto precedentemente. Inoltre, quando il nostro servizio web rilascia il server context tramite il metodo ReleaseContext(), il server object sarà a disposizione per altre chiamate dal web services perchè abbiamo impostato il servizio a pooled e quindi non verranno distrutte.

Esempio:
[WebMethod] public string
PooledWSExample()
{
// connect to the GIS server
string m_host = "localhost";

ESRI.ArcGIS.ADF.Identity agsID = new ESRI.ArcGIS.ADF.Identity("user", "passwd", "domain");
ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection connection = new ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection(m_host, agsID, true);


// get a server context
IServerObjectManager som = connection.ServerObjectManager;
IServerContext sc = som.CreateServerContext("MyGDBServer","GeodataServer");

// get the workspace from the GeodataServer
IGeoDataServer gds = sc.ServerObject as IGeoDataServer;
IGeoDataServerObjects gdo = gds as IGeoDataServerObjects;
IWorkspace ws = gdo.DefaultWorkingWorkspace;

// do something with the workspace

sc.ReleaseContext();

return "Operation complete";
}

Nessun commento: