Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Als benutzerdefinierte Windows Communication Foundation (WCF)-Bindung macht der Microsoft BizTalk-Adapter für Oracle Database einen WS-Metadata Exchange (MEX)-Endpunkt verfügbar, den Sie zum Abrufen von Metadaten für bestimmte Vorgänge aus dem Microsoft BizTalk-Adapter für Oracle Database verwenden können.
WCF bietet eine umfangreiche 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.exeautomatisch Clientcode für die Nutzung des Diensts generieren können. WCF stellt die Metadaten für einen Dienst als Instanz des MetadataSet-Typs dar, die stark an das in WS-Metadata Exchange (MEX) definierte Metadaten serialisierungsformat gebunden ist. Sie können ein MetadataSet für gezielte Vorgänge auf dem Adapter mithilfe eines MetadataExchangeClient erstellen.
WCF-Unterstützung für den Metadatenaustausch ist ein umfangreiches Thema und über den Umfang 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 Metadata Architecture Overview. Bevor Sie fortfahren, sollten Sie sich mit den Inhalten im Zusammenhang mit dem Abrufen von Metadaten aus einem WCF-Dienst in diesen WCF-Themen vertraut machen.
Die folgenden Themen enthalten Informationen zur Verwendung eines MetadataExchangeClient zum Abrufen von Metadaten vom Oracle-Datenbankadapter.
Verwenden eines MetadataExchangeClient zum Abrufen von Metadaten
Um einen MetadataExchangeClient zu verwenden, müssen Sie einen Verbindungs-URI und eine Bindung (OracleDBBinding) angeben. Der Verbindungs-URI identifiziert die Vorgänge, für die Metadaten abgerufen werden sollen.
Die folgenden Abschnitte enthalten Informationen zum Angeben des Verbindungs-URI, wichtiger Bindungseigenschaften und der Verwendung eines MetadataExchangeClient zum Abrufen von Metadaten vom Adapter.
Verbindungs-URI
Um den MetadataExchangeClient zu verwenden, müssen Sie einen Oracle-Verbindungs-URI angeben, der einen MEX-Endpunkt und die Vorgänge angibt, für die Sie Metadaten abrufen möchten. Sie geben einen MEX-Endpunkt und Zielvorgänge im Verbindungs-URI wie folgt 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 hinter dem Fragezeichen (?) angegeben. Wenn es sich nicht um den ersten Parameter handelt, sollte ihm ein kaufmännisches Und-Zeichen (&) vorangestellt werden.
Dem Parameter "wsdl" muss ein oder mehrere "op"-Parameter folgen. Jedem "op"-Parameter wird ein kaufmännisches Und-Zeichen (&) vorangestellt, das die Nachrichtenaktion (Knoten-ID) eines Zielvorgangs spezifiziert.
Der folgende Verbindungs-URI zielt beispielsweise auf die Einfüge- und Löschvorgänge für die SCOTT.EMP-Tabelle ab. 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 den MetadataExchangeClient übergeben, hängt davon ab, welche ü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 den MetadataExchangeClient erstellen, müssen Sie ein OracleDBBinding angeben.
Es gibt mehrere Bindungseigenschaften, die sich darauf auswirken, wie der Adapter Metadaten generiert. Diese Eigenschaften sind:
EnableSafeTyping
UseSchemaInNamespace
PollingStatement
Von Bedeutung
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 Werte festgelegt werden, die für Ihre Anwendung erforderlich sind, bevor Sie die GetMetadata-Methode für den MetadataExchangeClient aufrufen. Weitere Informationen zu den Bindungseigenschaften des Oracle Database-Adapters finden Sie unter "Read about the Oracle Database adapter binding properties".
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 der SCOTT.EMP-Tabelle zu erstellen. Die WSDL wird in einer 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");
}
}
}
}
Siehe auch
Programmgesteuertes Abrufen von Metadaten aus der Oracle-Datenbank