Vue d’ensemble du modèle de canal WCF avec l’adaptateur SQL
Pour appeler des opérations sur l’adaptateur Microsoft BizTalk pour SQL Server, votre code agit comme un client WCF et envoie des opérations sortantes à l’adaptateur. Dans le modèle de canal WCF, votre code appelle des opérations sur l’adaptateur en envoyant un message de demande sur un canal.
Pour recevoir des messages de modification des données basées sur l’interrogation à l’aide de l’adaptateur, votre code agit en tant que service WCF et reçoit l’opération d’interrogation, de typedPolling ou de notification entrante de l’adaptateur. En d’autres termes, votre code reçoit un message de demande pour ces opérations de l’adaptateur sur un canal.
Les rubriques de cette section fournissent une vue d’ensemble de l’utilisation de l’adaptateur SQL avec le modèle de canal WCF.
Vue d’ensemble du modèle de canal WCF
Les clients et les services communiquent en échangeant des messages SOAP. Le modèle de canal WCF est une abstraction de bas niveau de cet échange de messages. Il fournit des interfaces et des types qui vous permettent d’envoyer et de recevoir des messages à l’aide d’une pile de protocoles en couches appelée pile de canaux. Chaque couche de la pile est composée d’un canal, et chaque canal est créé à partir d’une liaison WCF. Au niveau de la couche la plus basse se trouve le canal de transport. Le canal de transport implémente le mécanisme de transport sous-jacent entre un service et un client et présente chaque message aux couches supérieures (et finalement à l’application consommatrice) sous la forme d’un System.ServiceModel.Message. La classe Message WCF est une abstraction d’un message SOAP. WCF fournit plusieurs interfaces de canal, appelées formes de canal, qui modélisent les modèles d’échange de messages SOAP de base, tels que demande-réponse ou unidirectionnel. Une liaison de transport WCF fournit une implémentation d’une ou plusieurs formes de canal que les couches supérieures peuvent utiliser pour envoyer et recevoir des messages. Pour plus d’informations sur le modèle de canal WCF, consultez Vue d’ensemble du modèle de canal.
L’adaptateur SQL est une liaison de transport personnalisée WCF qui expose une base de données SQL Server en tant que service WCF.
Formes de canal prises en charge pour l’adaptateur SQL Server
L’adaptateur implémente les formes de canal WCF suivantes :
IRequestChannel (System.ServiceModel.Channels.IRequestChannel). L’interface IRequestChannel implémente le côté client d’un échange de messages demande-réponse. Vous pouvez utiliser un IRequestChannel pour effectuer des opérations pour lesquelles vous souhaitez utiliser une réponse, par exemple pour exécuter une requête SELECT sur une table.
IOutputChannel (System.ServiceModel.Channels.IOutputChannel). Cette forme implémente le côté client d’un échange de messages unidirectionnel. Vous pouvez utiliser un IOutputChannel pour appeler une opération pour laquelle vous n’avez pas besoin d’utiliser une réponse, par exemple pour appeler une procédure qui n’a aucun paramètre de retour.
Important
Tous les appels sous-jacents de l’adaptateur au client SQL Server sont synchrones. Cela inclut les appels au client SQL Server qui sont le résultat d’opérations appelées sur un IOutputChannel. Lorsque vous utilisez un IOutputChannel, l’adaptateur ignore la réponse reçue du client SQL Server.
IInputChannel (System.ServiceModel.Channels.IInputChannel). Cette forme implémente le côté service d’un échange de messages unidirectionnel. Vous utilisez un IInputChannel pour recevoir des messages pour les opérations entrantes, telles que l’interrogation ou la notification, à partir de l’adaptateur.
Comme toute liaison WCF, l’adaptateur SQL utilise un modèle de fabrique pour fournir des canaux au code d’application. Vous utilisez un objet Microsoft.Adapters.SQLBinding pour créer des instances de :
System.ServiceModel.ChannelFactory<IRequestChannel> pour fournir des canaux IRequestChannel que vous pouvez utiliser pour appeler des opérations demande-réponse sur l’adaptateur.
System.ServiceModel.ChannelFactory<IOutputChannel> pour fournir des canaux IOutputChannel que vous pouvez utiliser pour appeler des opérations unidirectionnelles sur l’adaptateur.
System.ServiceModel.IChannelListener<IInputChannel> pour fournir des canaux IInputChannel que vous pouvez utiliser pour recevoir des messages pour les opérations entrantes, telles que l’interrogation ou la notification, à partir de l’adaptateur.
Création de messages pour l’adaptateur de base de données SQL Server dans le modèle de canal WCF
Dans WCF, la classe System.ServiceModel.Channels.Message fournit une représentation en mémoire d’un message SOAP. Vous créez un message instance en appelant la méthode statique Message.Create.
Il existe deux parties importantes du message SOAP que vous devez spécifier lorsque vous créez un message instance à envoyer à l’adaptateur SQL.
L’action de message est une chaîne qui fait partie de l’en-tête de message SOAP. L’action de message identifie l’opération qui doit être appelée sur la base de données. L’action de message suivante est spécifiée pour appeler l’opération Select sur la table Employee :
TableOp/Select/dbo/Employee
.Le corps du message contient les données de paramètre pour l’opération. Le corps du message est composé de xml bien formé qui correspond au schéma de message attendu par l’adaptateur SQL pour l’opération demandée. Le corps du message suivant spécifie une opération Select sur la table Employee (SELECT * FROM Employee WHERE Employee_ID=10001).
<Select xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee"> <Columns>*</Columns> <Query>where Employee_ID=10001</Query> </Select>
Pour plus d’informations sur les schémas de message de l’adaptateur SQL et les actions de message pour les opérations, consultez Messages et schémas de message pour l’adaptateur BizTalk pour SQL Server.
Cette méthode Create est surchargée et offre de nombreuses options différentes pour fournir le corps du message. Le code suivant montre comment créer un message instance à l’aide d’un XmlReader pour fournir le corps du message. Dans ce code, le corps du message est lu à partir d’un fichier.
XmlReader readerIn = XmlReader.Create("SelectInput.xml");
Message messageIn = Message.CreateMessage(MessageVersion.Default,
"TableOp/Select/dbo/Employee",
readerIn);
Important
Vous devez fournir une action de message dans votre instance Message. Cette opération est généralement effectuée lors de la création de l’instance Message.
Voir aussi
Développer des applications en utilisant le modèle de canal WCF