Megosztás a következőn keresztül:


<reliableSession>

A WS-Reliable Üzenetkezelés beállítását határozza meg. Ha ezt az elemet hozzáadja egy egyéni kötéshez, az eredményként kapott csatorna támogatja a pontosan egyszeri kézbesítési biztosítékokat.

<Konfigurációs>
  <system.serviceModel>
    <Kötések>
      <customBinding>
        <Kötelező>
          <reliableSession>

Syntax

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

Attribútumok és elemek

Az alábbi szakaszok az attribútumokat, a gyermekelemeket és a szülőelemeket ismertetik.

Attribútumok

Attribútum Leírás
acknowledgementInterval Egy TimeSpan , amely a csatorna által megadott maximális időintervallumot tartalmazza, hogy az addig fogadott üzenetekről nyugtát küldjön. Az alapértelmezett érték 00:00:0.2.
flowControlEnabled Logikai érték, amely azt jelzi, hogy aktiválva van-e a speciális folyamatvezérlés, a WS-Reliable üzenetküldés folyamatvezérlésének Microsoft-specifikus implementációja. A mező alapértelmezett értéke: true.
inactivityTimeout A TimeSpan , amely meghatározza azt a maximális időtartamot, amellyel a csatorna lehetővé teszi, hogy a másik kommunikációs fél ne küldjön üzeneteket a csatorna hibája előtt. Az alapértelmezett érték 00:10:00.

A csatornán végzett tevékenység alkalmazás- vagy infrastruktúraüzenetek fogadásaként van definiálva. Ez a tulajdonság szabályozza az inaktív munkamenetek életben tartásához szükséges maximális időtartamot. Ha hosszabb idő telik el tevékenység nélkül, az infrastruktúra és a csatorna hibái megszakítják a munkamenetet. Megjegyzés: Nem szükséges, hogy az alkalmazás rendszeres időközönként üzeneteket küldjön a kapcsolat életben tartásához.
maxPendingChannels Egy egész szám, amely meghatározza, hogy legfeljebb hány csatorna várakozhat a figyelő elfogadására. Ennek az értéknek 1 és 16384 közé kell esnie, beleértve a értéket is. Az alapértelmezett érték 4.

A csatornák függőben vannak, amikor elfogadásra várnak. A korlát elérése után a rendszer nem hoz létre csatornákat. Ehelyett függő módban vannak, amíg ez a szám nem csökken (a függőben lévő csatornák elfogadásával). Ez egy gyári korlát.

Amikor eléri a küszöbértéket, és egy távoli alkalmazás megpróbál létrehozni egy új megbízható munkamenetet, a rendszer elutasítja a kérést, és a hibát kérő nyitott műveletet. Ez a korlát nem vonatkozik a függőben lévő kimenő csatornák számára.
maxRetryCount Egy egész szám, amely meghatározza, hogy egy megbízható csatorna legfeljebb hányszor kísérel meg újraküldni egy üzenetet, amelyről nem kapott nyugtázást. Ehhez hívja meg a Küldés parancsot a mögöttes csatornán.

Ennek az értéknek nullánál nagyobbnak kell lennie. Az alapértelmezett érték 8.

Ennek az értéknek nullánál nagyobb egész számnak kell lennie. Ha a legutóbbi újraküldés után nem érkezik nyugtázás, a csatorna meghibásodik.

Az üzenet akkor minősül átvittnek, ha a címzett nyugtázta a címzettnél történő kézbesítést.

Ha egy továbbított üzenethez bizonyos időn belül nem érkezett nyugtázás, az infrastruktúra automatikusan újraküldi az üzenetet. Az infrastruktúra legfeljebb a tulajdonság által megadott számú alkalommal próbálja újra elküldeni az üzenetet. Ha a legutóbbi újraküldés után nem érkezik nyugtázás, a csatorna meghibásodik.

Az infrastruktúra egy exponenciális háttéralgoritmussal határozza meg, hogy mikor kell újraküldni egy kiszámított átlagos oda-visszaúti idő alapján. Az idő kezdetben 1 másodperccel kezdődik az újraközvetítés előtt, és minden kísérletnél megduplázva a késleltetést, ami körülbelül 8,5 percet eredményez az első továbbítási kísérlet és az utolsó újraközvetítési kísérlet között. Az első újraközvetítési kísérlet időpontja a kiszámított oda-vissza menetidőnek és a próbálkozások eredményül kapott időtartamának megfelelően változik. Ez lehetővé teszi, hogy az újraküldési idő dinamikusan alkalmazkodjon a különböző hálózati feltételekhez.
maxTransferWindowSize A puffer maximális méretét meghatározó egész szám. Az érvényes értékek 1 és 4096 közöttiek.

Az ügyfélen ez az attribútum határozza meg a megbízható csatorna által a fogadó által még nem nyugtázott üzenetek tárolására használt puffer maximális méretét. A kvóta egysége egy üzenet. Ha a puffer megtelt, a további SEND műveletek le lesznek tiltva.

A fogadóban ez az attribútum határozza meg a csatorna által az alkalmazásnak még el nem küldött bejövő üzenetek tárolására használt puffer maximális méretét. Ha a puffer megtelt, a fogadó csendesen elveti a további üzeneteket, és az ügyfélnek újraküldésre van szüksége.
rendezett Logikai érték, amely megadja, hogy az üzenetek biztosan az elküldött sorrendben érkezzenek-e meg. Ha ez a beállítás , az falseüzenetek sorrenden kívül érkezhetnek. A mező alapértelmezett értéke: true.
reliableMessagingVersion Egy érvényes érték, ReliableMessagingVersion amely megadja a használni kívánt WS-ReliableMessaging verziót.

Gyermekelemek

None

Szülőelemek

Elem Leírás
<Kötelező> Meghatározza az egyéni kötés összes kötési képességét.

Megjegyzések

A megbízható munkamenetek megbízható üzenetkezelést és munkameneteket biztosítanak. A megbízható üzenetkezelés újrapróbálkozásokat tesz a sikertelen kommunikációra, és lehetővé teszi a kézbesítési biztosítékok megadását, például az üzenetek érkezésének sorrendjét. A munkamenetek fenntartják az ügyfelek állapotát a hívások között. Ez az elem igény szerint rendezett üzenetkézbesítést is biztosít. Ez a megvalósított munkamenet a SOAP és a közlekedési közvetítők között is áthaladhat.

Minden kötéselem egy feldolgozási lépést jelöl az üzenetek küldésekor vagy fogadásakor. Futásidőben a kötéselemek hozzák létre azokat a csatornagyárakat és figyelőket, amelyek az üzenetek küldéséhez és fogadásához szükséges kimenő és bejövő csatornavermek létrehozásához szükségesek. A reliableSession nem kötelező réteget biztosít a veremben, amely megbízható munkamenetet hozhat létre a végpontok között, és konfigurálhatja ennek a munkamenetnek a viselkedését.

További információt a Reliable Sessions (Megbízható munkamenetek) című témakörben talál.

Példa

Az alábbi példa bemutatja, hogyan konfigurálhat egyéni kötést különböző átviteli és üzenetkódolási elemekkel, különösen a megbízható munkamenetek engedélyezésével, amely fenntartja az ügyfél állapotát, és megadja a rendelés szerinti kézbesítési biztosítékokat. Ez a funkció az ügyfél és a szolgáltatás alkalmazáskonfigurációs fájljaiban van konfigurálva. A példa a szolgáltatáskonfigurációt mutatja be.

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

Lásd még