Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A condição de estado é uma condição durante a qual o servidor preserva a identidade e o contexto de um cliente entre chamadas de método. A ausência de estado é uma condição durante a qual o servidor não se lembra da identidade e do contexto de um cliente após o término de uma chamada de método.
Para proporcionar estado, o XML for Analysis (XMLA) suporta sessões que permitem a execução conjunta de uma série de instruções. Um exemplo de tal série de instruções seria a criação de um membro calculado que será usado em consultas posteriores.
De um modo geral, as sessões em XMLA seguem o seguinte comportamento descrito pela especificação OLE DB 2.6:
As sessões definem o âmbito do contexto das transações e comandos.
Podem ser executados múltiplos comandos no contexto de uma única sessão.
O suporte para transações no contexto XMLA é feito através de comandos específicos do fornecedor enviados com o método Executar .
O XMLA define uma forma de suportar sessões num ambiente Web num modo semelhante à abordagem usada pelo protocolo de Autoria e Versionamento Distribuídos (DAV) para implementar o bloqueio num ambiente pouco acoplado. Esta implementação é paralela ao DAV, pois o fornecedor pode expirar as sessões por várias razões (por exemplo, um timeout ou erro de ligação). Quando as sessões são suportadas, os serviços Web devem estar atentos e prontos para lidar com conjuntos de comandos interrompidos que devem ser reiniciados.
A especificação do World Wide Web Consortium (W3C) Simple Object Access Protocol (SOAP) recomenda o uso de cabeçalhos SOAP para construir novos protocolos sobre mensagens SOAP. A tabela seguinte lista os elementos e atributos do cabeçalho SOAP que o XMLA define para iniciar, manter e fechar uma sessão.
| Cabeçalho SOAP | Description |
|---|---|
| IniciarSessão | Este cabeçalho pede ao fornecedor que crie uma nova sessão. O fornecedor deve responder construindo uma nova sessão e retornando o ID da sessão como parte do cabeçalho da Sessão na resposta SOAP. |
| Id da Sessão | A área de valor contém o ID da sessão que deve ser usado em cada chamada de método durante o resto da sessão. O fornecedor na resposta SOAP envia esta etiqueta e o cliente deve também enviar este atributo com cada elemento do cabeçalho da Sessão. |
| Session | Para cada chamada de método que ocorre na sessão, este cabeçalho deve ser usado, e o ID da sessão deve ser incluído na área de valor do cabeçalho. |
| Fim de Sessão | Para terminar a sessão, use este cabeçalho. O ID da sessão deve ser incluído com a área de valores. |
Observação
Um ID de sessão não garante que uma sessão se mantém válida. Se a sessão expirar (por exemplo, terminar por tempo limite ou se a ligação for perdida), o fornecedor pode optar por finalizar e reverter as ações dessa sessão. Como resultado, todas as chamadas de método subsequentes do cliente num ID de sessão falham com um erro que sinaliza uma sessão que não é válida. O cliente deve lidar com esta condição e estar preparado para reenviar as chamadas de método de sessão desde o início.
Exemplo de Código Legado
O exemplo seguinte mostra como as sessões são suportadas.
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 o ID da sessão ainda não é conhecido.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://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 fornecedor inclui o identificador da sessão na área do cabeçalho de retorno, usando a tag 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, deve ser adicionado o cabeçalho da Sessão, contendo o ID da sessão devolvido pelo fornecedor.
<SOAP-ENV:Header> <XA:Session xmlns:XA="urn:schemas-microsoft-com:xml-analysis" mustUnderstand="1" SessionId="581"/> </SOAP-ENV:Header>Quando a sessão está concluída, é usada a <etiqueta EndSession> , contendo o valor do ID de sessão relacionado.
<SOAP-ENV:Header> <XA:EndSession xmlns:XA="urn:schemas-microsoft-com:xml-analysis" xsi:type="xsd:int" mustUnderstand="1" SessionId="581"/> </SOAP-ENV:Header>