Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Lo stato è una condizione durante la quale il server mantiene l'identità e il contesto di un client tra le chiamate al metodo. L'inattività senza stato è una condizione durante la quale il server non memorizza l'identità e il contesto di un client al termine di una chiamata al metodo.
Per garantire lo stato, XML for Analysis (XMLA) supporta sessioni che consentono l'esecuzione di una serie di istruzioni insieme. Un esempio di tale serie di istruzioni è la creazione di un membro calcolato da usare nelle query successive.
In generale, le sessioni in XMLA seguono il comportamento seguente descritto dalla specifica OLE DB 2.6:
Le sessioni definiscono l'ambito del contesto di transazione e comando.
È possibile eseguire più comandi nel contesto di una singola sessione.
Il supporto per le transazioni nel contesto XMLA è tramite comandi specifici del provider inviati con il metodo Execute .
XMLA definisce un modo per supportare le sessioni in un ambiente Web in modalità simile all'approccio usato dal protocollo DAV (Distributed Authoring and Versioning) per implementare il blocco in un ambiente ad accoppiamento libero. Questa implementazione parallela a DAV in quanto il provider può scadere le sessioni per vari motivi, ad esempio un timeout o un errore di connessione. Quando le sessioni sono supportate, i servizi Web devono essere consapevoli e pronti per gestire set interrotti di comandi che devono essere riavviati.
La specifica W3C (Simple Object Access Protocol) (SOAP) di World Wide Web Consortium (W3C) consiglia di usare intestazioni SOAP per la creazione di nuovi protocolli su messaggi SOAP. Nella tabella seguente sono elencati gli elementi e gli attributi dell'intestazione SOAP definiti da XMLA per l'avvio, la gestione e la chiusura di una sessione.
| Intestazione SOAP | Descrizione |
|---|---|
| BeginSession | Questa intestazione richiede al provider di creare una nuova sessione. Il provider deve rispondere creando una nuova sessione e restituendo l'ID sessione come parte dell'intestazione Sessione nella risposta SOAP. |
| ID della sessione | L'area del valore contiene l'ID sessione che deve essere usato in ogni chiamata al metodo per il resto della sessione. Il provider nella risposta SOAP invia questo tag e il client deve anche inviare questo attributo con ogni elemento di intestazione Session. |
| Sessione | Per ogni chiamata al metodo che si verifica nella sessione, è necessario usare questa intestazione e l'ID sessione deve essere incluso nell'area del valore dell'intestazione. |
| EndSession | Per terminare la sessione, usare questa intestazione. L'ID sessione deve essere incluso nell'area del valore. |
Annotazioni
Un ID sessione non garantisce che una sessione rimanga valida. Se la sessione scade(ad esempio, se si verifica il timeout o la connessione viene persa), il provider può scegliere di terminare ed eseguire il rollback delle azioni della sessione. Di conseguenza, tutte le chiamate di metodo successive dal client in un ID sessione hanno esito negativo con un errore che segnala una sessione non valida. Un client deve gestire questa condizione e prepararsi a inviare nuovamente le chiamate al metodo di sessione dall'inizio.
Esempio di codice legacy
Nell'esempio seguente viene illustrato come sono supportate le sessioni.
Per iniziare la sessione, aggiungere un'intestazione BeginSession in SOAP alla chiamata al metodo XMLA in uscita dal client. L'area del valore è inizialmente vuota perché l'ID sessione non è ancora noto.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="https://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Header> <XA:BeginSession xmlns:XA="urn:schemas-microsoft-com:xml-analysis" xsi:type="xsd:int" mustUnderstand="1"/> </SOAP-ENV:Header> <SOAP-ENV:Body> ...<!-- Discover or Execute call goes here.--> </SOAP-ENV:Body> </SOAP-ENV:Envelope>Il messaggio di risposta SOAP dal provider include l'ID sessione nell'area dell'intestazione restituita, usando il tag <di intestazione XMLA SessionId>.
<SOAP-ENV:Header> <XA:Session xmlns:XA="urn:schemas-microsoft-com:xml-analysis" SessionId="581"/> </SOAP-ENV:Header>Per ogni chiamata al metodo nella sessione, è necessario aggiungere l'intestazione sessione contenente l'ID sessione restituito dal provider.
<SOAP-ENV:Header> <XA:Session xmlns:XA="urn:schemas-microsoft-com:xml-analysis" mustUnderstand="1" SessionId="581"/> </SOAP-ENV:Header>Al termine della sessione, viene usato il <tag EndSession> contenente il valore dell'ID sessione correlato.
<SOAP-ENV:Header> <XA:EndSession xmlns:XA="urn:schemas-microsoft-com:xml-analysis" xsi:type="xsd:int" mustUnderstand="1" SessionId="581"/> </SOAP-ENV:Header>