Páginas filhas
  • Reliable Session (Reliable Connection) - Documento Técnico

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


Associações (Bindings)

As associações especificam o mecanismo de comunicação a ser usado ao se comunicar com um ponto de extremidade e também indicam como se conectar a esse ponto de extremidade. Uma associação contém os seguintes elementos:

  • A pilha do protocolo, que determina a segurança, a confiabilidade e as configurações de fluxo de contexto a serem usadas para as mensagens que são enviadas ao ponto de extremidade.

  • O transporte determina o protocolo de transporte subjacente a ser usado ao enviar mensagens para o ponto de extremidade, por exemplo, TCP ou HTTP.

  • A codificação determina a codificação de transmissão a ser usada para as mensagens que são enviadas para o ponto de extremidade. Por exemplo, texto/XML, binário ou MTOM (Mecanismo de Otimização de Transmissão de Mensagem).

Na imagem abaixo estão apresentadas quatro associações que o RM dá suporte e suas caracteristicas.


Image Added


Canais do WCF (Channels)

Os elementos de associação (Binding Elements) lêem as configurações tanto do lado client quanto do lado server e montam a Fábrica de Canais (Channel Factory) e o Ouvinte de Canais (Channel Listener) respectivamente. A ordem recomendada para os elementos de associação é:

  1. Fluxo de Transações (TransactionFlow), 
  2. Sessões Confiáveis (ReliableSession), 
  3. Segurança, 
  4. CompositeDuplex, 
  5. OneWay, 
  6. StreamSecurity, 
  7. Codificação de Mensagem (MessageEncoding) 
  8. Transporte.


Image Added


A imagem abaixo ilustra o relacionamento entre o ChannelListener e o ChannelFactory no WCF. O ouvinte de canais cria o canal no lado server e a fábrica de canais cria no lado client.


Image Added


A forma de comunicação adotada é a Request-Reply (Requisição-Resposta). Essa forma de comunicação faz com que cada parte da comunicação veja o canal. O cliente usa o canal para enviar requisições, então é natural que ele o veja como um IRequestChannel. Do outro lado, o servidor recebe as requisições pelo canal e quer usá-lo para enviar de volta ao cliente, então ele o vê como um IReplyChannel.


Image Added



Sessões Confiáveis no RM

Nas versões 12.1.22 (ou superiores) do RM foi habilitado a funcionalidade de Sessão Confiável,que fornece

HTML
<link rel="stylesheet" href="/download/attachments/419548451/TotvsApiDoc.css?version=18&modificationDate=1545415351680&api=v2">
<script src="/download/attachments/419548451/TotvsApiDoc.min.js?version=1&modificationDate=1545939893691&api=v2"></script>
<script src="/download/attachments/419548451/TotvsApiDocCustom_Auto.js?version=51&modificationDate=1546542702197&api=v2"></script>
<div id="container1" class="TotvsApiDoc-wrapper" style="position: relative;">	</div>
HTML
<div id="containerIntroducao" class="TotvsApiDoc_Tab" data-tabid="a_Introducao" data-titulo="Introdução à sessões confiáveis" data-current="current" style="display:none">

Introdução à sessões confiáveis

...

transferência confiável de ponta a ponta de mensagens entre uma origem e um destino usando o protocolo WS-Reability de mensagens, independentemente do número ou tipo de intermediários que separam os pontos de extremidade de mensagens (origem e destino). Isso inclui qualquer intermediário de transporte que não usa SOAP (por exemplo, proxies HTTP) ou intermediários que usam o SOAP (por exemplo, roteadores baseados em SOAP ou pontes) que são necessários para que as mensagens fluam entre os pontos de extremidade. Sessões confiáveis usam uma janela de transferência na memória para falhas de nível de mensagem SOAP e restabelecer as conexões no caso de falhas de transporte.

...

