Condividi tramite


<sessioneAttendibile>

Definisce l'impostazione per WS-Reliable Messaging. Quando questo elemento viene aggiunto a un'associazione personalizzata, il canale risultante può supportare assicurazioni di recapito una volta esatta.

<system.serviceModel>
  <bindings>
    <associazionePersonalizzata>
      <associazione>
        <sessioneAttendibile>

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

Attributi ed elementi

Attributi

Attributo Descrizione

acknowledgementInterval

TimeSpan che contiene l'intervallo di attesa massimo del canale per l'invio di un riconoscimento dei messaggi ricevuti fino a quel punto. Il valore predefinito è 00:00:02.

flowControlEnabled

Valore booleano che indica se è attivato il controllo di flusso avanzato, un'implementazione specifica di Microsoft del controllo di flusso per WS-Affidabile Messaging. L'impostazione predefinita è true.

inactivityTimeout

Valore TimeSpan che specifica la durata massima durante la quale il canale consente all'altra parte della comunicazione di non inviare messaggi prima di generare un errore per il canale. Il valore predefinito è 00:10:00.

L'attività in un canale viene definita come ricezione di messaggi di un'applicazione o di un'infrastruttura. Questa proprietà controlla la durata massima in attività di una sessione inattiva. Se il periodo di inattività è più lungo, la sessione viene interrotta dall'infrastruttura e viene generato un errore per il canale.

Nota

Per tenere attiva la connessione non è necessario che l'applicazione invii periodicamente messaggi.

maxPendingChannels

Numero intero che specifica il numero massimo di canali che possono attendere nel listener prima di essere accettati. Questo valore deve essere compreso tra 1 e 16384 inclusi. L'impostazione predefinita è 4.

I canali sono in sospeso quando attendono di essere accettati. Una volta che tale limite viene raggiunto, non vengono creati canali. Invece, questi vengono impostati in modalità sospesa finché questo numero non diminuisce, accettando i canali in sospeso. Si tratta di un limite per-factory.

Quando la soglia viene raggiunta e un'applicazione remota tenta di stabilire una nuova sessione affidabile, la richiesta è negata e l'operazione di apertura che ha inviato la richiesta produce un errore. Questo limite non si applica al numero di canali in uscita in sospeso.

maxRetryCount

Numero intero che specifica il numero massimo di tentativi di ritrasmissione di un messaggio per il quale un canale affidabile non ha ricevuto un riconoscimento, tramite una chiamata a Send sul canale sottostante.

Questo valore deve essere maggiore di zero. L'impostazione predefinita è 8.

Il valore deve essere un intero maggiore di zero. Se non viene ricevuto un riconoscimento dopo l'ultima ritrasmissione, il canale genera un errore.

Un messaggio è considerato trasferito se il recapito al destinatario è stato dato riconosciuto dal destinatario.

Se entro una certa quantità di tempo non è stato ricevuto un riconoscimento per un messaggio trasmesso, l'infrastruttura lo ritrasmette automaticamente. L'infrastruttura tenta a reinviare il messaggio almeno per il numero di volte specificato da questa proprietà. Se non viene ricevuto un riconoscimento dopo l'ultima ritrasmissione, il canale genera un errore.

L'infrastruttura utilizza un algoritmo di interruzione temporanea esponenziale per determinare quando ritrasmettere, in base a un tempo medio di andata e ritorno calcolato. Il periodo parte inizialmente 1 secondo prima della ritrasmissione e raddoppiando il ritardo con ogni tentativo, che si traduce approssimativamente in 8,5 minuti tra il primo tentativo della trasmissione e l'ultimo. Il momento del primo tentativo del ritrasmissione viene regolato di conseguenza in base al tempo di andata e ritorno calcolato e l-adattamento temporale richiesto da tali tentativi varia di conseguenza. Questo consente di adattare dinamicamente il tempo di ritrasmissione alle mutevoli condizioni della rete.

maxTransferWindowSize

[out] Valore intero che specifica la dimensione massima del buffer. I valori validi sono compresi tra 1 e 4096 inclusi.

Sul client, questo attributo definisce la dimensione massima del buffer utilizzata da un canale affidabile per contenere i messaggi non riconosciuti dal ricevitore. L'unità della quota è un messaggio. Se il buffer è pieno, ulteriori operazioni SNED vengono bloccate.

Sul ricevitore, questo attributo definisce la dimensione massima del buffer utilizzata dal canale per memorizzare i messaggi non ancora inviati all'applicazione. Se il buffer è pieno, ulteriori messaggi vengono rilasciati silenziosamente dal ricevitore e richiedono la ritrasmissione da parte del client.

ordered

Valore booleano che specifica se viene garantito l'arrivo dei messaggi nell'ordine in cui sono stati inviati. Se l'impostazione è false, i messaggi possono arrivare in qualsiasi ordine. L'impostazione predefinita è true.

reliableMessagingVersion

Un valore valido da ReliableMessagingVersion che specifica la versione di WS-ReliableMessaging da utilizzare.

Elementi figlio

Nessuno

Elementi padre

Elemento Descrizione

<associazione>

Definisce tutte le funzionalità di associazione dell'associazione personalizzata.

Osservazioni

Sessioni affidabili forniscono funzionalità per la messaggistica affidabile e le sessioni. La messaggistica affidabile ritenta la comunicazione in caso di errore e consente di specificare assicurazioni del recapito quali l'arrivo nell'ordine di invio dei messaggi. Le sessioni gestiscono stato per i client tra le chiamate. Questo elemento fornisce inoltre il recapito ordinato dei messaggi (facoltativo). Questa sessione implementata può attraversare intermediari SOAP e di trasporto.

Ogni elemento di associazione rappresenta una fase di elaborazione durante l'invio o la ricezione di messaggi. In fase di esecuzione gli elementi di associazione creano le channel factory e i listener necessari per compilare stack di canali in uscita e in ingresso richiesti per l'invio e la ricezione di messaggi. La classe reliableSession fornisce un livello facoltativo nello stack che può stabilire una sessione affidabile tra endpoint e configurare il comportamento di questa sessione.

Per ulteriori informazioni, vedere Reliable Sessions.

Esempio

Nell'esempio seguente è dimostrato come configurare un'associazione personalizzata con vari elementi di codifica di trasporto e messaggio, in particolare l'attivazione di sessioni affidabili, che mantiene lo stato client e specifica assicurazioni di recapito nell'ordine. Questa funzionalità è configurata nei file di configurazione dell'applicazione per il client e il servizio. Nell'esempio è illustrata la configurazione del servizio.

<?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: https://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 https://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>

Vedere anche

Riferimenti

<associazionePersonalizzata>
ReliableSessionElement
CustomBinding
ReliableSessionBindingElement

Altre risorse

Reliable Sessions
Windows Communication Foundation Bindings
Extending Bindings
Custom Bindings