Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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>