VerträgeContracts

In diesem Abschnitt wird gezeigt, wie definieren und Implementieren von Windows Communication Foundation (WCF)-Verträge.This section shows you how to define and implement Windows Communication Foundation (WCF)contracts. Ein Dienstvertrag gibt an, was ein Endpunkt an die Außenwelt kommuniziert.A service contract specifies what an endpoint communicates to the outside world. Konkreter gesagt ist er ein Anweisung zu mehreren bestimmten Nachrichten, die in grundlegende Nachrichtenaustauschmuster aufgeteilt sind, wie Anforderung/Antwort, unidirektional und Duplex.At a more concrete level, it is a statement about a set of specific messages organized into basic message exchange patterns (MEPs), such as request/reply, one-way, and duplex. Wenn ein Dienstvertrag ein logisch zusammengehöriger Satz von Vorgängen des Nachrichtenaustauschs ist, dann ist ein Dienstvorgang ein einzelner Nachrichtenaustausch.If a service contract is a logically related set of message exchanges, a service operation is a single message exchange. 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).For example, a Hello operation must obviously accept one message (so the caller can announce the greeting) and may or may not return a message (depending upon the courtesy of the operation).

Weitere Informationen zu Verträgen und andere Kernkonzepte von WCF, finden Sie unter grundlegenden Windows Communication Foundation-Begriffe.For more information about contracts and other core WCF concepts, see Fundamental Windows Communication Foundation Concepts. In diesem Thema werden in erster Linie Kenntnisse über Dienstverträge vermittelt.This topic focuses on understanding service contracts. Weitere Informationen zur Erstellung von Clients, die Dienstverträge, die für die Verbindung mit Diensten verwenden, finden Sie unter Überblick über WCF-Client.For more information about how to build clients that use service contracts to connect to services, see WCF Client Overview. Weitere Informationen zu Clientkanäle, die Clientarchitektur und andere clientprobleme finden Sie unter Clients.For more information about client channels, the client architecture, and other client issues, see Clients.

ÜbersichtOverview

Dieses Thema bietet eine allgemeine Orientierung über das Entwerfen und Implementieren von WCF-Dienste.This topic provides a high-level conceptual orientation to designing and implementing WCF services. Untergeordneten Themen bieten ausführlichere Informationen zu den Besonderheiten des Entwerfens und Implementierens.Subtopics provide more detailed information about the specifics of designing and implementation. Vor dem Entwerfen und implementieren die WCF-Anwendung, es wird empfohlen, die Sie:Before designing and implementing your WCF application, it is recommended that you:

  • Kenntnisse darüber, was ein Dienstvertrag ist, wie er funktioniert und erstellt wird.Understand what a service contract is, how it works, and how to create one.

  • Kenntnisse darüber, dass Verträge Mindestanforderungen angeben, die Laufzeitkonfiguration oder die Hostumgebung möglicherweise nicht unterstützt.Understand that contracts state minimum requirements that run-time configuration or the hosting environment may not support.

DienstverträgeService Contracts

Ein Dienstvertrag ist eine Anweisung, die Informationen zu folgenden Parametern enthält:A service contract is a statement that provides information about:

  • Die Gruppierung von Vorgängen in einem Dienst.The grouping of operations in a service.

  • Die Signatur der Vorgänge in Bezug auf ausgetauschte Nachrichten.The signature of the operations in terms of messages exchanged.

  • Die Datentypen dieser Nachrichten.The data types of these messages.

  • Der Speicherort der Vorgänge.The location of the operations.

  • Die spezifischen Protokolle und Serialisierungsformate, die verwendet werden, um die erfolgreiche Kommunikation mit dem Dienst zu unterstützen.The specific protocols and serialization formats that are used to support successful communication with the service.

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.For example, a purchase order contract might have a CreateOrder operation that accepts an input of order information types and returns success or failure information, including an order identifier. Er kann auch einen GetOrderStatus-Vorgang aufweisen, der eine Bestellnummer annimmt und Bestellstatusinformationen zurückgibt.It might also have a GetOrderStatus operation that accepts an order identifier and returns order status information. Ein Dienstvertrag dieser Art würde Folgendes angeben:A service contract of this sort would specify:

  • Dass der Vertrag für die Bestellung aus CreateOrder- und GetOrderStatus-Vorgänge besteht.That the purchase order contract consisted of CreateOrder and GetOrderStatus operations.

  • Dass die Vorgänge Eingabemeldungen und Ausgabemeldungen angegeben haben.That the operations have specified input messages and output messages.

  • Die Daten, die diese Meldungen enthalten können.The data that these messages can carry.

  • Nach Kategorien geordnete Anweisungen zur für die erfolgreiche Verarbeitung der Meldungen erforderlichen Kommunikationsinfrastruktur.Categorical statements about the communication infrastructure necessary to successfully process the messages. Beispielsweise schließen diese Details ein, ob und welche Formen von Sicherheit erforderlich sind, um eine erfolgreiche Kommunikation herzustellen.For example, these details include whether and what forms of security are required to establish successful communication.

