Zarządzanie połączeniami i sesji (XMLA)
Statefulness jest warunek, podczas którego serwera zachowuje tożsamości i kontekstu klient między metoda wywołań.Statelessness jest warunek, podczas którego serwer nie pamięta tożsamości i kontekstu klient po zakończeniu wywołanie metoda.
Aby zapewnić statefulness, XML for Analysis (XMLA) obsługuje sesji umożliwiające serię instrukcji, należy przeprowadzić razem.Przykład serię instrukcji byłoby tworzenia obliczeniowy element członkowski, który ma być używany w następnych kwerend.
Ogólnie rzecz biorąc sesje w XMLA, wykonaj następujące zachowanie opisane w specyfikacji OLE DB 2.6:
Sesje definiowanie transakcji i polecenia kontekstu zakres.
Wiele poleceń można uruchomić w kontekście pojedynczej sesja.
Obsługa transakcji w kontekście XMLA jest za pomocą polecenia specyficzne dla dostawca, wysyłane z Wykonywanie metoda.
XMLA definiuje sposób obsługi sesji w środowisku sieci Web w trybie podobne podejście używanych przez protokół Distributed Authoring and Versioning (DAV) do wdrożenia blokowania w środowisku luźno.Ta implementacja równoleżnikami DAV, że dostawca jest dozwolone do wygaśnięcia sesji z różnych powodów (na przykład limit czasu lub połączenia błąd).Podczas sesji są obsługiwane, usług sieci Web musi być świadomy i gotowy do obsługi przerwanej zestawy poleceń, które musi zostać uruchomiony ponownie.
Specyfikacja konsorcjum World Wide Web Consortium (W3C) Simple Object Access Protocol (SOAP) zaleca stworzenie nowych protokołów na górze SOAP wiadomości przy użyciu nagłówki SOAP.W poniższej tabela przedstawiono elementy nagłówka protokołu SOAP i atrybutów, które XMLA definiuje inicjowanie, utrzymania i zamykania sesja.
Nagłówek protokołu SOAP |
Opis |
---|---|
BeginSession |
Ten nagłówek żądania dostawca utworzyć nowej sesja.Dostawca powinien odpowiadać nowej sesja i zwraca identyfikator sesja jako część nagłówka sesja w odpowiedzi protokołu SOAP. |
Identyfikator sesji |
Obszar wartość zawiera identyfikator sesja, który musi być używany w każdym wywołaniu metoda pozostałej sesja.Dostawca w odpowiedzi protokołu SOAP wysyła ten znacznik i klient także musi wysłać ten atrybut z elementem nagłówka każdej sesji. |
Sesja |
Nagłówek ten musi być używany dla każdego wywołania metoda występujący w sesja i identyfikator sesja musi znajdować się w obszarze wartość nagłówka. |
EndSession |
Aby zakończyć sesja, użyj tego nagłówka.Identyfikator sesja musi zostać dołączony do obszaru wartości. |
Ostrzeżenie
Identyfikator sesji nie gwarantuje, że sesja pozostaje ważne.Jeśli sesja wygasa (na przykład, jeśli limit czasu lub połączenie zostanie przerwane), Dostawca można wybrać opcję zakończenia i wycofać działania tej sesji.W wyniku wywołania metoda kolejnych z klient na identyfikator sesja nie powiedzie się z powodu błędu sygnalizacji sesja, który jest nieprawidłowy.Klient powinien obsługiwać ten warunek i Przygotuj ponownie wywołania metoda sesja od początku.
Przykład kodu starszych
Poniższy przykład pokazuje, jak sesje są obsługiwane.
Aby rozpocząć sesja, dodać nagłówek BeginSession w SOAP do wychodzące wywołanie metoda XMLA z klient.Obszar wartość jest początkowo puste, ponieważ identyfikator sesja nie jest jeszcze znana.
<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>
Komunikat odpowiedzi protokołu SOAP od dostawca zawiera identyfikator sesja w obszarze nagłówka zwrotu znacznikiem nagłówka XMLA <SessionId>.
<SOAP-ENV:Header> <XA:Session xmlns:XA="urn:schemas-microsoft-com:xml-analysis" SessionId="581"/> </SOAP-ENV:Header>
Dla każdego wywołania metoda w sesja nagłówka sesja musi być dodany, zawierający identyfikator sesja, zwrócone od dostawca.
<SOAP-ENV:Header> <XA:Session xmlns:XA="urn:schemas-microsoft-com:xml-analysis" mustUnderstand="1" SessionId="581"/> </SOAP-ENV:Header>
Po zakończeniu sesja <EndSession> tag jest używany, zawierające wartość Identyfikatora sesja pokrewne.
<SOAP-ENV:Header> <XA:EndSession xmlns:XA="urn:schemas-microsoft-com:xml-analysis" xsi:type="xsd:int" mustUnderstand="1" SessionId="581"/> </SOAP-ENV:Header>