Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Estado é uma condição durante a qual o servidor preserva a identidade e o contexto de um cliente entre chamadas de método. A falta de estado é uma condição durante a qual o servidor não se lembra da identidade e do contexto de um cliente após a conclusão de uma chamada de método.
Para fornecer estado, o XML for Analysis (XMLA) dá suporte a sessões que permitem que uma série de instruções sejam executadas em conjunto. Um exemplo dessa série de instruções seria a criação de um membro calculado que deve ser usado em consultas subsequentes.
Em geral, as sessões no XMLA seguem o seguinte comportamento descrito pela especificação OLE DB 2.6:
As sessões definem o escopo de contexto de transação e comando.
Vários comandos podem ser executados no contexto de uma única sessão.
O suporte para transações no contexto XMLA é por meio de comandos específicos do provedor enviados com o método Execute .
O XMLA define uma maneira de dar suporte a sessões em um ambiente Web em um modo semelhante à abordagem usada pelo protocolo DAV (Criação Distribuída e Controle de Versão) para implementar o bloqueio em um ambiente flexívelmente acoplado. Essa implementação paraleliza o DAV, pois o provedor tem permissão para expirar sessões por vários motivos (por exemplo, um tempo limite ou erro de conexão). Quando há suporte para sessões, os serviços Web devem estar cientes e prontos para lidar com conjuntos interrompidos de comandos que devem ser reiniciados.
A especificação SOAP (Protocolo de Acesso a Objetos Simples) do W3C (World Wide Web Consortium) recomenda o uso de cabeçalhos SOAP para criar novos protocolos em cima de mensagens SOAP. A tabela a seguir lista os elementos de cabeçalho SOAP e os atributos que o XMLA define para iniciar, manter e fechar uma sessão.
| Cabeçalho SOAP | Descrição |
|---|---|
| BeginSession | Esse cabeçalho solicita que o provedor crie uma nova sessão. O provedor deve responder construindo uma nova sessão e retornando a ID da sessão como parte do cabeçalho de sessão na resposta SOAP. |
| Id da Sessão | A área de valor contém a ID da sessão que deve ser usada em cada chamada de método para o restante da sessão. O provedor na resposta SOAP envia essa marca e o cliente também deve enviar esse atributo com cada elemento de cabeçalho de sessão. |
| Sessão | Para cada chamada de método que ocorre na sessão, esse cabeçalho deve ser usado e a ID da sessão deve ser incluída na área de valor do cabeçalho. |
| EndSession | Para encerrar a sessão, use este cabeçalho. A ID da sessão deve ser incluída com a área de valor. |
Observação
Uma ID de sessão não garante que uma sessão permaneça válida. Se a sessão expirar (por exemplo, se ela atingir o tempo limite ou a conexão for perdida), o provedor poderá optar por encerrar e reverter as ações dessa sessão. Como resultado, todas as chamadas de método subsequentes do cliente em uma ID de sessão falham com um erro sinalizando uma sessão que não é válida. Um cliente deve lidar com essa condição e estar preparado para reenviar as chamadas de método de sessão desde o início.
Exemplo de código herdado
O exemplo a seguir mostra como as sessões têm suporte.
Para iniciar a sessão, adicione um cabeçalho BeginSession em SOAP à chamada de método XMLA de saída do cliente. A área de valor está inicialmente em branco porque a ID da sessão ainda não é conhecida.
<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>A mensagem de resposta SOAP do provedor inclui a ID da sessão na área de cabeçalho de retorno, usando a marca <de cabeçalho XMLA SessionId>.
<SOAP-ENV:Header> <XA:Session xmlns:XA="urn:schemas-microsoft-com:xml-analysis" SessionId="581"/> </SOAP-ENV:Header>Para cada chamada de método na sessão, o cabeçalho de sessão deve ser adicionado, contendo a ID da sessão retornada do provedor.
<SOAP-ENV:Header> <XA:Session xmlns:XA="urn:schemas-microsoft-com:xml-analysis" mustUnderstand="1" SessionId="581"/> </SOAP-ENV:Header>Quando a sessão for concluída, a <marca EndSession> será usada, contendo o valor da ID da sessão relacionada.
<SOAP-ENV:Header> <XA:EndSession xmlns:XA="urn:schemas-microsoft-com:xml-analysis" xsi:type="xsd:int" mustUnderstand="1" SessionId="581"/> </SOAP-ENV:Header>