Partager via


Vue d’ensemble du modèle de canal WCF avec l’adaptateur Oracle Database

Pour appeler des opérations sur l’adaptateur Microsoft BizTalk pour Oracle Database, votre code agit en tant que 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 appeler des opérations entrantes, telles que la réception de messages d’interrogation modifiés par des données modifiées à l’aide de l’opération POLLINGSTMT fournie par l’adaptateur, votre code agit en tant que service WCF et reçoit l’opération entrante de l’adaptateur. En d’autres termes, votre code reçoit un message de demande de l’adaptateur via un canal.

Les rubriques de cette section fournissent une vue d’ensemble de l’utilisation de l’adaptateur Oracle Database 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) en tant que 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 requête-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 Oracle Database est une liaison de transport personnalisée WCF qui expose une base de données Oracle en tant que service WCF.

Formes de canal prises en charge pour l’adaptateur de base de données Oracle

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 de demande-réponse. Vous pouvez utiliser un IRequestChannel pour effectuer des opérations pour lesquelles vous souhaitez utiliser une réponse, par exemple pour effectuer une requête SELECT sur une table Oracle.

  • 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 Oracle qui n’a aucun paramètre OUT.

    Important

    Tous les appels sous-jacents de l’adaptateur au client Oracle sont synchrones. Cela inclut les appels au client Oracle 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 Oracle.

  • 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 à partir de l’adaptateur.

    Comme toute liaison WCF, l’adaptateur Oracle Database utilise un modèle de fabrique pour fournir des canaux au code d’application. Vous utilisez un objet Microsoft.Adapters.OracleDBBinding pour créer des instances de :

  • System.ServiceModel.ChannelFactory<IRequestChannel> pour fournir des canaux IRequestChannel que vous pouvez utiliser pour appeler des opérations de 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 entrants (par exemple, opération POLLINGSTMT) à partir de l’adaptateur.

Création de messages pour l’adaptateur de base de données Oracle 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.

Le message SOAP comporte deux parties importantes que vous devez spécifier lorsque vous créez un message instance à envoyer à l’adaptateur Oracle Database.

  • L’action de message est une chaîne qui fait partie de l’en-tête du message SOAP. L’action de message identifie l’opération qui doit être appelée sur la base de données Oracle. L’action de message suivante est spécifiée pour appeler l’opération Select sur la table /SCOTT/EMP : http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Select.

  • Le corps du message contient les données de paramètre pour l’opération. Le corps du message est composé d’un code XML bien formé qui correspond au schéma de message attendu par l’adaptateur Oracle Database pour l’opération demandée. Le corps du message suivant spécifie une opération Select sur le SCOTT. EMP table (SELECT * FROM EMP).

    <?xml version="1.0" encoding="utf-8" ?>  
    <Select xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP">  
        <COLUMN_NAMES>*</COLUMN_NAMES>  
    </Select>  
    

    Pour plus d’informations sur les schémas de message et les actions de message de l’adaptateur Oracle Database pour les opérations, consultez Messages et schémas de message pour l’adaptateur BizTalk pour Oracle Database.

    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("SelectAllActivity.xml");  
Message messageIn = Message.CreateMessage(MessageVersion.Default,  
    "http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Select",  
    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.

Prise en charge de la diffusion en continu pour les types de données métier dans le modèle de canal WCF

La diffusion en continu de bout en bout des types de données métier est prise en charge pour certaines opérations exposées par l’adaptateur. Pour ces opérations, la façon dont vous créez et utilisez les messages que vous envoyez et recevez sur le canal détermine si la diffusion en continu est prise en charge sur les données métier.

Pour plus d’informations sur la façon dont l’adaptateur Oracle Database prend en charge la diffusion en continu sur les données métier, consultez Streaming des types de données d’objets volumineux dans l’adaptateur Oracle Database.

Pour plus d’informations sur l’implémentation de la diffusion en continu de valeur de nœud dans votre code pour prendre en charge la diffusion en continu de bout en bout de données LOB, consultez Types de données métier Oracle Database en streaming à l’aide du modèle de canal WCF.

Voir aussi

Développer des applications Oracle Database à l’aide du modèle de canal WCF