Abrufen von Metadaten mithilfe von WS-Metadata Exchange in Oracle Database
Als benutzerdefinierte Windows Communication Foundation (WCF)-Bindung macht der Microsoft BizTalk-Adapter für Oracle-Datenbank einen WS-Metadata Exchange-Endpunkt (MEX) verfügbar, mit dem Sie Metadaten für bestimmte Vorgänge aus dem Microsoft BizTalk-Adapter für Oracle-Datenbank abrufen können.
WCF bietet eine umfassende Infrastruktur zum Exportieren, Veröffentlichen, Abrufen und Importieren von Metadaten zu einem Dienst. WCF-Dienste wie der Adapter verwenden Metadaten, um die Interaktion mit den Dienstendpunkten zu beschreiben, sodass Tools wie svcutil.exe automatisch Clientcode für die Nutzung des Diensts generieren können. WCF stellt die Metadaten für einen Dienst als instance des MetadataSet-Typs dar, der stark an das in WS-Metadata Exchange (MEX) definierte Metadatenserialisierungsformat gebunden ist. Sie können ein MetadataSet für zielorientierte Vorgänge auf dem Adapter erstellen, indem Sie einen MetadataExchangeClient verwenden.
Wcf-Unterstützung für den Metadatenaustausch ist ein umfangreiches Thema und geht über den Rahmen dieser Dokumentation hinaus. Weitere Informationen zur Unterstützung von Metadaten in WCF finden Sie unter Metadaten. Eine besonders gute Beschreibung der Architektur, klassen und Namespaces, die WCF für Metadaten verfügbar macht, finden Sie unter Übersicht über die Metadatenarchitektur. Sie sollten sich mit dem Inhalt im Zusammenhang mit dem Abrufen von Metadaten aus einem WCF-Dienst in diesen WCF-Themen vertraut machen, bevor Sie fortfahren.
Die folgenden Themen enthalten Informationen zur Verwendung eines MetadataExchangeClient zum Abrufen von Metadaten aus dem Oracle Database-Adapter.
Verwenden eines MetadataExchangeClient zum Abrufen von Metadaten
Um einen MetadataExchangeClient verwenden zu können, müssen Sie einen Verbindungs-URI und eine Bindung (OracleDBBinding) angeben. Der Verbindungs-URI identifiziert die Vorgänge, für die Sie Metadaten abrufen möchten.
Die folgenden Abschnitte enthalten Informationen zum Angeben des Verbindungs-URI, wichtige Bindungseigenschaften und zum Abrufen von Metadaten aus dem Adapter mit einem MetadataExchangeClient .
Verbindungs-URI
Um den MetadataExchangeClient zu verwenden, müssen Sie einen Oracle-Verbindungs-URI angeben, der einen MEX-Endpunkt und den Vorgang oder die Vorgänge angibt, für die Sie Metadaten abrufen möchten. Sie geben einen MEX-Endpunkt und Zielvorgänge im Verbindungs-URI auf folgende Weise an:
Sie müssen den Parameter "wsdl" in die Abfragezeichenfolge einschließen. Wenn es sich um den ersten Parameter in der Abfragezeichenfolge handelt, wird er direkt nach dem Fragezeichen (?) angegeben. Wenn es sich nicht um den ersten Parameter handelt, sollte ihm ein ampersand (&) vorangestellt werden.
Sie müssen dem Parameter "wsdl" durch einen oder mehrere "op"-Parameter folgen. Jedem "op"-Parameter wird ein ampersand (&) vorangestellt und gibt die Nachrichtenaktion (Knoten-ID) eines Zielvorgangs an.
Der folgende Verbindungs-URI zielt beispielsweise auf die Vorgänge Einfügen und Löschen für scott ab. EMP-Tabelle. Die Parameter "wsdl" und "op" sind hervorgehoben.
"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"
Hinweis
Wenn Sie den für den POLLINGSTMT-Vorgang generierten Namespace ändern möchten, sollten Sie einen PollingId-Parameter in der Abfragezeichenfolge angeben.
Wie Sie diesen Verbindungs-URI an metadataExchangeClient übergeben, hängt davon ab, welche der überladenen Methoden Sie verwenden, um den Client zu erstellen und Metadaten vom Adapter abzurufen.
Weitere Informationen zum Oracle-Verbindungs-URI finden Sie unter Erstellen des Oracle Database-Verbindungs-URI.
Bindungseigenschaften
Wenn Sie metadataExchangeClient erstellen, müssen Sie eine OracleDBBinding-Instanz angeben.
Es gibt mehrere Bindungseigenschaften, die beeinflussen, wie der Adapter Metadaten generiert. Diese Eigenschaften sind:
EnableSafeTyping
UseSchemaInNamespace
PollingStatement
Wichtig
Wenn Sie Metadaten für den POLLINGSTMT-Vorgang abrufen möchten, müssen Sie die Bindungseigenschaft PollingStatement festlegen.
Sie sollten sicherstellen, dass diese Bindungseigenschaften auf die für Ihre Anwendung erforderlichen Werte festgelegt sind, bevor Sie die GetMetadata-Methode für MetadataExchangeClient aufrufen. Weitere Informationen zu den Bindungseigenschaften des Oracle Database-Adapters finden Sie unter Informationen zu den Bindungseigenschaften des Oracle Database-Adapters.
Beispiel
Im folgenden Beispiel wird ein MetadataExchangeClient verwendet, um eine Dienstbeschreibung (WSDL-Dokument) für die Vorgänge Einfügen, Aktualisieren, Löschen und Auswählen auf dem SCOTT zu erstellen. EMP-Tabelle. Die WSDL wird in der Datei EmpOperations.wsdl gespeichert.
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");
}
}
}
}
Weitere Informationen
Programmgesteuertes Abrufen von Metadaten aus der Oracle-Datenbank