Messages BizTalk ServerThe BizTalk Server Message

BizTalk ServerBizTalk Server est un moteur central de traitement des messages. is, at its core, a message-handling engine. Pour comprendre les détails de BizTalk ServerBizTalk Server, il est important de comprendre ce que sont les messages et la façon dont ils sont représentés, stockés et traités par BizTalk Server.To understand the details of BizTalk ServerBizTalk Server, it is important to understand messages and how they are represented, stored, and processed by BizTalk Server. La manière dont BizTalk Server traite les messages vous sera plus claire une fois que vous aurez compris ce qu'est un message.The details of how BizTalk Server works with messages become easier to understand after you have gained an understanding of what a message is.

Dans BizTalk Server, chaque message est considéré comme comportant de zéro à plusieurs parties.Each message in BizTalk Server is considered a multi-part message and is made up of zero or more parts. Dans le cas des messages comportant au moins une partie, l'une de ces parties est identifiée comme le corps du message.Each message with one or more parts has one of these parts identified as the body part. Chaque partie se compose de blocs binaires de données qui peuvent représenter un document XML, un fichier plat, une classe .NET sérialisée ou tout autre flux binaire de données.Each part consists of a binary chunk of data which can represent an XML document, a flat file, a serialized .NET class, or other binary stream of data. Le corps du message sert à identifier le type du message pouvant être utilisé pour le routage.You use the body part of the message to identify the type of the message that can be used for routing.

Il est important de comprendre que dans BizTalk ServerBizTalk Server, tous les messages sont immuables.A very important concept to understand is that all messages are immutable in BizTalk ServerBizTalk Server. Cela signifie qu'une fois qu'un message est construit, il ne peut pas être modifié.This means that after a message is constructed, it cannot be changed. Un message est considéré comme construit une fois qu'il a été placé dans la base de données MessageBox.A message is considered constructed after it is placed into the MessageBox database. Si des modifications sont apportées au message, un nouveau message doit être créé. C'est ce dernier qui est utilisé par la suite.Any changes to the message require that a new message is created and used from that point forward. Ceci est particulièrement évident dans le Concepteur d'orchestration. Les règles de compilation vous obligent à respecter des consignes de création de messages strictes. Si vous ne lez appliquez pas, vous ne pouvez pas utiliser le message. En outre, les règles vous interdisent de modifier un message en dehors de son bloc de construction.This is especially clear in the Orchestration Designer, where compilation rules force you to follow strict guidelines about constructing a message before using it, and do not allow the message to be altered outside of its construction block. Si vous modifiez un message, vous devez créer un bloc de construction qui crée un message du même type, copier le message d'origine dans le nouveau, puis apporter vos modifications dans le nouveau message avant de quitter le bloc de construction.If you need to change the message, you must create a new construction block that creates a message of the same type, copy the original message to the new message, and then make any changes to the new message before leaving the construction block.

Propriétés du messageMessage Properties

Outre les parties qui composent un message, chaque message dans le système possède un ensemble de propriétés en même temps que ce qui est appelé le contexte de message.In addition to the parts that make up a message, each message in the system has a set of properties that go along with it in what is known as the message context. Ces propriétés peuvent être des valeurs extraites du message lui-même ou associées à celui-ci.These properties can be values extracted from or related to the message itself. Par exemple, les adaptateurs placent des propriétés dans le contexte associé à la réception du message. Il peut s'agir entre autres de l'emplacement de réception du message et le type d'adaptateur utilisé pour recevoir le message.For example, adapters put properties into the context related to the receiving of a message, such as the location at which the message was received, and the type of adapter that was used to receive the message. Propriétés peuvent être soit écrites dans le contexte, ou promues dans le contexte.Properties can either be written to the context, or promoted into the context. La différence entre ces deux options est que les propriétés promues peuvent être utilisées en tant que critères dans le routage de messages alors que les propriétés écrites ne le peuvent pas.The difference between these two options is that promoted properties can be used as criteria in message routing while written properties cannot.

Ce concept d'écriture ou de promotion des valeurs est quelque peu semblable au concept de promotion des propriétés dans l'Éditeur BizTalk.This concept of writing or promoting values to the context is related to, but not the same as, promoting properties in the BizTalk Editor. Dans ce dernier, un élément ou un attribut d'un schéma peut être marqué comme propriété promue ou champ distinctif.In the BizTalk Editor, an element or attribute in a schema can be flagged as a promoted property or a distinguished field. Les éléments marqués avec les annotations PropertyField dans votre schéma de message entraînent le placement d'une propriété promue dans le contexte par le désassembleur de pipeline.Items that are marked with PropertyField annotations in your message schema will lead to the pipeline disassembler putting a Promoted property in the context. Les éléments marqués avec les annotations DistinguishedField dans votre schéma de message entraînent le placement d'une propriété écrite dans le contexte par le désassembleur de pipeline.Items that are marked with DistinguishedField annotations in your message schema will lead to the pipeline disassembler putting a Written property into the context.

