Verträge
In diesem Abschnitt erfahren Sie, wie Sie Windows Communication Foundation (WCF)-Verträge definieren und implementieren. Ein Dienstvertrag gibt an, was ein Endpunkt an die Außenwelt kommuniziert. Konkreter gesagt ist er ein Anweisung zu mehreren bestimmten Nachrichten, die in grundlegende Nachrichtenaustauschmuster aufgeteilt sind, wie Anforderung/Antwort, unidirektional und Duplex. Wenn ein Dienstvertrag ein logisch zusammengehöriger Satz von Vorgängen des Nachrichtenaustauschs ist, dann ist ein Dienstvorgang ein einzelner Nachrichtenaustausch. Beispielsweise muss ein Hello
-Vorgang natürlich eine Nachricht annehmen (damit der Aufrufer den Gruß ankündigen kann) und kann dann eine Nachricht zurückgeben (je nach Verfügung des Vorgangs).
Weitere Informationen zu Verträgen und anderen zentralen Begriffen von Windows Communication Foundation (WCF) finden Sie unter Wesentliche Windows Communication Foundation-Begriffe. In diesem Thema werden in erster Linie Kenntnisse über Dienstverträge vermittelt. Weitere Informationen zum Erstellen von Clients, die Dienstverträge zur Herstellung einer Verbindung mit Diensten verwenden, finden Sie unter Übersicht über den WCF-Client. Weitere Informationen zu Clientkanälen, der Clientarchitektur und anderen Clientproblemen finden Sie unter Clients.
Übersicht
Dieses Thema bietet eine allgemeine Orientierung zum Entwerfen und Implementieren von WCF-Diensten. Untergeordneten Themen bieten ausführlichere Informationen zu den Besonderheiten des Entwerfens und Implementierens. Bevor Sie Ihre WCF-Anwendung entwerfen und implementieren, sollten Sie Folgendes beachten:
Kenntnisse darüber, was ein Dienstvertrag ist, wie er funktioniert und erstellt wird.
Kenntnisse darüber, dass Verträge Mindestanforderungen angeben, die Laufzeitkonfiguration oder die Hostumgebung möglicherweise nicht unterstützt.
Dienstverträge
Ein Dienstvertrag ist eine Anweisung, die Informationen zu folgenden Parametern enthält:
Die Gruppierung von Vorgängen in einem Dienst.
Die Signatur der Vorgänge in Bezug auf ausgetauschte Nachrichten.
Die Datentypen dieser Nachrichten.
Der Speicherort der Vorgänge.
Die spezifischen Protokolle und Serialisierungsformate, die verwendet werden, um die erfolgreiche Kommunikation mit dem Dienst zu unterstützen.
Beispielsweise kann ein Vertrag für eine Bestellung einen CreateOrder
-Vorgang aufweisen, der eine Eingabe von Bestellinformationstypen annimmt und Erfolgs- oder Fehlerinformationen einschließlich einer Bestellnummer zurückgibt. Er kann auch einen GetOrderStatus
-Vorgang aufweisen, der eine Bestellnummer annimmt und Bestellstatusinformationen zurückgibt. Ein Dienstvertrag dieser Art würde Folgendes angeben:
Dass der Vertrag für die Bestellung aus
CreateOrder
- undGetOrderStatus
-Vorgänge besteht.Dass die Vorgänge Eingabemeldungen und Ausgabemeldungen angegeben haben.
Die Daten, die diese Meldungen enthalten können.
Nach Kategorien geordnete Anweisungen zur für die erfolgreiche Verarbeitung der Meldungen erforderlichen Kommunikationsinfrastruktur. Beispielsweise schließen diese Details ein, ob und welche Formen von Sicherheit erforderlich sind, um eine erfolgreiche Kommunikation herzustellen.
Um diese Informationen an Anwendungen auf anderen Plattformen (einschließlich Nicht-Microsoft-Plattformen) zu vermitteln, werden XML-Dienstverträge öffentlich in XML-Standardformaten ausgedrückt, unter anderem in Web Services Description Language (WSDL) (möglicherweise in englischer Sprache) und als XML-Schema (XSD) (möglicherweise in englischer Sprache). Entwickler für viele Plattformen können mithilfe dieser öffentlichen Vertragsinformationen Anwendungen erstellen, die mit dem Dienst kommunizieren können, da sie die Sprache der Spezifikation verstehen und diese Sprachen für das Ermöglichen der Interoperation konzipiert sind, indem sie die öffentlichen Formulare, Formate und Protokolle beschreiben, die der Dienst unterstützt. Weitere Informationen darüber, wie diese Informationen von WCF verarbeitet werden, finden Sie unter Metadaten.
Verträge können allerdings auf verschiedene Weise ausgedrückt werden; WSDL und XSD sind zwar ausgezeichnete Sprachen zum Beschreiben von Diensten beim Zugriff, jedoch schwierige Sprachen bei der direkten Verwendung. Sie sind lediglich Beschreibungen eines Dienstes und keine Dienstvertragsimplementierungen. Daher verwenden WCF-Anwendungen verwaltete Attribute, Schnittstellen und Klassen zum Definieren der Struktur eines Diensts und zum Implementieren dieses Diensts.
Der resultierende, in verwalteten Typen definierte Vertrag kann als Metadaten (WSDL und XSD) konvertiert (bzw. exportiert) werden, wenn er von Clients oder anderen Dienstimplementierern benötigt wird, insbesondere auf anderen Plattformen. Das Ergebnis ist ein einfaches Programmiermodell, das mit öffentlichen Metadaten für jede Clientanwendung beschrieben werden kann. Die Details der zugrunde liegenden SOAP-Nachrichten, wie die Informationen zu Transport und Sicherheit, können WCF überlassen werden, wo die erforderlichen Konvertierungen zum und vom Dienstvertragstypsystem zum XML-Typsystem automatisch ausgeführt werden.
Weitere Informationen zum Entwerfen von Verträgen finden Sie unter Entwerfen von Dienstverträgen. Weitere Informationen zum Implementieren von Verträgen finden Sie unter Implementieren von Dienstverträgen.
Außerdem bietet WCF die Möglichkeit, Dienstverträge vollständig auf Nachrichtenebene zu entwickeln. Weitere Informationen zum Entwickeln von Serviceverträgen auf Nachrichtenebene finden Sie unter Verwenden von Nachrichtenverträgen. Weitere Informationen zum Entwickeln von Diensten in NICHT-SOAP-XML finden Sie unter Interoperabilität mit POX-Anwendungen.
Grundlagen der Anforderungshierarchie
Ein Dienstvertrag gruppiert die Vorgänge, gibt das Nachrichtenaustauschmuster, die Nachrichtentypen und Datentypen an, die diese Nachrichten enthalten, und zeigt Kategorien von Laufzeitverhalten an, die eine Implementierung aufweisen muss, um den Vertrag zu unterstützen (z. B. dass Nachrichten verschlüsselt und signiert sein müssen). Der Dienstvertrag selbst gibt nicht genau an, wie diese Anforderungen erfüllt werden, sondern lediglich, dass sie erfüllt werden müssen. Welcher Verschlüsselungstyp verwendet wird oder wie eine Nachricht signiert wird, hängt von der Implementierung und Konfiguration eines kompatiblen Dienstes ab.
Beachten Sie, dass der Vertrag bestimmte Anforderungen an die Dienstvertragsimplementierung und die Laufzeitkonfiguration stellt, um ein Verhalten hinzuzufügen. Die Anforderungen, um einen Dienst für die Verwendung verfügbar zu machen, bauen auf den vorherigen Anforderungen auf. Wenn ein Vertrag Anforderungen an die Implementierung stellt, kann eine Implementierung noch weitere Anforderungen an die Konfiguration und die Bindungen stellen, die die Ausführung des Dienstes ermöglichen. Außerdem muss die Hostanwendung auch alle Anforderungen unterstützen, die die Dienstkonfiguration und die Bindungen hinzufügen.
Beachten Sie unbedingt diesen zusätzlichen Anforderungsprozess beim Entwerfen, Implementieren, Konfigurieren und Hosten Ihrer WCF-Dienstanwendung (Windows Communication Foundation). Beispielsweise kann der Vertrag angeben, dass er eine Sitzung unterstützen muss. In diesem Fall müssen Sie die Bindung so konfigurieren, dass sie diese Vertragsanforderung unterstützt, oder die Dienstimplementierung funktioniert nicht. Wenn der Dienst integrierte Windows-Authentifizierung erfordert und in Internetinformationsdienste (IIS) gehostet wird, muss für die Webanwendung, in der sich der Dienst befindet, die integrierte Windows-Authentifizierung aktiviert und der anonyme Support deaktiviert sein. Weitere Informationen zu den Funktionen und den Auswirkungen der verschiedenen Diensthost-Anwendungstypen finden Sie unter Hosting.