Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans le modèle de canal WCF, vous appelez des opérations sur la base de données Oracle et recevez les résultats d’une requête d’interrogation en échangeant des messages SOAP avec l’adaptateur Microsoft BizTalk pour Oracle Database sur un canal WCF.
Vous appelez des opérations (opérations sortantes) à l’aide d’un IRequestChannel ou d’un IOutputChannel pour envoyer des messages à l’adaptateur.
Vous recevez des messages de changement de données basés sur le sondage en recevant des messages de type POLLINGSTMT sur un IInputChannel.
Les rubriques de cette section fournissent des informations sur la création et la configuration des formes de canal utilisées pour les opérations entrantes et sortantes.
Création de canaux sortants pour clients
Vous pouvez utiliser un IRequestChannel ou un IOutputChannel pour appeler des opérations sur la base de données Oracle. Dans les deux cas, vous créez d’abord un System.ServiceModel.ChannelFactory à l’aide de l’interface appropriée. Vous utilisez ensuite l'usine pour créer le canal. Une fois que vous avez créé le canal, vous pouvez l’utiliser pour appeler des opérations sur l’adaptateur.
Pour créer et ouvrir un canal sortant
Créez et initialisez une instance de ChannelFactory pour la forme de canal souhaitée à l’aide d’un point de terminaison et d’une liaison. Le point de terminaison spécifie un URI de connexion Oracle et la liaison est une instance d’OracleDBBinding.
Fournissez les informations d’identification Oracle pour la fabrique de canaux à l’aide de propriété Credentials.
Ouvrez l'usine de canaux.
Obtenez une instance du canal en appelant la méthode CreateChannel sur la fabrique de canaux.
Ouvrez le canal.
Vous pouvez spécifier la liaison et l’adresse de point de terminaison dans votre code ou à partir de la configuration.
Spécifier la liaison et l'adresse de point de terminaison dans le code
L’exemple de code suivant montre comment créer un IRequestChannel en spécifiant la liaison et l’adresse de point de terminaison dans le code. Le code permettant de créer un IOutputChannel est le même, sauf que vous devez spécifier une interface IOutputChannel pour le ChannelFactory et le type de canal.
// Create binding -- set binding properties before you open the factory.
OracleDBBinding odbBinding = new OracleDBBinding();
// Create address.
EndpointAddress odbAddress = new EndpointAddress("oracledb://ADAPTER/");
// Create channel factory from binding and address.
ChannelFactory<IRequestChannel> factory =
new ChannelFactory<IRequestChannel>(odbBinding, odbAddress);
// Specify credentials.
factory.Credentials.UserName.UserName = "SCOTT";
factory.Credentials.UserName.Password = "TIGER";
// Open factory
factory.Open();
// Get channel and open it
IRequestChannel channel = factory.CreateChannel();
channel.Open();
Spécification de la liaison et de l’adresse de point de terminaison dans la configuration
L’exemple de code suivant montre comment créer une fabrique de canaux à partir d’un point de terminaison client spécifié dans la configuration.
// Create channel factory from configuration.
ChannelFactory<IRequestChannel> factory =
new ChannelFactory<IRequestChannel>("MyRequestChannel");
// Specify credentials.
factory.Credentials.UserName.UserName = "SCOTT";
factory.Credentials.UserName.Password = "TIGER";
// Open the factory.
factory.Open();
// Get a channel and open it.
IRequestChannel channel = factory.CreateChannel();
channel.Open();
Paramètres de configuration
Le code suivant montre les paramètres de configuration utilisés pour l’exemple précédent. Le contrat pour le point de terminaison client doit être « System.ServiceModel.Channels.IRequestChannel » ou « System.ServiceModel.Channels.IRequestChannel » en fonction du type de forme de canal que vous souhaitez créer.
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.serviceModel>
<bindings>
<oracleDBBinding>
<binding name="OracleDBBinding" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" metadataPooling="true"
statementCachePurge="false" statementCacheSize="10" pollingInterval="500"
useOracleConnectionPool="true" minPoolSize="1" maxPoolSize="100"
incrPoolSize="5" decrPoolSize="1" connectionLifetime="0" acceptCredentialsInUri="false"
useAmbientTransaction="true" polledDataAvailableStatement="SELECT 1 FROM DUAL"
pollWhileDataFound="false" notifyOnListenerStart="true" notificationPort="-1"
inboundOperationType="Polling" dataFetchSize="65536" longDatatypeColumnSize="0"
skipNilNodes="true" maxOutputAssociativeArrayElements="32"
enableSafeTyping="false" insertBatchSize="1" useSchemaInNameSpace="true"
enableBizTalkCompatibilityMode="false" enablePerformanceCounters="false" />
</oracleDBBinding>
</bindings>
<client>
<endpoint address="oracledb://adapter/" binding="oracleDBBinding"
bindingConfiguration="OracleDBBinding" contract="System.ServiceModel.Channels.IRequestChannel"
name="MyRequestChannel" />
</client>
</system.serviceModel>
</configuration>
Création de canaux entrants (service clients)
Vous configurez l’adaptateur Oracle Database pour interroger les tables et vues de base de données Oracle en définissant des propriétés de liaison sur une instance d’OracleDBBinding. Vous utilisez ensuite cette liaison pour générer un écouteur de canal à partir duquel vous pouvez obtenir un canal IInputChannel pour recevoir un message pour les opérations entrantes à partir de l’adaptateur.
Pour créer et ouvrir un IInputChannel pour recevoir des messages pour les opérations entrantes
Créez une instance d’OracleDBBinding.
Définissez les propriétés de liaison requises pour l’opération entrante. Par exemple, pour l’opération POLLINGSTMT, au minimum, vous devez définir les propriétés de liaison InboundOperationType, PollingStatement et PollingInterval pour configurer l’adaptateur Oracle Database pour interroger la base de données Oracle.
Créez une collection de paramètres de liaison à l’aide de la classe BindingParameterCollection et définissez les informations d’identification.
Créez un écouteur de canal en appelant la méthode BuildChannelListener<IInputChannel> sur OracleDBBinding. Vous spécifiez l’URI de connexion Oracle comme l’un des paramètres de cette méthode. Pour plus d’informations sur l’URI de connexion Oracle, consultez Créer l’URI de connexion Oracle Database.
Ouvrez l’écouteur.
Obtenez un canal IInputChannel en appelant la méthode AcceptChannel sur l’écouteur.
Ouvrez le canal.
Le code suivant montre comment créer un écouteur de canal et obtenir un IInputChannel pour entrer des messages à partir de l’adaptateur à l’aide de l’opération POLLINGSTMT.
Remarque
L’adaptateur Oracle Database prend uniquement en charge la réception unidirectionnel. Par conséquent, vous devez utiliser IInputChannel pour recevoir des messages pour les opérations entrantes à partir de la base de données Oracle.
// Create a binding: specify the InboundOperationType, PollingInterval (in seconds), the PollingStatement, and
// the PostPollStatement.
OracleDBBinding binding = new OracleDBBinding();
binding.InboundOperationType = InboundOperation.Polling;
binding.PollingInterval = 30;
binding.PollingStatement = "SELECT * FROM ACCOUNTACTIVITY FOR UPDATE";
binding.PostPollStatement = "BEGIN ACCOUNT_PKG.PROCESS_ACTIVITY(); END;";
// Create a binding parameter collection and set the credentials
ClientCredentials credentials = new ClientCredentials();
credentials.UserName.UserName = "SCOTT";
credentials.UserName.Password = "TIGER";
BindingParameterCollection bindingParams = new BindingParameterCollection();
bindingParams.Add(credentials);
// Get a listener from the binding and open it.
Uri connectionUri = new Uri("oracleDB://ADAPTER");
IChannelListener<IInputChannel> listener = binding.BuildChannelListener<IInputChannel>(connectionUri, bindingParams);
listener.Open();
// Get a channel from the listener and open it.
channel = listener.AcceptChannel();
channel.Open();
Voir aussi
Développer des applications Oracle Database à l’aide du modèle de canal WCF