Teilen über


Entwickeln von Oracle Database-Anwendungen mithilfe des WCF-Dienstmodells

Auf der untersten Ebene stellt Windows Communication Foundation (WCF) ein Programmiermodell dar, bei dem Clients Vorgänge für einen Dienst aufrufen, indem SOAP-Nachrichten über einen Kanal ausgetauscht werden, der zwischen Client- und Dienstendpunkten eingerichtet wurde. Dieses Modell, das als WCF-Kanalmodell bezeichnet wird, macht Datentypen und Methoden verfügbar, mit denen Sie direkt mit der WCF-Kanalarchitektur arbeiten können. Das WCF-Kanalmodell bietet Ihnen eine direkte Kontrolle über den Inhalt der soap-Nachrichten, die Sie erstellen, und über die Art und Weise, wie sie sowohl von Ihrer Anwendung als auch vom Oracle Database-Adapter genutzt werden. Das Erstellen wohlgeformter SOAP-Nachrichten, die über einen Kanal gesendet werden sollen, und das Überprüfen der zurückgegebenen Antwortnachrichten kann jedoch eine detaillierte und anspruchsvolle Aufgabe sein.

Aus diesem Grund stellt WCF ein weiteres Programmiermodell bereit, das als WCF-Dienstmodell bezeichnet wird. Das WCF-Dienstmodell umfasst die Verwendung von Proxyklassen zum Aufrufen von Vorgängen für einen Zieldienst oder zum Empfangen von Vorgängen von einem Client.

  • Die Proxyklasse, die zum Aufrufen von Vorgängen für einen Zieldienst verwendet wird, wird als WCF-Clientklasse bezeichnet. Diese Klasse modelliert die Vorgänge, die von einem Dienst als .NET-Methoden mit stark typisierten Parametern verfügbar gemacht werden. Mithilfe des WCF-Dienstmodells können Sie die Vorgänge aufrufen, die vom Oracle Database-Adapter als .NET-Methoden auf dem WCF-Client verfügbar gemacht werden. Weitere Informationen zu WCF-Clients finden Sie unter "WCF-Clientübersicht" unter https://go.microsoft.com/fwlink/?LinkId=91458.

  • Im WCF-Dienstmodell wird der Dienstvertrag, der von einem Dienst verfügbar gemacht wird, durch eine Schnittstelle dargestellt. Diese verwaltete Codedarstellung des Dienstvertrags wird als WCF-Dienstvertrag bezeichnet. Der WCF-Dienstvertrag modelliert Vorgänge als Methoden mit stark typisierten Parametern. Um einen Vorgang von einem Client zu empfangen, implementieren Sie eine Klasse, den WCF-Dienst, über diese Schnittstelle. Anschließend können Sie eine instance dieser Klasse in einem System.ServiceModel.ServiceHost hosten, damit ein Client den Vorgang für Ihren Code aufrufen kann. Mithilfe des WCF-Dienstmodells und eines WCF-Dienstvertrags, der auf den POLLINGSTMT-Vorgang ausgerichtet ist, können Sie die Ergebnisse eines Abrufvorgangs für die Oracle-Datenbank mithilfe des Oracle Database-Adapters erhalten.

    Sie verwenden Tools, um eine WCF-Clientklasse oder einen WCF-Dienstvertrag und den zugehörigen Hilfscode aus den Dienstmetadaten zu generieren, die der Oracle Database-Adapter verfügbar macht. Sie können eines der folgenden Tools verwenden:

  • Das ServiceModel Metadata Utility Tool (svcutil.exe), das im Lieferumfang von WCF enthalten ist

  • Das Visual Studio-Plug-In Zum Hinzufügen des Adapterdiensts, das im Lieferumfang des Oracle Database-Adapters enthalten ist

    Das Add Adapter Service Reference Plug-In ist in die Visual Studio-Entwurfsoberfläche integriert und stellt eine Standardmäßige Microsoft Windows-Schnittstelle bereit, die leistungsstarke Browser- und Suchfunktionen für Vorgänge bietet, die vom Adapter verfügbar gemacht werden. Weitere Informationen zum Generieren eines WCF-Clients oder eines WCF-Dienstvertrags finden Sie unter Generieren eines WCF-Clients oder eines WCF-Dienstvertrags für Oracle Database-Lösungsartefakte.

    Da es ein Modell darstellt, das .NET-Programmierern vertraut ist und die zugrunde liegende Komplexität des SOAP-Nachrichtenaustauschs über einen Kanal ausblendet, ist das WCF-Dienstmodell häufig die beste Wahl, um Programmierlösungen für den Oracle Database-Adapter zu entwickeln. Es gibt jedoch Szenarien, in denen das WCF-Kanalmodell die bessere Wahl sein kann. Beispielsweise unterstützt das WCF-Dienstmodell nur Streaming für den ReadLOB-Vorgang. Dies liegt daran, dass die Serialisierung und Deserialisierung zwischen der XML-Darstellung von Objekten in einer SOAP-Nachricht und den .NET-Typen, die zu ihrer Darstellung im Dienstmodell verwendet werden, das Lesen der gesamten Nachricht in den Arbeitsspeicher umfasst. (Das Ergebnis eines ReadLOB-Vorgangs ist eine Ausnahme von dieser Regel.)

    Das WCF-Kanalmodell bietet Unterstützung für das Streaming auf XML-Knotenebene für alle Vorgänge und das Streaming auf Datenebene für die Vorgänge ReadLOB und UpdateLOB. Wenn Sie mit Abfragen zu tun haben, die große Resultsets zurückgeben oder versuchen, ein LOB-Feld in einer Tabelle zu aktualisieren, ist das WCF-Kanalmodell möglicherweise die bessere Wahl. Weitere Informationen zur Verwendung des WCF-Kanalmodells finden Sie unter Entwickeln von Oracle-Datenbankanwendungen mithilfe des WCF-Kanalmodells.

    Die Themen in diesem Abschnitt enthalten Informationen, Verfahren und Beispiele, die Sie beim Erstellen und Verwenden des WCF-Dienstmodells zum Entwickeln von Anwendungen mithilfe des Oracle Database-Adapters unterstützen.

In diesem Abschnitt