<reliableSession>

Definiuje ustawienie dla komunikatów WS-Reliable wiadomości. Po dodaniu tego elementu do powiązania niestandardowego wynikowy kanał może obsługiwać dokładnie jeden raz gwarancji dostarczenia.

Konfiguracji
  System.servicemodel
    Powiązania
      Custombinding
        Wiązania>
          reliableSession>

Składnia

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

Atrybuty i elementy

W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne.

Atrybuty

Atrybut Opis
acknowledgementInterval Element TimeSpan zawierający maksymalny przedział czasu, w którym kanał będzie czekać na wysłanie potwierdzenia dla komunikatów odebranych do tego momentu. Wartość domyślna to 00:00:0.2.
flowControlEnabled Wartość logiczna, która wskazuje, czy zaawansowana kontrola przepływu, specyficzna dla firmy Microsoft implementacja sterowania przepływem dla komunikatów WS-Reliable, jest aktywowana. Wartość domyślna to true.
Inactivitytimeout Wartość TimeSpan określająca maksymalny czas trwania, przez który kanał ma zezwalać innej stronie komunikacyjnej na nie wysyłanie żadnych komunikatów przed błędem kanału. Wartość domyślna to 00:10:00.

Działanie w kanale jest definiowane jako odbieranie komunikatów aplikacji lub infrastruktury. Ta właściwość kontroluje maksymalny czas utrzymania aktywności nieaktywnej sesji. Jeśli dłuższy czas minie bez aktywności, sesja zostanie przerwana przez infrastrukturę i błędy kanału. Uwaga: Aplikacja nie musi okresowo wysyłać komunikatów w celu utrzymania aktywności połączenia.
maxPendingChannels Liczba całkowita określająca maksymalną liczbę kanałów, które mogą czekać na zaakceptowanie odbiornika. Ta wartość powinna być zerowa od 1 do 16384 włącznie. Wartość domyślna to 4.

Kanały oczekują, gdy oczekują na zaakceptowanie. Po osiągnięciu tego limitu nie są tworzone żadne kanały. Zamiast tego są one w trybie oczekiwania, dopóki ta liczba nie zejdzie (akceptując oczekujące kanały). Jest to limit dla 1 fabryki.

Gdy próg zostanie osiągnięty, a aplikacja zdalna spróbuje ustanowić nową niezawodną sesję, żądanie zostanie odrzucone i otwarta operacja, która wyświetliła te błędy. Ten limit nie dotyczy liczby oczekujących kanałów wychodzących.
maxRetryCount Liczba całkowita określająca maksymalną liczbę prób ponownego przesłania komunikatu, dla których niezawodny kanał próbuje przesłać ponownie komunikat, dla których nie odebrał potwierdzenia, wywołując wywołanie funkcji Wyślij na bazowym kanale.

Ta wartość powinna być większa od zera. Wartość domyślna to 8.

Ta wartość powinna być liczbą całkowitą większą od zera. Jeśli potwierdzenie nie zostanie odebrane po ostatnim retransmisji, kanał będzie się awarii.

Wiadomość jest uważana za przeniesioną, jeśli jej dostarczenie u odbiorcy zostało potwierdzone przez odbiorcę.

Jeśli potwierdzenie nie zostało odebrane w określonym czasie dla wiadomości, która została przesłana, infrastruktura automatycznie ponownie przesyła komunikat. Infrastruktura próbuje ponownie wysłać komunikat najwyżej przez liczbę razy określoną przez tę właściwość. Jeśli potwierdzenie nie zostanie odebrane po ostatnim retransmisji, kanał będzie się awarii.

Infrastruktura używa algorytmu wykładniczego odgałęzienia, aby określić, kiedy należy ponownie przesłać, na podstawie obliczonego średniego czasu rundy. Czas początkowo rozpoczyna się od 1 sekundy przed retransmisją i podwaja opóźnienie przy każdej próbie, co powoduje około 8,5 minuty przejścia między pierwszą próbą transmisji a ostatnią próbą ponownego przetransmisji. Czas pierwszej próby ponownego przetransmisji jest dostosowywany zgodnie z obliczonym czasem rundy, a wynikowy czas, który te próby odbywają się, odpowiednio się zmienia. Dzięki temu czas retransmisji może dynamicznie dostosowywać się do różnych warunków sieciowych.
maxTransferWindowSize Liczba całkowita określająca maksymalny rozmiar buforu. Prawidłowe wartości to od 1 do 4096 włącznie.

Na kliencie ten atrybut definiuje maksymalny rozmiar buforu używanego przez niezawodny kanał do przechowywania komunikatów, które nie zostały jeszcze potwierdzone przez odbiornik. Jednostka limitu przydziału jest komunikatem. Jeśli bufor jest pełny, dalsze operacje SEND są blokowane.

W odbiorniku ten atrybut definiuje maksymalny rozmiar buforu używanego przez kanał do przechowywania komunikatów przychodzących, które nie zostały jeszcze wysłane do aplikacji. Jeśli bufor jest pełny, dalsze komunikaty są dyskretnie porzucane przez odbiornik i wymagają ponownego przesłania przez klienta.
uporządkowany Wartość logiczna określająca, czy komunikaty mają gwarancję, że dotrą w kolejności ich wysłania. Jeśli to ustawienie ma ustawienie false, komunikaty mogą być odbierane w sposób nieumiejętny. Wartość domyślna to true.
reliableMessagingVersion Prawidłowa wartość z ReliableMessagingVersion , która określa WS-ReliableMessaging wersji, która ma być używana.

Elementy podrzędne

Brak

Elementy nadrzędne

Element Opis
Wiązania> Definiuje wszystkie możliwości powiązania powiązania niestandardowego.

Uwagi

Niezawodne sesje zapewniają funkcje niezawodnej obsługi komunikatów i sesji. Niezawodna obsługa komunikatów ponowna komunikacja w przypadku awarii i umożliwia zapewnienie dostarczenia komunikatów, takich jak kolejność dostarczania komunikatów. Sesje utrzymują stan klientów między wywołaniami. Ten element opcjonalnie zapewnia również uporządkowane dostarczanie komunikatów. Ta zaimplementowana sesja może krzyżować pośredników protokołu SOAP i transportu.

Każdy element powiązania reprezentuje krok przetwarzania podczas wysyłania lub odbierania komunikatów. W czasie działania elementy powiązania tworzą fabryki kanałów i odbiorniki, które są niezbędne do tworzenia stosów kanałów wychodzących i przychodzących wymaganych do wysyłania i odbierania komunikatów. Zapewnia reliableSession opcjonalną warstwę w stosie, która może ustanowić niezawodną sesję między punktami końcowymi i skonfigurować zachowanie tej sesji.

Aby uzyskać więcej informacji, zobacz Sesje niezawodne.

Przykład

W poniższym przykładzie pokazano, jak skonfigurować niestandardowe powiązanie z różnymi elementami transportu i kodowania komunikatów, szczególnie włączając niezawodne sesje, które utrzymują stan klienta i określają gwarancje dostarczania w poszczególnych kolejnościach. Ta funkcja jest konfigurowana w plikach konfiguracji aplikacji dla klienta i usługi. Przykład pokazuje konfigurację usługi.

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

Zobacz też