<reliableSession>

Définit le paramètre pour la messagerie WS-Reliable. Lorsque cet élément est ajouté à une liaison personnalisée, le canal résultant peut prendre en charge des assurances de remise EOD (Exactly-Once-Delivery).

<configuration>
  <system.serviceModel>
    <liaisons>
      <customBinding>
        <binding>
          <reliableSession>

Syntaxe

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

Attributs et éléments

Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.

Attributs

Attribut Description
acknowledgementInterval TimeSpan qui contient l'intervalle de temps maximum pendant lequel le canal doit attendre avant d'envoyer un accusé de réception pour les messages reçus jusqu'alors. La valeur par défaut est 00:00:0.2.
flowControlEnabled Valeur booléenne qui indique si le contrôle de flux avancé (une implémentation du contrôle de flux de la messagerie WS-Reliable spécifique à Microsoft) est activé. Par défaut, il s’agit de true.
inactivityTimeout TimeSpan qui spécifie la durée maximale pendant laquelle le canal autorisera l'autre partie communicante à ne pas envoyer de messages avant qu'une erreur soit provoquée sur le canal. La valeur par défaut est 00:10:00.

L'activité sur un canal est définie comme étant la réception de messages d'application ou d'infrastructure. Cette propriété contrôle la durée maximale d'activation d'une session inactive. En cas de durée supérieure sans activité, la session est abandonnée par l'infrastructure et une erreur est provoquée sur le canal. Remarque : Il n’est pas nécessaire que l’application envoie régulièrement des messages pour que la connexion reste active.
maxPendingChannels Entier qui spécifie le nombre maximal de canaux en attente d'être acceptés sur l'écouteur. Cette valeur doit être comprise entre 1 et 16 384 inclus. Valeur par défaut : 4.

Les canaux sont en attente lorsqu'ils attendent d'être acceptés. Une fois que cette limite est atteinte, aucun canal n'est créé. Au contraire, ils sont mis en mode d'attente jusqu'à ce que ce nombre se réduise (en acceptant des canaux en attente). Cette limite dépend des fabriques.

Lorsque le seuil est atteint et qu'une application distante essaie d'établir une nouvelle session fiable, la demande est refusée et l'opération d'ouverture initiale notifie l'erreur. Cette limite ne s'applique pas au nombre de canaux sortants en attente.
maxRetryCount Entier qui spécifie le nombre maximal de tentatives effectuées par un canal fiable pour retransmettre un message pour lequel il n'a pas reçu d'accusé de réception en appelant Send sur son canal sous-jacent.

Cette valeur doit être supérieure à zéro. La valeur par défaut est 8.

Cette valeur doit être un entier supérieur à zéro. Si aucun accusé de réception n'est reçu après la dernière retransmission, le canal notifie l'erreur.

Un message est considéré comme devant être transféré si sa remise au destinataire a été acceptée par le destinataire.

Si, pour un message ayant été transmis, aucun accusé de réception n'a été reçu après un certain temps, l'infrastructure retransmet automatiquement le message. L'infrastructure essaie de renvoyer le message à autant de reprises que celles spécifiées par cette propriété. Si aucun accusé de réception n'est reçu après la dernière retransmission, le canal notifie l'erreur.

L'infrastructure utilise un algorithme de réduction de puissance exponentiel pour déterminer quand retransmettre, selon un délai aller-retour moyen calculé. Ce délai démarre initialement 1 seconde avant la retransmission et, le délai doublant à chaque tentative, le délai écoulé entre la première et la dernière tentative de retransmission est d'environ 8,5 minutes. Le délai de la première tentative de retransmission est ajusté au délai aller-retour calculé et le décalage créé par ces tentatives varie en conséquence. Cela permet au délai de retransmission de s'adapter dynamiquement aux conditions de réseau variables.
maxTransferWindowSize Entier qui spécifie la taille maximale de la mémoire tampon. Les valeurs autorisées sont comprises entre 1 et 4 096 (inclus).

Pour le client, cet attribut définit la taille maximale de la mémoire tampon utilisée par un canal fiable pour contenir les messages n'ayant pas encore été acceptés par le récepteur. L'unité du quota est un message. Si la mémoire tampon est pleine, les opérations SEND suivantes sont bloquées.

Pour le récepteur, cet attribut définit la taille maximale de la mémoire tampon utilisée par le canal pour stocker les messages entrants n'ayant pas encore été distribués dans l'application. Si la mémoire tampon est pleine, les messages suivants sont supprimés de manière silencieuse par le récepteur et doivent être retransmis par le client.
ordered Valeur booléenne qui spécifie s'il est garanti que les messages arrivent dans l'ordre dans lequel ils ont été envoyés. Si ce paramètre est false, les messages peuvent arriver dans le désordre. Par défaut, il s’agit de true.
reliableMessagingVersion Valeur autorisée de ReliableMessagingVersion qui spécifie la version de messagerie WS-Reliable à utiliser.

Éléments enfants

None

Éléments parents

Élément Description
<binding> Définit toutes les fonctions de liaison d’une liaison personnalisée.

Notes

Les sessions fiables fournissent des fonctionnalités pour une messagerie et des sessions fiables. La messagerie fiable réessaie d'établir la communication en cas d'échec et permet de spécifier des assurances de remise telles que l'ordre d'arrivée des messages. Les sessions conservent l'état pour les clients entre les appels. Cet élément assure également en option la remise de messages ordonnés. Cette session implémentée peut croiser des intermédiaires SOAP et de transport.

Chaque élément de liaison représente une étape de traitement lors de l’envoi ou de la réception des messages. Au moment de l’exécution, les éléments de liaison créent les fabriques et écouteurs de canaux nécessaires pour générer les piles de canaux sortants et entrants requis pour envoyer et recevoir des messages. Le reliableSession fournit une couche facultative dans la pile capable d'établir une session fiable entre des points de terminaison et de configurer le comportement de cette session.

Pour plus d’informations, consultez Sessions fiables.

Exemple

L’exemple suivant montre comment configurer une liaison personnalisée avec plusieurs éléments de transport et d’encodage de message, en activant surtout des sessions fiables qui maintiennent l’état du client et spécifient des assurances de remise dans l’ordre. Cette fonctionnalité est configurée dans les fichiers de configuration de l'application pour le client et le service. L'exemple présente la configuration du service.

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

Voir aussi