Freigeben über


Verwalten von Verbindungen und Sitzungen (XMLA)

"Statefulness" ist eine Bedingung, in der der Server die Identität und den Kontext eines Clients zwischen Methodenaufrufen bewahrt. Zustandslosigkeit ist eine Bedingung, in der sich der Server nicht mehr an die Identität und den Kontext eines Clients erinnert, nachdem ein Methodenaufruf abgeschlossen wurde.

Um zustandsbehaftet zu sein, unterstützt XML für Die Analyse (XMLA) Sitzungen , die es ermöglichen, eine Reihe von Anweisungen zusammen auszuführen. Ein Beispiel für eine solche Reihe von Anweisungen wäre die Erstellung eines berechneten Elements, das in nachfolgenden Abfragen verwendet werden soll.

Im Allgemeinen folgen Sitzungen in XMLA dem folgenden Verhalten, das von der OLE DB 2.6-Spezifikation beschrieben wird:

  • Sitzungen definieren Transaktions- und Befehlskontextbereich.

  • Mehrere Befehle können im Kontext einer einzelnen Sitzung ausgeführt werden.

  • Die Unterstützung für Transaktionen im XMLA-Kontext erfolgt über anbieterspezifische Befehle, die mit der Execute-Methode gesendet werden.

XMLA definiert eine Möglichkeit, Sitzungen in einer Webumgebung in einem Modus zu unterstützen, der dem Ansatz ähnelt, der vom DAV-Protokoll (Distributed Authoring and Versioning) zum Implementieren der Sperrung in einer lose gekoppelten Umgebung verwendet wird. Diese Implementierung paralleliert DAV, da der Anbieter Aus verschiedenen Gründen Sitzungen ablaufen darf (z. B. timeout oder Verbindungsfehler). Wenn Sitzungen unterstützt werden, müssen Webdienste beachtet und bereit sein, unterbrochene Befehlssätze zu verarbeiten, die neu gestartet werden müssen.

Die Spezifikation des World Wide Web Consortium (W3C) Simple Object Access Protocol (SOAP) empfiehlt die Verwendung von SOAP-Headern für die Erstellung neuer Protokolle über SOAP-Nachrichten. In der folgenden Tabelle sind die SOAP-Headerelemente und -Attribute aufgeführt, die XMLA zum Initiieren, Verwalten und Schließen einer Sitzung definiert.

SOAP-Header BESCHREIBUNG
BeginSession Dieser Header fordert den Anbieter auf, eine neue Sitzung zu erstellen. Der Anbieter sollte reagieren, indem eine neue Sitzung erstellt und die Sitzungs-ID als Teil des Sitzungsheaders in der SOAP-Antwort zurückgegeben wird.
Sitzung-ID Der Wertbereich enthält die Sitzungs-ID, die in jedem Methodenaufruf für den Rest der Sitzung verwendet werden muss. Der Anbieter in der SOAP-Antwort sendet dieses Tag, und der Client muss dieses Attribut auch mit jedem Session-Header-Element senden.
Sitzung Für jeden Methodenaufruf, der in der Sitzung auftritt, muss dieser Header verwendet werden, und die Sitzungs-ID muss im Wertbereich des Headers enthalten sein.
EndSession Verwenden Sie diesen Header, um die Sitzung zu beenden. Die Sitzungs-ID muss im Wertbereich enthalten sein.

Hinweis

Eine Sitzungs-ID garantiert nicht, dass eine Sitzung gültig bleibt. Wenn die Sitzung abläuft (z. B. wenn die Verbindung unterbrochen wird oder die Verbindung verloren geht), kann der Anbieter die Aktionen dieser Sitzung beenden und zurücksetzen. Daher schlagen alle nachfolgenden Methodenaufrufe des Clients in einer Sitzungs-ID mit einem Fehler fehl, der eine ungültige Sitzung signalisiert. Ein Client sollte diese Bedingung behandeln und bereit sein, die Sitzungsmethodeaufrufe von Anfang an erneut zu senden.

Legacycodebeispiel

Das folgende Beispiel zeigt, wie Sitzungen unterstützt werden.

  1. Um die Sitzung zu starten, fügen Sie dem ausgehenden XMLA-Methodenaufruf vom Client einen BeginSession-Header in SOAP hinzu. Der Wertbereich ist zunächst leer, da die Sitzungs-ID noch nicht bekannt ist.

    <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>  
    
  2. Die SOAP-Antwortnachricht des Anbieters enthält die Sitzungs-ID im Rückgabeheaderbereich mithilfe der XMLA-Headertag <SessionId>.

    <SOAP-ENV:Header>  
       <XA:Session  
          xmlns:XA="urn:schemas-microsoft-com:xml-analysis"  
          SessionId="581"/>  
    </SOAP-ENV:Header>  
    
  3. Für jeden Methodenaufruf in der Sitzung muss der Sitzungsheader hinzugefügt werden, der die vom Anbieter zurückgegebene Sitzungs-ID enthält.

    <SOAP-ENV:Header>  
       <XA:Session  
          xmlns:XA="urn:schemas-microsoft-com:xml-analysis"  
          mustUnderstand="1"  
          SessionId="581"/>  
    </SOAP-ENV:Header>  
    
  4. Nach Abschluss der Sitzung wird das <EndSession-Tag> verwendet, das den zugehörigen Sitzungs-ID-Wert enthält.

    <SOAP-ENV:Header>  
       <XA:EndSession  
          xmlns:XA="urn:schemas-microsoft-com:xml-analysis"  
          xsi:type="xsd:int"  
          mustUnderstand="1"  
          SessionId="581"/>  
    </SOAP-ENV:Header>  
    

Siehe auch

Entwickeln mit XMLA in Analysis Services