La conception pour les propriétés promues en main de la conception de corrélation du message: la capacité de lier un message reçu pour une instance d’orchestration en cours d’exécution.The design for promoted properties started with the design of message correlation: the ability to relate a message being received to an already running orchestration instance. Dans le cas de la corrélation, il n'est pas nécessaire de définir une propriété ou un ensemble de propriétés qui fait la liaison entre les messages de l'orchestration.For correlation, there is a need to define a property or set of properties that provide the link between messages in the orchestration. Par exemple, dans un processus d'achat, vous devez mettre en corrélation des messages en fonction de l'ID de bon de commande (PurchaseOrderID).For example, in a purchasing process, you need to correlate messages based on the PurchaseOrderID. Cependant, dans de nombreux cas, le nom du champ ou de l'attribut figurant dans les messages ne correspond pas.However, in many business cases, the name of the particular field or attribute in the messages may not match. Un schéma de bon de commande peut comporter un élément nommé POId, alors qu'un schéma de facture peut comporter un élément nommé OrderID.A purchase order schema might have an element named POId, while the companion invoice schema may have an element named OrderID. Dans cette situation, le développeur doit pouvoir abstraire de la source d'une valeur le nom de la propriété à corréler pour corréler des messages en fonction d'une propriété nommée, telle que PurchaseOrderID.To correlate messages on a named property such as PurchaseOrderID in this situation, the developer must be able to abstract the name of the property to be correlated on from the source of the value. Les schémas de propriété prennent en charge cette abstraction.Property schemas support this abstraction.

Un schéma de propriété vous permet de définir les propriétés promues dans un emplacement commun et les référencé par d’autres schémas.A property schema enables you to define promoted properties in a common location and have them referenced by other schemas. À l'instar d'autres schémas, un schéma de propriété comporte un espace de noms. Cependant, contrairement aux autres, il ne peut comporter que des éléments définis (à savoir des éléments qui ne sont ni des enregistrements ni des attributs).Like other schemas, a property schema has a namespace, but unlike other schemas, it can only have defined elements (that is, not records or attributes). Chaque élément défini dans le schéma de propriété possède un nom et un type.Each element that is defined in the property schema has a name and type. Comme il est possible que le schéma de propriété doive être référencé par plusieurs schémas et comme les informations contenues dans le schéma de propriété doivent être disponibles pour les composants lors de l'exécution, le schéma de propriété doit être déployé sur BizTalk Server, comme c'est le cas de tous les autres schémas.Because the property schema may need to be referenced by more than one schema, and because the information in the property schema must be available to components at runtime, the property schema must get deployed to BizTalk Server like all other schemas. Outre les étapes de déploiement de schéma habituelles, les informations relatives aux propriétés promues sont extraites et stockées dans la table bts_documentSpec de la base de données de gestion.In addition to the normal schema deployment steps, information about the promoted properties is extracted and stored in the bts_documentSpec table in the Management database.

Après qu’un schéma de propriété a été créé, éléments et attributs ayant le même type (par exemple.After a property schema has been created, elements and attributes with the same type (for example. entier) peut être promu en tant qu’une des propriétés nommées dans le schéma de propriété.integer) can be promoted as one of the named properties in the property schema.

