<reliableSession>
Hiermee definieert u de instelling voor WS-Reliable Messaging. Wanneer dit element wordt toegevoegd aan een aangepaste binding, kan het resulterende kanaal exactly-once-leveringsgaranties ondersteunen.
<Configuratie>
<system.serviceModel>
<Bindings>
<customBinding>
<Bindend>
<reliableSession>
Syntax
<reliableSession acknowledgementInterval="TimeSpan"
flowControlEnabled="Boolean"
inactivityTimeout="TimeSpan"
maxPendingChannels="Integer"
maxRetryCount="Integer"
maxTransferWindowSize="Integer"
reliableMessagingVersion="Default/WSReliableMessagingFebruary2005/WSReliableMessaging11"
ordered="Boolean" />
Kenmerken en elementen
In de volgende secties worden kenmerken, onderliggende elementen en bovenliggende elementen beschreven.
Kenmerken
Kenmerk | Beschrijving |
---|---|
acknowledgementInterval | Een TimeSpan met het maximale tijdsinterval dat het kanaal gaat wachten om een bevestiging te verzenden voor berichten die tot dat moment zijn ontvangen. De standaardwaarde is 00:00:0.2. |
flowControlEnabled | Een Booleaanse waarde die aangeeft of geavanceerd stroombeheer, een microsoft-specifieke implementatie van stroombeheer voor WS-Reliable-berichten, is geactiveerd. De standaardwaarde is true . |
inactivityTimeout | Een TimeSpan die de maximale duur aangeeft die het kanaal toestaat dat de andere communicatiepartij geen berichten verzendt, voordat het kanaal een fout maakt. De standaardwaarde is 00:10:00. Activiteit op een kanaal wordt gedefinieerd als het ontvangen van een toepassing of infrastructuurberichten. Deze eigenschap bepaalt de maximale tijdsduur om een inactieve sessie in leven te houden. Als er langere tijd verstrijkt zonder activiteit, wordt de sessie afgebroken door de infrastructuur en de kanaalfouten. Opmerking: Het is niet nodig dat de toepassing periodiek berichten verzendt om de verbinding actief te houden. |
maxPendingChannels | Een geheel getal dat het maximum aantal kanalen aangeeft dat op de listener kan wachten om te worden geaccepteerd. Deze waarde moet tussen 1 en 16384 liggen. De standaard is 4. Kanalen zijn in behandeling wanneer ze wachten om te worden geaccepteerd. Zodra deze limiet is bereikt, worden er geen kanalen meer gemaakt. In plaats daarvan worden ze in de modus In behandeling geplaatst totdat dit aantal uitvalt (door kanalen in behandeling te accepteren). Dit is een limiet per fabriek. Wanneer de drempelwaarde is bereikt en een externe toepassing probeert een nieuwe betrouwbare sessie tot stand te brengen, wordt de aanvraag geweigerd en wordt de open bewerking die tot deze fout heeft gevraagd, geweigerd. Deze limiet geldt niet voor het aantal in behandeling zijnde uitgaande kanalen. |
maxRetryCount | Een geheel getal dat het maximum aantal keren aangeeft dat een betrouwbaar kanaal probeert een bericht opnieuw te verzenden waarvoor het geen bevestiging heeft ontvangen, door Verzenden aan te roepen op het onderliggende kanaal. Deze waarde moet groter zijn dan nul. De standaardwaarde is 8. Deze waarde moet een geheel getal groter dan nul zijn. Als er geen bevestiging wordt ontvangen na de laatste heruitzending, treedt er een fout op in het kanaal. Een bericht wordt beschouwd als verzonden als de bezorging bij de geadresseerde door de geadresseerde is bevestigd. Als er binnen een bepaalde tijd geen bevestiging is ontvangen voor een bericht dat is verzonden, verzendt de infrastructuur het bericht automatisch opnieuw. De infrastructuur probeert het bericht maximaal het aantal keren dat door deze eigenschap is opgegeven, opnieuw te verzenden. Als er geen bevestiging wordt ontvangen na de laatste heruitzending, treedt er een fout op in het kanaal. De infrastructuur maakt gebruik van een exponentieel back-off-algoritme om te bepalen wanneer opnieuw moet worden verzonden, op basis van een berekende gemiddelde retourtijd. De tijd begint in eerste instantie bij 1 seconde vóór de herverzending en het verdubbelen van de vertraging bij elke poging, wat resulteert in ongeveer 8,5 minuten tussen de eerste verzendpoging en de laatste poging tot opnieuw verzenden. De tijd voor de eerste hertransmissiepoging wordt aangepast op basis van de berekende retourtijd en de resulterende tijdsduur die deze pogingen duren, varieert dienovereenkomstig. Hierdoor kan de hertransmissietijd dynamisch worden aangepast aan verschillende netwerkomstandigheden. |
maxTransferWindowSize | Een geheel getal dat de maximale grootte van de buffer aangeeft. Geldige waarden liggen tussen 1 en 4096. Op de client definieert dit kenmerk de maximale grootte van de buffer die door een betrouwbaar kanaal wordt gebruikt voor het opslaan van berichten die nog niet zijn bevestigd door de ontvanger. De eenheid van het quotum is een bericht. Als de buffer vol is, worden verdere SEND-bewerkingen geblokkeerd. Op de ontvanger definieert dit kenmerk de maximale grootte van de buffer die door het kanaal wordt gebruikt voor het opslaan van binnenkomende berichten die nog niet naar de toepassing zijn verzonden. Als de buffer vol is, worden verdere berichten op de achtergrond verwijderd door de ontvanger en moeten deze opnieuw worden verzonden door de client. |
geordende | Een Booleaanse waarde die aangeeft of berichten gegarandeerd binnenkomen in de volgorde waarin ze zijn verzonden. Als deze instelling is false ingesteld, kunnen berichten niet op volgorde binnenkomen. De standaardwaarde is true . |
reliableMessagingVersion | Een geldige waarde van ReliableMessagingVersion die de WS-ReliableMessaging versie aangeeft die moet worden gebruikt. |
Onderliggende elementen
Geen
Bovenliggende elementen
Element | Beschrijving |
---|---|
<Bindend> | Definieert alle bindingsmogelijkheden van de aangepaste binding. |
Opmerkingen
Betrouwbare sessies bieden functies voor betrouwbare berichten en sessies. Betrouwbare berichten proberen opnieuw te communiceren over fouten en kunnen bezorgingsgaranties, zoals in-order aankomst van berichten, worden opgegeven. Sessies behouden de status voor clients tussen aanroepen. Dit element biedt optioneel ook een geordende bezorging van berichten. Deze geïmplementeerde sessie kan SOAP- en transporttussenpersonen kruisen.
Elk bindingselement vertegenwoordigt een verwerkingsstap bij het verzenden of ontvangen van berichten. Tijdens runtime maken bindingselementen de kanaalfactory's en listeners die nodig zijn voor het bouwen van uitgaande en binnenkomende kanaalstacks die nodig zijn voor het verzenden en ontvangen van berichten. De reliableSession
biedt een optionele laag in de stack die een betrouwbare sessie tussen eindpunten tot stand kan brengen en het gedrag van deze sessie kan configureren.
Zie Reliable Sessions (Betrouwbare sessies) voor meer informatie.
Voorbeeld
In het volgende voorbeeld ziet u hoe u een aangepaste binding configureert met verschillende transport- en berichtcoderingselementen, met name het inschakelen van betrouwbare sessies, waarmee de clientstatus wordt onderhouden en leveringsgaranties in volgorde worden opgegeven. Deze functie wordt geconfigureerd in de toepassingsconfiguratiebestanden voor de client en service. In het voorbeeld ziet u de serviceconfiguratie.
<?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>