<reliableSession>
Definuje nastavení pro zasílání zpráv WS-Reliable. Když je tento prvek přidán do vlastní vazby, výsledný kanál může podporovat přesně jednou záruky doručení.
<Konfigurace>
<System.servicemodel>
<Vazby>
<customBinding>
<Vazba>
<reliableSession>
Syntax
<reliableSession acknowledgementInterval="TimeSpan"
flowControlEnabled="Boolean"
inactivityTimeout="TimeSpan"
maxPendingChannels="Integer"
maxRetryCount="Integer"
maxTransferWindowSize="Integer"
reliableMessagingVersion="Default/WSReliableMessagingFebruary2005/WSReliableMessaging11"
ordered="Boolean" />
Atributy a elementy
Následující části popisují atributy, podřízené prvky a nadřazené prvky.
Atributy
Atribut | Popis |
---|---|
acknowledgementInterval | A TimeSpan obsahující maximální časový interval, který kanál čeká na odeslání potvrzení pro zprávy přijaté do tohoto okamžiku. Výchozí hodnota je 00:00:0.2. |
flowControlEnabled | Logická hodnota, která označuje, jestli je aktivováno pokročilé řízení toku, což je implementace řízení toku specifická pro Microsoft pro WS-Reliable zasílání zpráv. Výchozí formát je true . |
inactivityTimeout | A TimeSpan , která určuje maximální dobu, po kterou kanál umožní druhé komunikační straně, aby neodesílala žádné zprávy před chybou kanálu. Výchozí hodnota je 00:10:00. Aktivita v kanálu je definována jako příjem zpráv aplikace nebo infrastruktury. Tato vlastnost řídí maximální dobu, po kterou bude neaktivní relace aktivní. Pokud uplyne delší doba bez aktivity, je relace přerušena infrastrukturou a chybami kanálu. Poznámka: Není nutné, aby aplikace pravidelně odesílala zprávy, aby připojení zůstalo aktivní. |
maxPendingChannels | Celé číslo, které určuje maximální počet kanálů, které mohou čekat na přijetí naslouchacího procesu. Tato hodnota by měla být od 1 do 16384 včetně. Výchozí hodnota je 4. Kanály čekají na přijetí. Po dosažení limitu se nevytvořily žádné kanály. Místo toho se přepnou do režimu čekání, dokud toto číslo neklyne (přijetím čekajících kanálů). Jedná se o limit pro každou továrnu. Když je dosaženo prahové hodnoty a vzdálená aplikace se pokusí vytvořit novou spolehlivou relaci, požadavek se zamítá a operace otevření, která tuto chybu vyzve. Toto omezení se nevztahuje na počet čekajících odchozích kanálů. |
maxRetryCount | Celé číslo, které určuje maximální počet pokusů spolehlivého kanálu o opětovný přenos zprávy, pro kterou neobdržel potvrzení voláním odeslat v podkladovém kanálu. Tato hodnota by měla být větší než nula. Výchozí hodnota je 8. Tato hodnota by měla být celé číslo větší než nula. Pokud potvrzení není přijato po posledním opětovném přenosu, kanál bude chybný. Zpráva se považuje za přenesenou, pokud příjemce potvrdil její doručení příjemci. Pokud potvrzení pro zprávu, která byla odeslána, nebyla přijata během určitého času, infrastruktura zprávu automaticky znovu přenese. Infrastruktura se pokusí zprávu znovu odeslat maximálně po dobu určenou touto vlastností. Pokud potvrzení není přijato po posledním opětovném přenosu, kanál bude chybný. Infrastruktura na základě vypočítané průměrné doby odezvy používá exponenciální algoritmus pro zpětný přenos. Čas začíná na 1 sekundu před opakovaným přenosem a zdvojnásobí zpoždění při každém pokusu, což má za následek přibližně 8,5 minuty mezi prvním pokusem o přenos a posledním pokusem o přenos. Čas prvního pokusu o opakovaný přenos se upraví podle vypočítané doby odezvy a výsledného časového úseku, který tyto pokusy zaberou, se odpovídajícím způsobem liší. To umožňuje, aby se doba přenosu dynamicky přizpůsobila různým podmínkám sítě. |
maxTransferWindowSize | Celé číslo, které určuje maximální velikost vyrovnávací paměti. Platné hodnoty jsou od 1 do 4096 včetně. Na klientovi tento atribut definuje maximální velikost vyrovnávací paměti používané spolehlivým kanálem k uložení zpráv, které příjemce ještě nepotvrdil. Jednotkou kvóty je zpráva. Pokud je vyrovnávací paměť plná, zablokují se další operace SEND. U příjemce tento atribut definuje maximální velikost vyrovnávací paměti používané kanálem k ukládání příchozích zpráv, které ještě nebyly odeslány do aplikace. Pokud je vyrovnávací paměť zaplněná, příjemce bezobslužně vyřadí další zprávy a klient vyžaduje opakovaný přenos. |
ordered | Logická hodnota, která určuje, jestli mají zprávy zaručené doručení v pořadí, v jakém byly odeslány. Pokud je false toto nastavení nastaveno, můžou zprávy dorazit mimo pořadí. Výchozí formát je true . |
reliableMessagingVersion | Platná hodnota z ReliableMessagingVersion , která určuje WS-ReliableMessaging verzi, která se má použít. |
Podřízené elementy
Žádné
Nadřazené elementy
Element | Popis |
---|---|
<Vazba> | Definuje všechny možnosti vazby vlastní vazby. |
Poznámky
Spolehlivé relace poskytují funkce pro spolehlivé zasílání zpráv a relace. Spolehlivé zasílání zpráv opakuje komunikaci při selhání a umožňuje zadat záruky doručení, jako je doručení zpráv v pořadí. Relace udržují stav klientů mezi voláními. Tento prvek také volitelně poskytuje objednané doručení zprávy. Tato implementovaná relace může překračovat protokol SOAP a dopravní zprostředkovatele.
Každý element vazby představuje krok zpracování při odesílání nebo přijímání zpráv. Za běhu vytvářejí prvky vazby továrny kanálů a naslouchací procesy, které jsou nezbytné k vytváření zásobníků odchozích a příchozích kanálů potřebných k odesílání a přijímání zpráv. Poskytuje reliableSession
volitelnou vrstvu v zásobníku, která může vytvořit spolehlivou relaci mezi koncovými body a nakonfigurovat chování této relace.
Další informace najdete v tématu Spolehlivé relace.
Příklad
Následující příklad ukazuje, jak nakonfigurovat vlastní vazbu s různými prvky přenosu a kódování zpráv, zejména povolením spolehlivých relací, která udržuje stav klienta a určuje záruky doručení v pořadí. Tato funkce je nakonfigurovaná v konfiguračních souborech aplikace pro klienta a službu. Příklad ukazuje konfiguraci služby.
<?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>