Um diese Art von Informationen zu Anwendungen auf anderen Plattformen (einschließlich nicht-Microsoft-Plattformen) zu vermitteln, XML-Dienstverträge öffentlich in ausgedrückt werden standard-XML-Formaten, z. B. Web Services Description Language (WSDL) und XML-Schema (XSD), o. ä.To convey this kind of information to applications on other platforms (including non-Microsoft platforms), XML service contracts are publicly expressed in standard XML formats, such as Web Services Description Language (WSDL) and XML Schema (XSD), among others. 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.Developers for many platforms can use this public contract information to create applications that can communicate with the service, both because they understand the language of the specification and because those languages are designed to enable interoperation by describing the public forms, formats, and protocols that the service supports. Weitere Informationen zur Behandlung dieser Art von Informationen von WCF finden Sie unter Metadaten.For more information about how WCF handles this kind of information, see Metadata.

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.Contracts can be expressed many ways, however, and while WSDL and XSD are excellent languages to describe services in an accessible way, they are difficult languages to use directly—in any case, they are merely descriptions of a service, not service contract implementations. WCF-Anwendungen verwenden daher verwaltete Attribute, Schnittstellen und Klassen zum Definieren der Struktur und zum Implementieren eines Diensts.Therefore, WCF applications use managed attributes, interfaces, and classes both to define the structure of and to implement a service.

Der resultierende in verwalteten Typen definierte Vertrag konvertiert werden kann (so genannte exportiert) als Metadaten – WSDL und XSD – nach Bedarf durch Clients oder andere Dienstimplementierer, insbesondere auf anderen Plattformen.The resulting contract defined in managed types can be converted (also called exported) as metadata—WSDL and XSD—when needed by clients or other service implementers, especially on other platforms. Das Ergebnis ist ein einfaches Programmiermodell, das mit öffentlichen Metadaten für jede Clientanwendung beschrieben werden kann.The result is a straightforward programming model that can be described using public metadata to any client application. Die Details der zugrunde liegenden SOAP-Nachrichten, wie der Transport und sicherheitsbezogene Informationen können WCF, bleiben, die die erforderlichen Konvertierungen zum und aus dem Dienst Vertrag-Typsystem, das XML-Typsystem automatisch ausführt.The details of the underlying SOAP messages, such as the transportation and security-related information, can be left to WCF, which automatically performs the necessary conversions to and from the service contract type system to the XML type system.

Weitere Informationen zum Entwerfen von Verträgen finden Sie unter Entwerfen von Dienstverträgen.For more information about designing contracts, see Designing Service Contracts. Weitere Informationen zum Implementieren von Verträgen finden Sie unter implementieren Dienstverträge.For more information about implementing contracts, see Implementing Service Contracts.

WCF bietet darüber hinaus auch die Möglichkeit, Dienstverträge vollständig auf Nachrichtenebene zu entwickeln.In addition, WCF also provides the ability to develop service contracts entirely at the message level. Weitere Informationen zum Entwickeln von Dienstverträgen auf Nachrichtenebene finden Sie unter Verwendung von Nachrichtenverträgen.For more information about developing service contracts at the message level, see Using Message Contracts. Weitere Informationen zum Entwickeln von Diensten in SOAP-XML finden Sie unter Interoperabilität mit POX-Anwendungen.For more information about developing services in non-SOAP XML, see Interoperability with POX Applications.

Grundlagen der AnforderungshierarchieUnderstanding the Hierarchy of Requirements

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).A service contract groups the operations; specifies the MEP, message types, and data types those messages carry; and indicates categories of run-time behavior an implementation must have to support the contract (for example, it may require that messages be encrypted and signed). Der Dienstvertrag selbst gibt nicht genau an, wie diese Anforderungen erfüllt werden, sondern lediglich, dass sie erfüllt werden müssen.The service contract itself, however, does not specify precisely how these requirements are met, only that they must be. Welcher Verschlüsselungstyp verwendet wird oder wie eine Nachricht signiert wird, hängt von der Implementierung und Konfiguration eines kompatiblen Dienstes ab.What type of encryption or how a message is signed is up to the implementation and configuration of a compliant service.

Beachten Sie, dass der Vertrag bestimmte Anforderungen an die Dienstvertragsimplementierung und die Laufzeitkonfiguration stellt, um ein Verhalten hinzuzufügen.Notice the way that the contract requires certain things of the service contract implementation and the run-time configuration to add behavior. Die Anforderungen, um einen Dienst für die Verwendung verfügbar zu machen, bauen auf den vorherigen Anforderungen auf.The set of requirements that must be met to expose a service for use builds on the preceding set of requirements. 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.If a contract makes requirements of the implementation, an implementation can require yet more of the configuration and bindings that enable the service to run. Außerdem muss die Hostanwendung auch alle Anforderungen unterstützen, die die Dienstkonfiguration und die Bindungen hinzufügen.Finally, the host application must also support any requirements that the service configuration and bindings add.

Dieser Anforderungsvorgang ist wichtig zu bedenken, beim Entwerfen, implementieren, konfigurieren und Hosten der Windows Communication Foundation (WCF) dienstanwendung.This additive requirement process is important to keep in mind while designing, implementing, configuring, and hosting your Windows Communication Foundation (WCF) service application. Beispielsweise kann der Vertrag angeben, dass er eine Sitzung unterstützen muss.For example, the contract can specify that it needs to support a session. In diesem Fall müssen Sie die Bindung so konfigurieren, dass sie diese Vertragsanforderung unterstützt, oder die Dienstimplementierung funktioniert nicht.If so, then you must configure the binding to support that contractual requirement, or the service implementation will not work. 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.Or if your service requires Integrated Windows authentication and is hosted in Internet Information Services (IIS), the Web application in which the service resides must have Integrated Windows authentication turned on and anonymous support turned off. Weitere Informationen zu den Funktionen und die Auswirkungen von den anderen Dienst Anwendung Hosttypen finden Sie unter Hosting.For more information about the features and impact of the different service host application types, see Hosting.

Siehe auchSee Also

Endpunkte: Adressen, Bindungen und VerträgeEndpoints: Addresses, Bindings, and Contracts
Entwerfen von DienstverträgenDesigning Service Contracts
Implementieren von DienstverträgenImplementing Service Contracts