Übersicht über das WCF-Dienstmodell mit dem Oracle Database-Adapter
Wenn Sie Vorgänge nutzen, die vom Microsoft BizTalk-Adapter für Oracle-Datenbank angezeigt werden, fungiert Ihr Code entweder als Client oder als Dienst für den Adapter. Bei fast allen Vorgängen, die vom Oracle Database-Adapter angezeigt werden, ist Ihr Code der Client. Das heißt, Ihre Anwendung ruft den Vorgang auf dem Adapter auf. beispielsweise zum Einfügen von Datensätzen in eine Oracle-Tabelle. Der einzige Vorgang, für den Ihr Code als Dienst für den Oracle Database-Adapter fungiert, ist der POLLINGSMT-Vorgang. In diesem Fall sendet der Adapter die Ergebnisse des Abfragevorgangs an Ihre Anwendung.
Im Windows Communication Foundation-Dienstmodell (WCF) wird der Dienstvertrag, der zwischen einem Client und einem Dienst besteht, als .NET-Schnittstelle dargestellt, und Vorgänge werden auf dieser Schnittstelle als Methoden dargestellt. Der Oracle Database-Adapter und WCF stellen Tools bereit, mit denen Sie diese Schnittstelle für zielorientierte Vorgänge aus den Metadaten generieren können, die der Adapter verfügbar macht. Diese Tools erstellen auch eine WCF-Clientklasse, die zum Aufrufen der Vorgänge verwendet werden kann, die in der Dienstschnittstelle verfügbar gemacht werden. Eine Clientanwendung kann die Methoden der WCF-Clientklasse aufrufen, um Vorgänge auf dem Adapter aufzurufen. Um einen Dienst zum Empfangen des POLLINGSTMT-Vorgangs vom Oracle Database-Adapter zu implementieren, implementieren Sie die für den POLLINGSTMT-Vorgang generierte Schnittstelle.
In den folgenden Abschnitten wird erläutert, wie Sie mithilfe des WCF-Dienstmodells Client- und Dienstcode für den Oracle Database-Adapter erstellen.
Erstellen und Aufrufen von Vorgängen auf einem WCF-Client mithilfe des Oracle-Datenbankadapters
Um das WCF-Dienstmodell zum Aufrufen von Vorgängen auf dem Oracle Database-Adapter zu verwenden, müssen Sie zunächst eine WCF-Clientklasse für die Zielvorgänge generieren. Anschließend können Sie eine instance dieser Klasse erstellen, einen WCF-Client, und deren Methoden aufrufen, um Vorgänge für die Oracle-Datenbank auszuführen.
So rufen Sie Vorgänge für den Oracle Database-Adapter auf
Generieren Sie eine WCF-Clientklasse und Hilfscode. Verwenden Sie das Visual Studio-Plug-In Add Adapter Service Reference oder das ServiceModel Metadata Utility Tool (svcutil.exe), um eine WCF-Clientklasse für die Oracle-Datenbankartefakte zu generieren, mit denen Sie arbeiten möchten. Weitere Informationen zum Generieren eines WCF-Clients finden Sie unter Generieren eines WCF-Clients oder eines WCF-Dienstvertrags für Oracle Database Artifacts.
Erstellen Sie einen WCF-Client instance, indem Sie eine Clientbindung angeben. Das Angeben einer Clientbindung umfasst die Angabe der Bindungs- und Endpunktadresse, die vom WCF-Client verwendet wird. Sie können dies entweder zwingend im Code oder deklarativ in der Konfiguration tun. Weitere Informationen zum Angeben einer Clientbindung finden Sie unter Konfigurieren einer Clientbindung für die Oracle-Datenbank. Der folgende Code erstellt einen WCF-Client, der zum Ausführen von DML-Vorgängen (Data Manipulation Language) für eine Oracle-Datenbanktabelle (/SCOTT/ACCOUNTACTIVITY) verwendet werden kann. Außerdem werden die Anmeldeinformationen für die Oracle-Datenbank festgelegt. Der WCF-Client wird über die Konfiguration initialisiert.
SCOTTTableACCOUNTACTIVITYClient aaTableClient = new SCOTTTableACCOUNTACTIVITYClient("OracleDBBinding_SCOTT.Table.ACCOUNTACTIVITY"); aaTableClient.ClientCredentials.UserName.UserName = "SCOTT"; aaTableClient.ClientCredentials.UserName.Password = "TIGER";
Öffnen Sie den WCF-Client.
aaTableClient.Open();
Rufen Sie Methoden auf dem WCF-Client auf, der in Schritt 2 erstellt wurde, um Vorgänge für die Oracle-Datenbank auszuführen. Der folgende Code ruft die Select-Methode des WCF-Clients auf, um die folgende SQL SELECT-Abfrage für die TABELLE ACCOUNTACTIVITY auszuführen:
SELECT * FROM ACCOUNTACTIVITY
.// create a record set parameter to hold the SELECT query result set and invoke the Select operation; microsoft.lobservices.oracledb._2007._03.SCOTT.Table.ACCOUNTACTIVITY.ACCOUNTACTIVITYRECORDSELECT[] selectRecords; selectRecords = aaTableClient.Select("*", null);
Schließen Sie den WCF-Client.
aaTableClient.Close();
Weitere Informationen zum Ausführen von DML-Vorgängen für Tabellen und Sichten, einschließlich des oben verwendeten Select-Vorgangs, finden Sie unter Ausführen von einfachen Einfüge-, Update-, Lösch- und Auswahlvorgängen mithilfe des WCF-Dienstmodells.
Erstellen und Implementieren eines WCF-Diensts mithilfe des Oracle-Datenbankadapters
Der Oracle Database-Adapter kann Abfragen für eine Oracle-Datenbanktabelle oder -sicht durchführen. Mit dieser Funktionalität können Sie eine SQL SELECT-Abfrage angeben, die der Adapter regelmäßig für die Oracle-Datenbank ausführen soll. Die Ergebnisse dieser Abfrage werden über einen speziellen Vorgang, den POLLINGSTMT-Vorgang, an Ihre Anwendung zurückgegeben. Um die Ergebnisse der Abrufabfrage zu erhalten, muss Ihre Anwendung den Dienstvertrag implementieren, den der Oracle Database-Adapter für den POLLINGSTMT-Vorgang verfügbar macht.
Um einen Dienst zum Empfangen des POLLINGSTMT-Vorgangs zu implementieren, müssen Sie zuerst die .NET-Schnittstelle (auch WCF-Dienstvertrag genannt) generieren, die den Dienstvertrag darstellt, der vom Oracle Database-Adapter für den POLLINGSTMT-Vorgang verfügbar gemacht wird. Weitere Informationen dazu finden Sie unter Generieren eines WCF-Clients oder eines WCF-Dienstvertrags für Oracle Database Artifacts.
Anschließend implementieren Sie einen WCF-Dienst, indem Sie die generierte Schnittstelle implementieren. Diese Klasse enthält die Geschäftslogik zum Verarbeiten der POLLINGSTMT-Nachricht und zum Zurückgeben einer Antwort an den Adapter. Anschließend verwenden Sie einen Diensthost (System.ServiceModel.ServiceHost), um eine instance dieses Diensts zu hosten. Ausführlichere Informationen finden Sie unter Empfangen von abrufbasierten datenseitig geänderten Nachrichten mithilfe des WCF-Dienstmodells.
Weitere Informationen
Entwickeln von Oracle-Datenbankanwendungen mithilfe des WCF-Dienstmodells