Partilhar via


<reliableSession>

Define a definição para WS-Reliable Mensagens. Quando este elemento é adicionado a uma ligação personalizada, o canal resultante pode suportar garantias de entrega exatamente uma vez.

<configuração>
   <system.serviceModel>
     <Encadernações>
       <customBinding>
         <Encadernação>
           <reliableSession>

Sintaxe

<reliableSession acknowledgementInterval="TimeSpan"
                 flowControlEnabled="Boolean"
                 inactivityTimeout="TimeSpan"
                 maxPendingChannels="Integer"
                 maxRetryCount="Integer"
                 maxTransferWindowSize="Integer"
                 reliableMessagingVersion="Default/WSReliableMessagingFebruary2005/WSReliableMessaging11"
                 ordered="Boolean" />

Atributos e Elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai.

Attributes

Attribute Description
reconhecimentoIntervalo A TimeSpan que contém o intervalo máximo de tempo que o canal vai esperar para enviar um reconhecimento para as mensagens recebidas até esse ponto. O padrão é 00:00:0.2.
flowControlEnabled Um valor booleano que indica se o controlo avançado de fluxo, uma implementação específica da Microsoft de controlo de fluxo para mensagens WS-Reliable, está ativado. A predefinição é true.
inactivityTimeout A que especifica a duração máxima que o canal vai permitir que a outra parte da comunicação não envie mensagens, antes de TimeSpan falhar o canal. O padrão é 00:10:00.

Atividade num canal é definida como receber mensagens de uma aplicação ou infraestrutura. Esta propriedade controla o tempo máximo para manter uma sessão inativa viva. Se passar mais tempo sem atividade, a sessão é abortada pela infraestrutura e pelas falhas do canal. Nota: Não é necessário que a aplicação envie mensagens periodicamente para manter a ligação ativa.
maxPendingChannels Um inteiro que especifica o número máximo de canais que podem esperar que o ouvinte seja aceite. Este valor deve situar-se entre 1 e 16384 inclusive. A predefinição é 4.

Os canais estão pendentes quando estão à espera de serem aceites. Uma vez atingido esse limite, não são criados canais. Em vez disso, são colocados em modo pendente até que esse número diminua (aceitando canais pendentes). Este é um limite por fábrica.

Quando o limiar é atingido e uma aplicação remota tenta estabelecer uma nova sessão fiável, o pedido é negado e a operação aberta que provocou este processo falha. Este limite não se aplica ao número de canais de saída pendentes.
maxRetryCount Um inteiro que especifica o número máximo de vezes que um canal fiável tenta retransmitir uma mensagem para a qual não recebeu confirmação, chamando Send no seu canal subjacente.

Este valor deve ser maior que zero. O padrão é 8.

Este valor deve ser um inteiro maior que zero. Se não for recebido um reconhecimento após a última retransmissão, o canal falha.

Uma mensagem é considerada transferida se a sua entrega ao destinatário tiver sido confirmada pelo destinatário.

Se um reconhecimento não for recebido dentro de um determinado período de tempo para uma mensagem transmitida, a infraestrutura retransmite automaticamente a mensagem. A infraestrutura tenta reenviar a mensagem por, no máximo, o número de vezes especificado por esta propriedade. Se não for recebido um reconhecimento após a última retransmissão, o canal falha.

A infraestrutura utiliza um algoritmo de retrocesso exponencial para determinar quando retransmitir, com base num tempo médio calculado de ida e volta. O tempo começa inicialmente em 1 segundo antes da retransmissão e duplica o atraso a cada tentativa, o que resulta numa passagem de aproximadamente 8,5 minutos entre a primeira tentativa de transmissão e a última tentativa de retransmissão. O tempo para a primeira tentativa de retransmissão é ajustado de acordo com o tempo calculado da viagem de ida e volta e o período resultante que essas tentativas demoram varia em conformidade. Isto permite que o tempo de retransmissão se adapte dinamicamente às condições variáveis da rede.
maxTransferWindowSize Um inteiro que especifica o tamanho máximo do buffer. Os valores válidos vão de 1 a 4096 inclusive.

