Dela via


<reliableSession>

Definierar inställningen för WS-Reliable Messaging. När det här elementet läggs till i en anpassad bindning kan den resulterande kanalen ha stöd för leveransgarantier exakt en gång.

<Konfiguration>
  <system.serviceModel>
    <Bindningar>
      <customBinding>
        <Bindande>
          <reliableSession>

Syntax

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

Attribut och element

I följande avsnitt beskrivs attribut, underordnade element och överordnade element.

Attribut

Attribut Beskrivning
acknowledgementInterval En TimeSpan som innehåller det maximala tidsintervall som kanalen kommer att vänta på att skicka en bekräftelse för meddelanden som tagits emot fram till den punkten. Standardvärdet är 00:00:0.2.
flowControlEnabled Ett booleskt värde som anger om avancerad flödeskontroll, en Microsoft-specifik implementering av flödeskontroll för WS-Reliable meddelanden, aktiveras. Standardvärdet är true.
inactivityTimeout En TimeSpan som anger den maximala varaktighet som kanalen kommer att tillåta att den andra kommunikationsparten inte skickar några meddelanden innan den felar kanalen. Standardvärdet är 00:10:00.

Aktivitet på en kanal definieras som att ta emot ett program- eller infrastrukturmeddelanden. Den här egenskapen styr den maximala tiden för att hålla en inaktiv session aktiv. Om tiden går utan aktivitet avbryts sessionen av infrastrukturen och kanalfelen. Observera: Det är inte nödvändigt att programmet regelbundet skickar meddelanden för att hålla anslutningen aktiv.
maxPendingChannels Ett heltal som anger det maximala antalet kanaler som kan vänta på att lyssnaren ska accepteras. Det här värdet ska vara mellan 1 och 16384. Standardvärdet är 4.

Kanaler väntar när de väntar på att accepteras. När gränsen har nåtts skapas inga kanaler. I stället försätts de i väntande läge tills det här numret går ned (genom att acceptera väntande kanaler). Det här är en gräns per fabrik.

När tröskelvärdet nås och ett fjärrprogram försöker upprätta en ny tillförlitlig session nekas begäran och den öppna åtgärd som ledde till felet. Den här gränsen gäller inte för antalet väntande utgående kanaler.
maxRetryCount Ett heltal som anger det maximala antalet gånger som en tillförlitlig kanal försöker återsända ett meddelande som den inte har fått någon bekräftelse för, genom att anropa Skicka på den underliggande kanalen.

Det här värdet ska vara större än noll. Standardvärdet är 8.

Det här värdet ska vara ett heltal större än noll. Om en bekräftelse inte tas emot efter den senaste omsändningen felar kanalen.

Ett meddelande anses vara överfört om leveransen till mottagaren har bekräftats av mottagaren.

Om en bekräftelse inte har tagits emot inom en viss tidsperiod för ett meddelande som har överförts, skickar infrastrukturen automatiskt meddelandet igen. Infrastrukturen försöker skicka meddelandet igen för högst det antal gånger som anges av den här egenskapen. Om en bekräftelse inte tas emot efter den senaste omsändningen felar kanalen.

Infrastrukturen använder en exponentiell backoff-algoritm för att avgöra när den ska överföras på nytt, baserat på en beräknad genomsnittlig tur- och returtid. Tiden börjar initialt vid 1 sekund före återsändning och fördubbling av fördröjningen med varje försök, vilket resulterar i cirka 8,5 minuter som passerar mellan det första överföringsförsöket och det sista återsändningsförsöket. Tiden för det första återsändningsförsöket justeras enligt den beräknade tur- och returtiden och den resulterande tidsintervallet som dessa försök tar varierar beroende på detta. På så sätt kan återsändningstiden anpassas dynamiskt till olika nätverksförhållanden.
maxTransferWindowSize Ett heltal som anger buffertens maximala storlek. Giltiga värden är mellan 1 och 4096.

På klienten definierar det här attributet den maximala storleken på bufferten som används av en tillförlitlig kanal för att lagra meddelanden som ännu inte bekräftats av mottagaren. Kvotens enhet är ett meddelande. Om bufferten är full blockeras ytterligare SEND-åtgärder.

På mottagaren definierar det här attributet den maximala storleken på bufferten som används av kanalen för att lagra inkommande meddelanden som ännu inte skickats till programmet. Om bufferten är full släpps ytterligare meddelanden tyst av mottagaren och kräver återsändning av klienten.
sorterad Ett booleskt värde som anger om meddelanden garanterat tas emot i den ordning de skickades. Om den här inställningen är falsekan meddelanden tas emot i fel ordning. Standardvärdet är true.
reliableMessagingVersion Ett giltigt värde från ReliableMessagingVersion som anger den WS-ReliableMessaging version som ska användas.

Underordnade element

Ingen

Överordnade element

Element Beskrivning
<Bindande> Definierar alla bindningsfunktioner för den anpassade bindningen.

Kommentarer

Tillförlitliga sessioner tillhandahåller funktioner för tillförlitliga meddelanden och sessioner. Tillförlitliga meddelanden försöker kommunicera igen vid fel och gör det möjligt att ange leveransgarantier, till exempel att meddelandena kommer in i ordning. Sessioner underhåller tillstånd för klienter mellan anrop. Det här elementet kan även tillhandahålla ordnad meddelandeleverans. Den här implementerade sessionen kan korsa SOAP och transportförmedlare.

Varje bindningselement representerar ett bearbetningssteg när meddelanden skickas eller tas emot. Vid körning skapar bindningselement de kanalfabriker och lyssnare som krävs för att skapa utgående och inkommande kanalstackar som krävs för att skicka och ta emot meddelanden. reliableSession tillhandahåller ett valfritt lager i stacken som kan upprätta en tillförlitlig session mellan slutpunkter och konfigurera beteendet för den här sessionen.

Mer information finns i Tillförlitliga sessioner.

Exempel

I följande exempel visas hur du konfigurerar en anpassad bindning med olika transport- och meddelandekodningselement, särskilt när tillförlitliga sessioner aktiveras, vilket upprätthåller klienttillståndet och anger leveransgarantier i ordning. Den här funktionen konfigureras i programkonfigurationsfilerna för klienten och tjänsten. Exemplet visar tjänstkonfigurationen.

<?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>

Se även