Partilhar via


Gerenciando conexões e sessões (XMLA)

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.

  1. 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>  
    
  2. 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>  
    
  3. 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>  
    
  4. 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>  
    

Ver também

Desenvolvimento com XMLA em Serviços de Análise