No cliente, este atributo define o tamanho máximo do buffer usado por um canal fiável para armazenar mensagens ainda não reconhecidas pelo recetor. A unidade da quota é uma mensagem. Se o buffer estiver cheio, outras operações SEND são bloqueadas.

No recetor, este atributo define o tamanho máximo do buffer usado pelo canal para armazenar mensagens recebidas ainda não enviadas para a aplicação. Se o buffer estiver cheio, outras mensagens são silenciosamente deixadas pelo recetor e requerem retransmissão pelo cliente.
encomendado Um booleano que especifica se as mensagens têm garantia de chegar na ordem em que foram enviadas. Se esta definição for false, as mensagens podem chegar fora de ordem. A predefinição é true.
reliableMessagingVersão Um valor válido desse ReliableMessagingVersion valor especifica a versão WS-ReliableMessaging a ser utilizada.

Elementos filho

Nenhum

Elementos Principais

Elemento Description
<Encadernação> Define todas as capacidades de ligação da ligação personalizada.

Observações

Sessões fiáveis fornecem funcionalidades para mensagens e sessões fiáveis. A mensagem fiável tenta a comunicação em caso de falha e permite especificar garantias de entrega, como a chegada por ordem das mensagens. As sessões mantêm o estado dos clientes entre chamadas. Este elemento também fornece opcionalmente a entrega ordenada das mensagens. Esta sessão implementada pode cruzar SOAP e intermediários de transporte.

Cada elemento de ligação representa uma etapa de processamento ao enviar ou receber mensagens. Em tempo de execução, os elementos de ligação criam as fábricas de canais e ouvintes necessários para construir pilhas de canais de saída e entrada necessárias para enviar e receber mensagens. Fornece reliableSession uma camada opcional na pilha que pode estabelecer uma sessão fiável entre os endpoints e configurar o comportamento dessa sessão.

Para mais informações, consulte Sessões Fiáveis.

Example

O exemplo seguinte demonstra como configurar uma ligação personalizada com vários elementos de transporte e codificação de mensagens, especialmente permitindo sessões fiáveis, que mantém o estado do cliente e especifica garantias de entrega por ordem. Esta funcionalidade está configurada nos ficheiros de configuração da aplicação para o cliente e o serviço. O exemplo mostra a configuração do serviço.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="Microsoft.ServiceModel.Samples.CalculatorService"
               behaviorConfiguration="CalculatorServiceBehavior">
        <!-- This endpoint is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc -->
        <!-- specify customBinding binding and a binding configuration to use -->
        <endpoint address=""
                  binding="customBinding"
                  bindingConfiguration="Binding1"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <!-- The mex endpoint is exposed at http://localhost/servicemodelsamples/service.svc/mex -->
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>
    <!-- custom binding configuration - configures HTTP transport, reliable sessions -->
    <bindings>
      <customBinding>
        <binding name="Binding1">
          <reliableSession />
          <security authenticationMode="SecureConversation"
                    requireSecurityContextCancellation="true">
          </security>
          <compositeDuplex />
          <oneWay />
          <textMessageEncoding messageVersion="Soap12WSAddressing10"
                               writeEncoding="utf-8" />
          <httpTransport authenticationScheme="Anonymous"
                         bypassProxyOnLocal="false"
                         hostNameComparisonMode="StrongWildcard"
                         proxyAuthenticationScheme="Anonymous"
                         realm=""
                         useDefaultWebProxy="true" />
        </binding>
      </customBinding>
    </bindings>
    <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
    <behaviors>
      <serviceBehaviors>
        <behavior name="CalculatorServiceBehavior">
          <serviceMetadata httpGetEnabled="True" />
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Consulte também