Le Message BizTalk ServerThe BizTalk Server Message

BizTalk ServerBizTalk Server est, fondamentalement, un moteur 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 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. Les détails du fonctionnement de BizTalk Server avec des messages deviennent plus faciles à comprendre une fois que vous avez acquis une compréhension des quelles un message est.The details of how BizTalk Server works with messages become easier to understand after you have gained an understanding of what a message is.

Chaque message dans BizTalk Server est considéré comme un message à parties multiples et se compose de zéro ou plusieurs parties.Each message in BizTalk Server is considered a multi-part message and is made up of zero or more parts. Chaque message avec une ou plusieurs parties a une de ces parties est identifiée comme la partie de corps.Each message with one or more parts has one of these parts identified as the body part. Chaque partie se compose de blocs 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 binaires.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. Vous utilisez le corps du message pour identifier le type du message qui peut ê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.

Un concept très important à comprendre est que tous les messages sont immuables dans BizTalk ServerBizTalk Server.A very important concept to understand is that all messages are immutable in BizTalk ServerBizTalk Server. Cela signifie qu’une fois 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, il est placé dans la base de données MessageBox.A message is considered constructed after it is placed into the MessageBox database. Toutes les modifications au message nécessitent qu’un nouveau message est créé et utilisé à partir de là.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, où les règles de compilation vous obligent à suivre les instructions strictes sur la construction d’un message avant de l’utiliser et n’autorisent pas le message d’être modifié 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 devez modifier le message, vous devez créer un nouveau bloc de construction qui crée un message du même type, copiez le message d’origine dans le nouveau message et puis effectuez les changements 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 de 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 ou associées au message lui-même.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 lié à la réception d’un message, telles que l’emplacement auquel le message a été reçu et le type d’adaptateur qui a été 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 des messages mais pas les propriétés écrites.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’écrire ou promouvoir des valeurs dans le contexte est lié, mais pas identique, la promotion de 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 l’Éditeur BizTalk, un élément ou attribut dans un schéma peut être marqué comme une 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îne le placement d’une propriété promue dans le contexte de pipeline désassembleur.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îne le placement d’une propriété écrite dans le contexte de pipeline désassembleur.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. Pour la corrélation, il est nécessaire pour définir une propriété ou un ensemble de propriétés qui fournissent le lien entre les messages dans 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 la PurchaseOrderID.For example, in a purchasing process, you need to correlate messages based on the PurchaseOrderID. Toutefois, dans de nombreux cas, le nom de l’attribut dans les messages ou un champ particulier peut ne pas correspond.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 que le 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. Pour mettre en corrélation des messages sur une propriété nommée, telle que PurchaseOrderID dans ce cas, le développeur doit être en mesure d’extraire le nom de la propriété à mettre en corrélation sur à partir de la source de la valeur.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. Schémas de propriété prend 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. Comme d’autres schémas, un schéma de propriété a un espace de noms, mais contrairement à d’autres schémas, il ne peut avoir défini les éléments (autrement dit, pas les enregistrements ou 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 qui est défini dans le schéma de propriété possède un nom et type.Each element that is defined in the property schema has a name and type. Étant donné que le schéma de propriété peut nécessiter d’être référencées par plusieurs schémas, et étant donné que 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 obtenir déployé sur BizTalk Server, comme 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 normal, plus d’informations sur les propriétés promues sont extraite 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 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 PurchaseOrderId propriété nommée 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 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’il doit être promu en tant que propriété PurchaseOrderId définie dans le schéma de propriété en sélectionnant la PurchaseOrderId propriété nommée 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.

    Maintenant que cette définition existe dans les schémas de document, les composants de pipeline peuvent correctement promouvoir OrderId et POId en tant que la propriété nommée PurchaseOrderID afin qu’il peut être utilisé 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 d’informations sur ce processus de promotion, consultez 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 des propriétés promues est que la valeur de l’élément qui est promue 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 il ne nécessite pas le chargement du message en mémoire pour exécuter une instruction XPath sur le message.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. Au lieu de cela, un sac de propriétés simple peut être utilisé avec une clé pour obtenir la valeur.Instead, a simple property bag can be used along with a key to get the value. Ce type de comportement est souhaitable dans les situations autres que le routage des messages et est la raison de 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. Tandis que les propriétés sont promues dans le contexte du message, les 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. Contrairement aux propriétés promues, toutefois, il n’existe aucun schéma de propriété pour les champs distinctifs.Unlike promoted properties however, there is no property schema for distinguished fields. C’est pourquoi les champs distinctifs ne peut pas être utilisés pour le routage et sont donc pas disponibles comme forme de réception de critères de filtre dans un port d’envoi ou 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. Champs distinctifs peuvent, toutefois, être utilisée dans les orchestrations pour lire ou écrire des valeurs à partir du contexte de message au lieu de devoir charger le message en mémoire et d’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.

    En plus de promouvoir ou écrire des propriétés dans le contexte du message, les prédicats de message peuvent également ê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. Les prédicats de message sont utilisés comme une mesure de sécurité dans BizTalk Server et fournissent des informations contextuelles sur le message, qui doit correspondre à des valeurs spécifiées pour le message doit être routé vers n’importe quel hôte.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 manière à autoriser des hôtes spécifiques n'être que des hôtes qui peuvent recevoir et 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, un hôte peut être configuré avec l’empreinte numérique d’un certificat à utiliser pour le décodage du message et le déchiffrement.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. Configuration de cette propriété crée une propriété d’application pour l’hôte dans la MessageBox.Configuring this property creates an application property for that host in the MessageBox. Sécuriser les messages sont reçus et déchiffrés avec cette empreinte sont ensuite acheminés uniquement vers les hôtes avec 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