Partager via


Service de routage

Le service de routage est un intermédiaire SOAP générique qui agit en tant que routeur de messages. La fonctionnalité principale du service de routage est la possibilité de router des messages en fonction du contenu des messages ; un message peut ainsi être envoyé à un point de terminaison client en fonction d'une valeur située à l'intérieur du message, soit dans l'en-tête, soit dans le corps du message.

L'objet RoutingService est implémenté en tant que service WCF dans l'espace de noms System.ServiceModel.Routing. Le service de routage expose un ou plusieurs points de terminaison de service qui reçoivent des messages, puis routent chaque message vers un ou plusieurs points de terminaison client en fonction du contenu du message. Le service offre les fonctionnalités suivantes :

  • Routage basé sur le contenu

    • Configuration dynamique
  • Pontage de protocoles

  • Traitement SOAP

  • Gestion avancée des erreurs

Routage basé sur le contenu

Pour implémenter le routage basé sur le contenu, le service de routage s'appuie sur les implémentations MessageFilter utilisées pour établir une correspondance avec les valeurs spécifiques contenues dans les messages à router. Si un MessageFilter correspond à un message, le message est routé vers le point de terminaison de destination associé au MessageFilter. Les filtres de message sont regroupés dans des tables de filtres (FilterTableCollection) pour construire une logique de routage complexe. Par exemple, une table de filtres peut contenir cinq filtres de message s'excluant mutuellement, qui orientent le routage des messages vers un seul des cinq points de terminaison de destination.

En regroupant des filtres de message dans des tables de filtres, vous pouvez construire une logique de routage permettant de gérer plusieurs scénarios de routage, tels que les suivants :

  • Agrégation de service

  • Contrôle des versions du service

  • Routage par priorité

Pour plus d'informations sur les filtres de message et les tables de filtres, consultez Introduction au routage et Filtres de message.

Configuration dynamique

Pour prendre en charge des systèmes fondamentaux, où les messages doivent être traités sans interruption de service, il est essentiel de pouvoir modifier la configuration des composants dans le système au moment de l'exécution. Pour prendre en charge ce besoin, le service de routage fournit une implémentation IExtension, l'objet RoutingExtension, qui permet une mise à jour dynamique de la configuration du service de routage au moment de l'exécution.

Pour plus d'informations sur la configuration dynamique du service de routage, consultez Introduction au routage.

Pontage de protocoles

Pour prendre en charge le routage de messages entre des points de terminaison avec des transports différents, le service de routage utilise des liaisons fournies par le système qui permettent au service de lier des protocoles hétérogènes. Ce pontage s'effectue automatiquement lorsque le point de terminaison de service exposé par le service de routage utilise un autre protocole que les points de terminaison clients vers lesquels les messages sont routés.

Traitement SOAP

Un besoin de routage courant est la possibilité de router des messages entre des points de terminaison ayant des spécifications SOAP différentes. Pour prendre en charge ce besoin, le service de routage fournit un objet SoapProcessingBehavior qui crée automatiquement une nouvelle version MessageVersion répondant aux spécifications du point de terminaison de destination avant que le message ne soit routé vers lui. Ce comportement crée également une nouvelle version MessageVersion pour le message de réponse avant qu'il soit retourné à l'application cliente demandeuse, afin de garantir que la version MessageVersion de la réponse correspond à celle de la demande d'origine.

Pour plus d'informations sur le traitement SOAP, consultez Introduction au routage.

Gestion des erreurs

Dans un système composé de services distribués reposant sur des communications réseau, il est important de s'assurer que les communications dans votre système résistent aux pannes réseau temporaires. Le service de routage implémente une gestion des erreurs qui permet de gérer de nombreux scénarios de défaillance de communication risquant de provoquer une interruption de service.

Si le service de routage rencontre une exception CommunicationException en essayant d'envoyer un message, la gestion des erreurs intervient. Ces exceptions indiquent en général qu'un problème s'est produit lors de la tentative de communication avec le point de terminaison client défini ; il peut s'agir d'une exception EndpointNotFoundException, ServerTooBusyException ou CommunicationObjectFaultedException. Le code de gestion des erreurs intercepte également l'envoi et tente de le relancer lorsqu'il se produit une exception TimeoutException, qui est une autre exception courante non dérivée de CommunicationException.

Pour plus d'informations sur la gestion des erreurs, consultez Introduction au routage.

Points de terminaison de sauvegarde

En plus des points de terminaison clients de destination associés à chaque définition de filtre dans la table de filtres, vous pouvez également créer une liste de points de terminaison de sauvegarde, vers lesquels le message sera routé en cas d'échec de transmission. Si une erreur se produit et qu'une liste de sauvegarde est définie pour l'entrée de filtre, le service de routage essaie d'envoyer le message au premier point de terminaison défini dans la liste. Si cette tentative de transmission échoue, le service essaie le point de terminaison suivant et continue ce processus jusqu'à ce que la tentative de transmission réussisse, retourne une erreur non liée à la transmission ou que tous les points de terminaison de la liste de sauvegarde aient retourné une erreur de transmission.

Pour plus d'informations sur les points de terminaison de sauvegarde, consultez Introduction au routage et Filtres de message.

Voir aussi

Concepts

Introduction au routage
Contrats de routage
Filtres de message