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.
In diesem Abschnitt erfahren Sie, wie Sie Windows Communication Foundation (WCF)-Verträge definieren und implementieren. Ein Dienstvertrag gibt an, was ein Endpunkt mit der Außenwelt kommuniziert. Auf einer konkreteren Ebene handelt es sich um eine Aussage über eine Reihe bestimmter Nachrichten, die in grundlegende Nachrichtenaustauschmuster (MEPs) organisiert sind, z. B. Anfrage/Antwort, Unidirektionale und Duplex. Wenn es sich bei einem Dienstvertrag um einen logischen Satz von Nachrichtenaustausch handelt, handelt es sich bei einem Dienstvorgang um einen einzelnen Nachrichtenaustausch. Ein Hello Vorgang muss offensichtlich eine Nachricht annehmen (damit der Anrufer die Begrüßung ankündigen kann) und kann abhängig von der Höflichkeit des Vorgangs eine Nachricht zurückgeben oder auch nicht.
Weitere Informationen zu Verträgen und anderen kernen WCF-Konzepten finden Sie unter Grundlegende Konzepte von Windows Communication Foundation. In diesem Thema geht es um das Verständnis von Serviceverträgen. Weitere Informationen zum Erstellen von Clients, die Dienstverträge für die Verbindung mit Diensten verwenden, finden Sie unter WCF Client Overview. Weitere Informationen zu Clientkanälen, der Clientarchitektur und anderen Clientproblemen finden Sie unter Clients.
Überblick
Dieses Thema bietet eine allgemeine konzeptionelle Ausrichtung für das Entwerfen und Implementieren von WCF-Diensten. Unterthemen enthalten detailliertere Informationen zu den Besonderheiten des Entwerfens und Implementierens. Bevor Sie Ihre WCF-Anwendung entwerfen und implementieren, empfiehlt es sich, Folgendes zu beachten:
Verstehen, was ein Servicevertrag ist, wie er funktioniert und wie man einen vertrag erstellt.
Verstehen Sie, dass Verträge Mindestanforderungen angeben, die die Laufzeitkonfiguration oder die Hostingumgebung möglicherweise nicht unterstützen.
Dienstverträge
Ein Servicevertrag ist eine Erklärung, die Informationen zu folgenden Themen bereitstellt:
Die Gruppierung von Vorgängen in einem Dienst.
Die Signatur der Vorgänge in Bezug auf ausgetauschte Nachrichten.
Die Datentypen dieser Nachrichten.
Der Standort der Abläufe.
Die spezifischen Protokolle und Serialisierungsformate, die verwendet werden, um eine erfolgreiche Kommunikation mit dem Dienst zu unterstützen.
Beispielsweise kann ein Auftragsvertrag einen CreateOrder Vorgang haben, der eine Eingabe von Bestellinformationstypen akzeptiert und Erfolgs- oder Fehlerinformationen zurückgibt, einschließlich eines Auftragsbezeichners. Möglicherweise verfügt er auch über einen GetOrderStatus Vorgang, der einen Auftragsbezeichner akzeptiert und Bestellstatusinformationen zurückgibt. Ein Servicevertrag 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 Nachrichten übertragen können.
Kategorisierte Aussagen über die Kommunikationsinfrastruktur, die zum erfolgreichen Verarbeiten der Nachrichten erforderlich ist. Diese Details umfassen beispielsweise, ob und welche Sicherheitsformen erforderlich sind, um eine erfolgreiche Kommunikation herzustellen.
Um diese Art von Informationen an Anwendungen auf anderen Plattformen (einschließlich nicht von Microsoft stammender Plattformen) zu vermitteln, werden XML-Serviceverträge öffentlich in Standard-XML-Formaten ausgedrückt, z. B. Web Services Description Language (WSDL) und XML-Schema (XSD) unter anderem. Entwickler für viele Plattformen können diese Informationen für öffentliche Verträge verwenden, um Anwendungen zu erstellen, die mit dem Dienst kommunizieren können, da sie sowohl die Sprache der Spezifikation verstehen als auch, da diese Sprachen darauf ausgelegt sind, die Interoperabilität zu ermöglichen, indem die öffentlichen Formulare, Formate und Protokolle beschrieben werden, die der Dienst unterstützt. Weitere Informationen dazu, wie WCF diese Art von Informationen behandelt, finden Sie unter Metadaten.
Verträge können jedoch auf viele Arten ausgedrückt werden, und während WSDL und XSD hervorragende Sprachen sind, um Dienste auf barrierefreie Weise zu beschreiben, sind sie schwierig, direkt zu verwenden – in jedem Fall sind sie lediglich Beschreibungen eines Diensts, nicht von Dienstvertragsimplementierungen. Daher verwenden WCF-Anwendungen verwaltete Attribute, Schnittstellen und Klassen sowohl zum Definieren der Struktur als auch zum Implementieren eines 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 mithilfe öffentlicher Metadaten für jede Clientanwendung beschrieben werden kann. Die Details der zugrunde liegenden SOAP-Nachrichten, z. B. transport- und sicherheitsbezogene Informationen, können wcf überlassen werden, wodurch automatisch die erforderlichen Konvertierungen in und vom Dienstvertragssystem in das XML-Typsystem ausgeführt werden.
Weitere Informationen zum Entwerfen von Verträgen finden Sie unter Entwerfen von Serviceverträgen. Weitere Informationen zum Implementieren von Verträgen finden Sie unter Implementieren von Serviceverträgen.
Darüber hinaus bietet WCF auch 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.
Grundlegendes zur Hierarchie der Anforderungen
Ein Servicevertrag gruppiert die Vorgänge; gibt den Mep, Nachrichtentypen und Datentypen an, die diese Nachrichten übertragen; und gibt Kategorien des Laufzeitverhaltens an, für die eine Implementierung den Vertrag unterstützen muss (z. B. kann es erforderlich sein, dass Nachrichten verschlüsselt und signiert werden). Der Servicevertrag selbst gibt jedoch nicht genau an, wie diese Anforderungen erfüllt werden, nur, dass sie sein müssen. Welche Art von Verschlüsselung oder wie eine Nachricht signiert wird, gilt für die Implementierung und Konfiguration eines kompatiblen Diensts.
Beachten Sie, dass der Vertrag bestimmte Anforderungen an die Implementierung des Dienstvertrags und die Laufzeitkonfiguration stellt, um das Verhalten anzupassen. Die Gruppe der Anforderungen, die erfüllt werden müssen, um einen Dienst für die Verwendung verfügbar zu machen, basiert auf der vorherigen Gruppe von Anforderungen. Wenn ein Vertrag Anforderungen an die Implementierung vorschreibt, kann eine Implementierung noch mehr Konfiguration und Bindungen erfordern, mit denen der Dienst ausgeführt werden kann. Schließlich muss die Hostanwendung auch alle Anforderungen unterstützen, die von der Dienstkonfiguration und Bindungen hinzugefügt werden.
Dieser additive Anforderungsprozess ist wichtig, um beim Entwerfen, Implementieren, Konfigurieren und Hosten Ihrer Windows Communication Foundation (WCF)-Dienstanwendung zu berücksichtigen. Beispielsweise kann der Vertrag angeben, dass er eine Sitzung unterstützen muss. Wenn ja, müssen Sie die Bindung so konfigurieren, dass diese vertragliche Anforderung unterstützt wird, oder die Dienstimplementierung funktioniert nicht. Wenn Ihr Dienst integrierte Windows-Authentifizierung erfordert und in Internetinformationsdienste (Internet Information Services, IIS) gehostet wird, muss die Webanwendung, in der sich der Dienst befindet, die integrierte Windows-Authentifizierung aktiviert haben und anonyme Unterstützung deaktiviert ist. Weitere Informationen zu den Features und Auswirkungen der verschiedenen Diensthostanwendungstypen finden Sie unter "Hosting".