Sélection d'un codeur de message
Cette rubrique présente les critères de sélection des codeurs de message inclus dans Windows Communication Foundation (WCF) : binaire, texte et MTOM (Message Transmission Optimization Mechanism).
Dans WCF, vous spécifiez comment transférer des données sur un réseau entre des points de terminaison à l'aide d'une liaison composée d'une séquence d'éléments de liaison. Un codeur de message est représenté par un élément de liaison de codage de message dans la pile de liaison. Une liaison inclut des éléments de liaison de protocole facultatifs, tels qu'un élément de liaison de sécurité ou un élément de liaison de messagerie fiable, un élément de liaison de codage de message requis, et un élément de liaison de transport requis.
L'élément de liaison de codage de message se trouve au-dessous des éléments de liaison de protocole facultatifs et au-dessus de l'élément de liaison de transport requis. Sur le côté sortant, un codeur de message sérialise le Message sortant et le transmet au transport. Sur le côté entrant, un codeur de message reçoit le formulaire sérialisé d'un Message du transport et le passe à la couche de protocole supérieure, si celle-ci est présente, ou à l'application, dans le cas contraire.
Lors de la connexion à un client ou serveur préexistant, il se peut que vous n'ayez pas le choix de l'utilisation d'un codage de message spécifique car vous devez coder vos messages conformément à ce que l'autre côté attend. Toutefois, si vous écrivez un service WCF, vous pouvez exposer votre service via plusieurs points de terminaison, chacun d'entre eux utilisant un codage de message différent. Cela permet aux clients de choisir le codage le plus approprié pour communiquer avec votre service sur le point de terminaison le plus adapté pour eux, et à vos clients de choisir le codage le plus adéquat. L'utilisation de plusieurs points de terminaison vous permet également de combiner les avantages de codages de message différents avec d'autres éléments de liaison.
Codeurs fournis par le système
WCF inclut trois codeurs de message représentés par les trois classes suivantes :
- Le codeur de message texte TextMessageEncodingBindingElement prend à la fois en charge le codage XML brut et le codage SOAP. Le mode de codage XML brut du codeur de message texte est appelé POX (Plain Old XML) afin de le distinguer du codage SOAP basé sur le texte. Pour activer le mode POX, affectez la valeur None à la propriété MessageVersion. Utilisez le codeur de message texte pour interagir avec les points de terminaison non-WCF.
- Le codeur de message binaire BinaryMessageEncodingBindingElement utilise un format binaire compact et est optimisé pour la communication WCF vers WCF, et n'est donc pas interopérable. C'est également le codeur le plus performant de tous ceux fournis par WCF.
- L'élément de liaison MTOMMessageEncodingBindingElement spécifie le codage de caractères et le contrôle de version des messages codés avec MTOM. MTOM est une technologie efficace de transmission de données binaires dans les messages WCF. Le codeur MTOM tente de créer un équilibre entre rendement et interopérabilité. Le codage MTOM transmet la plupart du XML sous forme textuelle, mais optimise les blocs de données binaires volumineux en les transmettant tels quels, sans conversion en texte. En termes de rendement, MTOM se situe, parmi les codeurs fournis par WCF, entre le texte (le plus lent) et le binaire (le plus rapide).
Comment choisir un codeur de message
Le tableau suivant décrit les facteurs courants utilisés pour choisi un codeur de message. Donnez la priorité aux facteurs significatifs pour votre application, puis choisissez les codeurs de message qui fonctionnent le mieux avec ceux-ci. Assurez-vous de prendre en compte les facteurs supplémentaires non répertoriés dans ce tableau et les codeurs de message personnalisés qui peuvent s'avérer nécessaires dans votre application.
Facteur | Description | Codeurs qui prennent en charge ce facteur |
---|---|---|
Jeux de caractères pris en charge |
TextMessageEncodingBindingElement et MtomMessageEncodingBindingElement prennent en charge uniquement les codages UTF8 et UTF16 Unicode (avec primauté des octets de poids fort (big-endian) et avec primauté des octets de poids faible (little-endian)). Si d'autres codages sont requis, tel qu'UTF7, ASCII, etc., un codeur personnalisé doit être utilisé. Pour un exemple de codeur personnalisé, consultez https://go.microsoft.com/fwlink/?LinkId=119857 |
Texte |
Inspection |
L'inspection désigne la capacité à examiner des messages pendant la transmission. Les codages de texte, avec ou sans l'utilisation de SOAP, autorisent l'inspection et l'analyse des messages par de nombreuses applications sans l'utilisation d'outils spécialisés. Notez que l'utilisation de sécurité de transfert, au niveau du message ou du transport, affecte votre capacité à inspecter des messages. La confidentialité et l'intégrité empêchent respectivement l'examen et la modification d'un message. |
Texte |
Fiabilité |
La fiabilité désigne la résilience d'un codeur aux erreurs de transmission. La fiabilité peut également être fournie au niveau du message, du transport ou de la couche d'application. Tous les codeurs standard WCF partent du principe qu'une autre couche fournit la fiabilité. Le codeur a peu de possibilité de récupérer d'une erreur de transmission. |
Aucun |
Simplicité |
La simplicité représente la facilité avec laquelle vous pouvez créer des codeurs et décodeurs pour une spécification de codage. Les codages de texte sont particulièrement avantageux en termes de simplicité, et le codage de texte POX présente l'avantage supplémentaire de ne requérir aucune prise en charge pour le traitement SOAP. |
Texte (POX) |
Taille |
Le codage détermine la quantité de charge mémoire imposée sur le contenu. La taille des messages codés est directement associée au débit maximal des opérations de service. Les codages binaires sont en général plus compacts que les codages de texte. Lorsque la taille de message est importante, compressez également le contenu du message lors du codage. Cependant, la compression augmente les coûts de traitement à la fois de l'expéditeur et du récepteur du message. |
Binaire |
Diffusion en continu |
La diffusion en continu permet aux applications de commencer à traiter un message avant qu'il ne soit totalement arrivé. L'utilisation efficace de la diffusion en continu requiert que les données importantes d'un message soient disponibles au début de celui-ci afin que l'application de réception n'ait pas à attendre qu'elles arrivent. De plus, les applications qui utilisent le transfert en continu doivent organiser les données du message de façon incrémentielle afin que le contenu n'ait pas de dépendances ascendantes. Dans de nombreux cas, vous devez trouver un compromis entre diffuser du contenu en continu et avoir la taille de transfert la plus petite possible pour celui-ci. |
Aucune |
Prise en charge des outils tiers |
La prise en charge d'un codage inclut le développement et le diagnostic. Des développeurs tiers ont fait un investissement substantiel dans les bibliothèques et trousses à outils permettant de gérer les messages codés au format POX. |
Texte (POX) |
Interopérabilité |
Ce facteur fait référence à la capacité d'un codeur WCF à interagir avec des services non-WCF. |
Texte MTOM (partiel) |