Obtenir des métadonnées à l’aide de WS-Metadata Exchange dans Oracle Database
En tant que liaison personnalisée Windows Communication Foundation (WCF), l’adaptateur Microsoft BizTalk pour Oracle Database expose un point de terminaison WS-Metadata Exchange (MEX) que vous pouvez utiliser pour récupérer des métadonnées pour des opérations spécifiques à partir de l’adaptateur Microsoft BizTalk pour Oracle Database.
WCF fournit une infrastructure riche pour l’exportation, la publication, la récupération et l’importation de métadonnées relatives à un service. Les services WCF, comme l’adaptateur, utilisent des métadonnées pour décrire comment interagir avec les points de terminaison de service afin que les outils, comme svcutil.exe, puissent générer automatiquement du code client pour l’utilisation du service. WCF représente les métadonnées d’un service en tant que instance du type MetadataSet, qui est fortement lié au format de sérialisation des métadonnées défini dans WS-Metadata Exchange (MEX). Vous pouvez créer un MetadataSet pour les opérations ciblées sur l’adaptateur à l’aide d’un MetadataExchangeClient.
La prise en charge de WCF pour l’échange de métadonnées est un sujet étendu qui dépasse l’étendue de cette documentation. Pour plus d’informations sur la prise en charge des métadonnées dans WCF, consultez Métadonnées. Pour obtenir une description particulièrement correcte de l’architecture, des classes et des espaces de noms que WCF expose pour les métadonnées, consultez Vue d’ensemble de l’architecture des métadonnées. Vous devez vous familiariser avec le contenu lié à la récupération des métadonnées à partir d’un service WCF dans ces rubriques WCF avant de continuer.
Les rubriques suivantes contiennent des informations sur l’utilisation d’un MetadataExchangeClient pour récupérer des métadonnées à partir de l’adaptateur Oracle Database.
Utilisation d’un MetadataExchangeClient pour récupérer des métadonnées
Pour utiliser un MetadataExchangeClient , vous devez spécifier un URI de connexion et une liaison (OracleDBBinding). L’URI de connexion identifie les opérations pour lesquelles vous souhaitez récupérer des métadonnées.
Les sections suivantes contiennent des informations sur la façon de spécifier l’URI de connexion, les propriétés de liaison importantes et l’utilisation d’un MetadataExchangeClient pour récupérer des métadonnées de l’adaptateur.
URI de connexion
Pour utiliser MetadataExchangeClient , vous devez fournir un URI de connexion Oracle qui spécifie un point de terminaison MEX et l’opération ou les opérations pour lesquelles vous souhaitez récupérer des métadonnées. Vous spécifiez un point de terminaison MEX et des opérations cibles dans l’URI de connexion de la manière suivante :
Vous devez inclure le paramètre « wsdl » dans la chaîne de requête. S’il s’agit du premier paramètre de la chaîne de requête, il est spécifié juste après le point d’interrogation ( ?). S’il ne s’agit pas du premier paramètre, il doit être précédé d’un ampersand (&).
Vous devez suivre le paramètre « wsdl » par un ou plusieurs paramètres « op ». Chaque paramètre « op » est précédé d’un ampersand (&) et spécifie l’action de message (ID de nœud) d’une opération cible.
Par exemple, l’URI de connexion suivant cible les opérations Insert et Delete pour scott. Table EMP. Les paramètres « wsdl » et « op » sont mis en surbrillance.
"oracledb://ADAPTER?wsdl&op=http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Insert&op=http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Delete"
Notes
Si vous souhaitez modifier l’espace de noms généré pour l’opération POLLINGSTMT, vous devez spécifier un paramètre PollingId dans la chaîne de requête.
La façon dont vous transmettez cet URI de connexion à MetadataExchangeClient dépend des méthodes surchargées que vous utilisez pour créer le client et récupérer les métadonnées de l’adaptateur.
Pour plus d’informations sur l’URI de connexion Oracle, consultez Créer l’URI de connexion Oracle Database.
Propriétés de liaison
Lorsque vous créez MetadataExchangeClient, vous devez spécifier un oracleDBBinding.
Plusieurs propriétés de liaison affectent la façon dont l’adaptateur génère des métadonnées. Ces propriétés sont :
EnableSafeTyping
UseSchemaInNamespace
PollingStatement
Important
Si vous souhaitez récupérer des métadonnées pour l’opération POLLINGSTMT, vous devez définir la propriété de liaison PollingStatement .
Vous devez vous assurer que ces propriétés de liaison sont définies sur les valeurs requises pour votre application avant d’appeler la méthode GetMetadata sur metadataExchangeClient. Pour plus d’informations sur les propriétés de liaison de l’adaptateur Oracle Database, consultez En savoir plus sur les propriétés de liaison de l’adaptateur Oracle Database.
Exemple
L’exemple suivant utilise un MetadataExchangeClient pour créer une description de service (document WSDL) pour les opérations Insérer, Mettre à jour, Supprimer et Sélectionner sur scott. Table EMP. Le WSDL est enregistré dans un fichier, EmpOperations.wsdl.
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.ObjectModel;
// Needed for WCF and Oracle Adapter
using System.ServiceModel;
using Microsoft.ServiceModel.Channels;
using Microsoft.Adapters.OracleDB;
// Needced for MetadataExchangeClient class
using System.ServiceModel.Description;
// Needed for ServiceDescription class
using System.Web.Services;
namespace OracleMetadataExchange
{
class Program
{
static void Main(string[] args)
{
//create a binding
OracleDBBinding binding = new OracleDBBinding();
//create a metadata exchange client that will retrieve metadata according to the WS-MEX standard
MetadataExchangeClient client = new MetadataExchangeClient(binding);
client.SoapCredentials.UserName.UserName = "SCOTT";
client.SoapCredentials.UserName.Password = "TIGER";
//set up an endpoint address and specifies the operations for which we want metadata
string connectionUri = "oracledb://ADAPTER?wsdl"
+ "&op="
+ "http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Insert"
+ "&op="
+ "http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Update"
+ "&op="
+ "http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Delete"
+ "&op="
+ "http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Select";
EndpointAddress address = new EndpointAddress(connectionUri);
//get the metadata
MetadataSet ms = client.GetMetadata(address);
// Check for the metadata set size
Collection<MetadataSection> documentCollection = ms.MetadataSections;
if (documentCollection != null && documentCollection.Count > 0)
{
//get the wsdl from the metadata set
System.Web.Services.Description.ServiceDescription wsdl = (System.Web.Services.Description.ServiceDescription)documentCollection[0].Metadata;
//save the wsdl to a file
wsdl.Write("EmpOperations.wsdl");
}
}
}
}
Voir aussi
Obtenir des métadonnées par programmation à partir de la base de données Oracle