Nas versões 12.1.22 e 12.1.23 foi habilitado a sessão confiável nativa do WCF, enquanto que na 12.1.24 (ou superiores), uma nova sessão confiável customizada foi implementada, com o objetivo de não só manter a conexão ativa, mas redirecionar as requisições para diferentes hosts, se caso existirem e estiverem ativos.

Na imagem abaixo é mostrado um diagrama de como a requisição é feita entre o cliente e o servidor, mostra também a resiliência entre eles, ou seja, caso uma conexão seja perdida, o pacote é remontado e enviado à um host aleatório, que poderá ser o mesmo host da primeira requisição, caso esteja ativo, ou outro host disponível e habilitado para receber a requisição e processá-la.

 

Image Added


Mensagem do RM

Caso haja alguma falha de comunicação, e não seja possível obter uma resposta o RM irá apresentar a seguinte mensagem:

Estamos com dificuldade em comunicar com o Host. Aguarde enquanto tentamos recuperar...



Image Added

HTML
</div">
HTML
<div id="containerReliableSessionNoRM" class="TotvsApiDoc_Tab" data-tabid="a_ReliableSessionNoRM" data-titulo="Sessões confiáveis no RM" data-current="" style="display:none">

Sessões confiáveis no RM

Ganhos com a implementação

Com a implementação das sessões confiáveis no RM, ele estará preparado para trabalhar com Buffer no envio de pacotes e de manter a conexão de um serviço viva por mais tempo para reaproveitar as novas chamadas. Desta forma, evita-se novos handshakes e aspira-se um ganho de performance em cenários onde a comunicação do client com o server tenha uma latência muito alta.

Configuração

Adicionar a tag EnableReliableConnection no arquivo de configuração do client (RM.exe.config).

HTML
<div class="img-zoom-container">
<div class="img-div">

Image Removed

HTML
</div>
<div class="img-div-description">
Configuração da sessão confiável no client (RM.exe)
</div>
</div>

Versões do RM disponíveis

Está disponível no RM o uso de sessões confiáveis (Reliable Connection) nas versões:

  • 12.1.24

Sessão confiável ativada VS Sessão confiável desativada

Iremos mostrar agora a diferença de comportamento do sistema quando a sessão confiável está ativada e quando ela está desativada.

Sessão confiável desativada

A sessão confiável estará desativada quando: 

  • Não existir a tag EnableReliableConnection nos arquivos de configuração RM.exe.config e RM.Host.exe.config.
  • A tag EnableReliableConnection estiver presente nos arquivos de configuração do client e host, porém com o valor false.

Havendo algum problema de comunicação entre o client e o server, o sistema levantará uma exceção e apresentará uma tela como a apresentada abaixo:

HTML
<div class="img-zoom-container">
<div class="img-div">

Image RemovedImage Removed

HTML
</div>
<div class="img-div-description">
Problema de comunicação entre client e server. Uma exceção é lançada e apresentada ao Usuário.
</div>
</div>

Essa mensagem irá se apresentar enquanto o lado client não conseguir se comunicar com o lado server. Ao se restabelecer a comunicação, o sistema voltará a funcionar corretamente.

Sessão confiável ativada

A sessão confiável estará ativada quando:

  • A tag EnableReliableConnection não estiver presente, ou seja, por padrão o reliable connection estará ativado.
  • A tag EnableReliableConnection estiver presente nos arquivos de configuração do client e host com o valor true.

Havendo algum problema de comunicação entre o client e o server, o sistema irá tentar durante um intervalo de tempo manter a conexão ou restabelecê-la automaticamente. Conseguindo restabelecer a comunicação o sistema voltará a funcionar corretamente.

Informações

A sessão confiável a partir da versão 12.1.24 do RM, permite que a resiliência da conexão entre client e server, utilize um ambiente de múltiplos hosts, onde caso a conexão não consiga ser mantida ou restabelecida com um host, um outro host poderá ser utilizado para receber dali em diante as requisições client, ou seja, assumir o papel do host cuja conexão foi interrompida.

HTML
</div">

...