Pour terminer l’exemple de cas ci-dessus, un développeur effectue les étapes suivantes pour définir la propriété partagée nécessaire pour la corrélation.To complete the example case from above, a developer would perform the following steps to define the shared property needed for correlation.

  1. Créer un schéma de propriété et définir un élément de type xs:int nommé PurchaseOrderId.Create a property schema and define an element of type xs:int named PurchaseOrderId.

  2. Créer un schéma PurchaseOrder et ajouter un élément ou un attribut de type xs:int nommé POId.Create a PurchaseOrder schema and add an element or attribute of type xs:int named POId.

  3. À l'aide de la commande Afficher les promotions dans l'Éditeur BizTalk, le développeur ajoute le champ POId à la liste des propriétés promues et indique qu'il doit être promu en tant que propriété PurchaseOrderId définie dans le schéma de propriété en sélectionnant la propriété nommée PurchaseOrderId dans la liste.Using the show promotions command in the BizTalk Editor, the developer adds the POId field to the list of promoted properties and indicates that it should be promoted as the PurchaseOrderId property defined in the property schema by selecting the PurchaseOrderId named property from the list.

  4. Créer un schéma Invoice et ajouter un élément ou un attribut de type xs:int nommé OrderId.Create an Invoice schema and add an element or attribute of type xs:int named OrderId.

  5. À l'aide de la commande Afficher les promotions dans l'Éditeur BizTalk, le développeur ajoute le champ OrderId à la liste des propriétés promues et indique qu'elle doit être promue en tant que propriété PurchaseOrderId définie dans le schéma de propriété en sélectionnant la propriété nommée PurchaseOrderId dans la liste.Using the show promotions command in the BizTalk Editor, the developer adds the OrderId field to the list of promoted properties and indicates that it should be promoted as the PurchaseOrderId property defined in the property schema by selecting the PurchaseOrderId named property from the list.

    Cette définition existant désormais dans les schémas de document, les composants de pipeline sont en mesure de promouvoir en tant que propriété nommée OrderId et POId afin qu'elles puissent être utilisées pour le routage et la corrélation.Now that this definition exists in the document schemas, pipeline components can properly promote OrderId and POId as the named property PurchaseOrderID so that it can be used for routing and correlation. Pour plus de détails sur ce processus de promotion, voir la rubrique « Traitement des messages » dans ce document.For more details on this promotion process, see the topic "Message Processing" in this document.

    Un des avantages que présentent les propriétés promues est que la valeur de l'élément promu est disponible dans le contexte du message.One of the benefits of promoted properties is that the value of the element that is promoted is available in the context of the message. Cela signifie que l'extraction de cette valeur est peu coûteuse, car le message n'a pas à être chargé en mémoire pour qu'il fasse l'objet d'une instruction XPath.This means that retrieving that value is inexpensive, as it does not require loading the message into memory to execute an XPath statement on the message. En effet, l'instruction s'effectue par le biais d'un simple jeu de propriétés et d'une clé.Instead, a simple property bag can be used along with a key to get the value. Ce type de comportement est souhaitable dans des situations autres que le routage des messages et motive la création de champs distinctifs.This type of behavior is desirable in situations other than message routing and is the reason for creating distinguished fields. Lorsque des propriétés sont promues dans le contexte d'un message, des champs distinctifs sont écrits dans le contexte du message.While promoted properties are promoted into the message context, distinguished fields are written into the message context. Cependant, contrairement aux propriétés promues, il n'existe pas de schéma de propriété pour les champs distinctifs.Unlike promoted properties however, there is no property schema for distinguished fields. C'est pour cette raison que les champs distinctifs ne peuvent pas être utilisés pour le routage et, de ce fait, ne sont pas disponibles en tant que critères de filtre dans un port d'envoi ou une forme Réception d'une orchestration.This is why distinguished fields cannot be used for routing and are therefore not available as filter criteria in a send port or orchestration receive shape. En revanche, les champs distinctifs peuvent être utilisés dans des orchestrations pour lire ou écrire des valeurs provenant du contexte de message plutôt que charger le message en mémoire et y extraire la valeur.Distinguished fields can, however, be used in orchestrations to read or write values from the message context instead of having to load the message into memory and extract the value.

    Les prédicats peuvent non seulement servir à promouvoir ou à écrire des propriétés dans le contexte de message, ils peuvent aussi être ajoutés au contexte.In addition to promoting or writing properties into the message context, message predicates can also be added to the context. Des prédicats de message sont utilisés comme mesure de sécurité dans BizTalk Server. Ils fournissent les informations contextuelles relatives au message. Ces informations doivent correspondre aux valeurs spécifiées pour tout hôte vers lequel le message doit être acheminé.Message predicates are used as a security measure in BizTalk Server and provide contextual information about the message, which must match values specified for any host that the message is to be routed to. Cette mesure de sécurité vous permet de configurer votre environnement BizTalk Server de sorte à autoriser des hôtes spécifiques pour qu'ils soient les seuls en mesure de recevoir et de traiter des messages donnés.This security measure allows you to configure your BizTalk Server environment in such a way as to allow specific hosts to be the only hosts that can receive and process particular messages. Par exemple, dans la console Administration de BizTalk Server, vous pouvez activer l'empreinte d'un certificat sur un hôte pour que celui-ci puisse chiffrer et déchiffrer des messages.As an example, in the BizTalk Server Administration Console, a host can be configured with the thumbprint of a certificate to use for message decoding and decryption. La configuration de cette propriété crée une propriété d'application pour l'hôte dans la base de données MessageBox.Configuring this property creates an application property for that host in the MessageBox. Les messages sécurisés reçus et déchiffrés avec cette empreinte sont ensuite acheminés uniquement vers les hôtes sur lesquels l'empreinte est configurée.Secure messages that are received and decrypted using this thumbprint are then only routed to the hosts with the thumbprint configured.

Voir aussiSee Also

Architecture d’exécutionRuntime Architecture