Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Define a configuração para WS-Reliable Messaging. Quando esse elemento é adicionado a uma associação personalizada, o canal resultante pode dar suporte a garantias de entrega exatamente uma vez.
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding>
<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 |
|---|---|
| acknowledgementInterval | Um TimeSpan que contém o intervalo de tempo máximo que o canal aguardará para enviar uma confirmação de mensagens recebidas até esse ponto. O padrão é 00:00:0.2. |
| flowControlEnabled | Um valor booliano que indica se o controle de fluxo avançado, uma implementação específica da Microsoft do controle de fluxo para WS-Reliable mensagens, é ativado. O padrão é true. |
| inactivityTimeout | Um TimeSpan que especifica a duração máxima que o canal permitirá que a outra parte de comunicação não envie mensagens, antes de falhar no canal. O padrão é 00:10:00. A atividade em um canal é definida como recebendo mensagens de aplicativo ou de infraestrutura. Essa propriedade controla o tempo máximo para manter uma sessão inativa ativa. Se o tempo mais longo passar sem atividade, a sessão será anulada pela infraestrutura e pelas falhas de canal. Nota: Não é necessário que o aplicativo envie mensagens periodicamente para manter a conexão ativa. |
| maxPendingChannels | Um inteiro que especifica o número máximo de canais que podem aguardar a aceitação do ouvinte. Esse valor deve estar entre 1 e 16384, inclusive. O padrão é 4. Os canais estão pendentes quando estão esperando para serem aceitos. Depois que esse limite for atingido, nenhum canal será criado. Em vez disso, eles são colocados no modo pendente até que esse número fique inoperante (aceitando canais pendentes). Esse é um limite por fábrica. Quando o limite é atingido e um aplicativo remoto tenta estabelecer uma nova sessão confiável, a solicitação é negada e a operação aberta que provocou essas falhas. Esse 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 confiável tenta retransmitir uma mensagem para a qual não recebeu uma confirmação, chamando Enviar em seu canal subjacente. Esse valor deve ser maior que zero. O padrão é 8. Esse valor deve ser um inteiro maior que zero. Se uma confirmação não for recebida após a última retransmissão, o canal falhará. Uma mensagem será considerada transferida se sua entrega no destinatário tiver sido confirmada pelo destinatário. Se uma confirmação não tiver sido recebida dentro de um determinado período de tempo para uma mensagem que foi transmitida, a infraestrutura retransmite automaticamente a mensagem. A infraestrutura tenta reenviar a mensagem pelo número máximo de vezes especificado por essa propriedade. Se uma confirmação não for recebida após a última retransmissão, o canal falhará. A infraestrutura usa um algoritmo de retirada exponencial para determinar quando retransmitir, com base em um tempo médio de ida e volta computado. O tempo inicialmente começa em 1 segundo antes da retransmissão e dobrando o atraso com cada tentativa, o que resulta em aproximadamente 8,5 minutos passando 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 de ida e volta calculado e o período de tempo resultante que essas tentativas levam varia de acordo. Isso permite que o tempo de retransmissão se adapte dinamicamente a condições de rede variadas. |
| maxTransferWindowSize | Um inteiro que especifica o tamanho máximo do buffer. Os valores válidos são de 1 a 4.096, inclusive. No cliente, esse atributo define o tamanho máximo do buffer usado por um canal confiável para armazenar mensagens ainda não confirmadas pelo receptor. A unidade da cota é uma mensagem. Se o buffer estiver cheio, outras operações SEND serão bloqueadas. No receptor, esse atributo define o tamanho máximo do buffer usado pelo canal para armazenar mensagens de entrada ainda não enviadas para o aplicativo. Se o buffer estiver cheio, outras mensagens serão descartadas silenciosamente pelo receptor e exigirão retransmissão pelo cliente. |
| ordered | Um booliano que especifica se as mensagens têm garantia de chegar na ordem em que foram enviadas. Se essa configuração for false, as mensagens poderão chegar fora de ordem. O padrão é true. |
| reliableMessagingVersion | Um valor válido que ReliableMessagingVersion especifica a versão WS-ReliableMessaging a ser usada. |
Elementos filho
None
Elementos pai
| Elemento | Description |
|---|---|
| <ligação> | Define todos os recursos de associação da associação personalizada. |
Observações
Sessões confiáveis fornecem recursos para mensagens confiáveis e sessões. O sistema de mensagens confiável tenta a comunicação com falha e permite que garantias de entrega, como a chegada em ordem de mensagens, sejam especificadas. As sessões mantêm o estado para clientes entre chamadas. Esse elemento também fornece, opcionalmente, entrega de mensagens ordenadas. Essa sessão implementada pode cruzar soap e intermediários de transporte.
Cada elemento de associação representa uma etapa de processamento ao enviar ou receber mensagens. Em runtime, os elementos de associação criam as fábricas de canais e os ouvintes necessários para criar pilhas de canal de saída e de entrada necessárias para enviar e receber mensagens. Ele reliableSession fornece uma camada opcional na pilha que pode estabelecer uma sessão confiável entre pontos de extremidade e configurar o comportamento desta sessão.
Para obter mais informações, consulte Reliable Sessions.
Example
O exemplo a seguir demonstra como configurar uma associação personalizada com vários elementos de codificação de mensagens e transporte, especialmente habilitando sessões confiáveis, que mantém o estado do cliente e especifica garantias de entrega em ordem. Esse recurso é configurado nos arquivos de configuração do aplicativo 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>