Entwerfen und Implementieren von DienstenDesigning and Implementing Services

In diesem Abschnitt wird veranschaulicht, wie definieren und implementieren WCFWCF Verträge.This section shows you how to define and implement WCFWCF 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 grundlegende Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) Konzepte, finden Sie unter grundlegenden Windows Communication Foundation-Begriffe.For more information about contracts and other core Windows Communication Foundation (WCF)Windows Communication Foundation (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.

ÜbersichtOverview

Dieses Thema bietet eine allgemeine Orientierung über das Entwerfen und Implementieren von WCFWCF-Diensten.This topic provides a high level conceptual orientation to designing and implementing WCFWCF services. Untergeordnete Themen bieten ausführlichere Informationen zu den Besonderheiten des Entwerfens und Implementierens.Subtopics provide more detailed information about the specifics of design and implementation. Vor dem Entwerfen und Implementieren der WCFWCF-Anwendung werden die folgenden Voraussetzungen empfohlen:Before designing and implementing your WCFWCF 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 die Laufzeitkonfiguration oder die Hostumgebung möglicherweise nicht unterstützen.Understand that contracts state minimum requirements that runtime configuration or the hosting environment may not support.

DienstverträgeService Contracts

Ein Dienstvertrag gibt Folgendes an:A service contract specifies the following:

  • Die Vorgänge, die ein Vertrag verfügbar macht.The operations a contract exposes.

  • 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:

  1. 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.

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

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

  4. 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 für andere Anwendungen auf vielen 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 other applications on many 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 dazu, wie WCFWCF Handles, die dieser Art von Informationen finden Sie unter Metadaten.For more information about how WCFWCF handles this kind of information, see Metadata.

Verträge können 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 Diensts und keine Dienstvertragsimplementierungen.Contracts can be expressed many ways, and while WSDL and XSD are excellent languages to describe services in an accessible way, they are difficult languages to use directly and are merely descriptions of a service, not service contract implementations. Daher verwenden WCFWCF-Anwendungen verwaltete Attribute, Schnittstellen und Klassen zum Definieren der Struktur eines Diensts und zum Implementieren dieses Diensts.Therefore, WCFWCF applications use managed attributes, interfaces, and classes both to define the structure of a service and to implement it.

Der resultierende in verwalteten Typen definierte Vertrag kann exportiert als Metadaten – WSDL und XSD – Wenn von Clients oder anderen dienstimplementierern benötigt wird.The resulting contract defined in managed types can be exported as metadata—WSDL and XSD—when needed by clients or other service implementers. 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 die Informationen zu Transport und Sicherheit, können WCFWCF überlassen werden, das die erforderlichen Konvertierungen zum und vom Dienstvertragstypsystem zum XML-Typsystem automatisch ausführt.The details of the underlying SOAP messages, the transportation and security-related information, and so on, can be left to WCFWCF, which performs the necessary conversions to and from the service contract type system to the XML type system automatically.

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.

Nachrichten im MittelpunktMessages Up Front and Center

Die Verwendung verwalteter Schnittstellen, Klassen und Methoden zur Modellierung von Dienstvorgängen ist unkompliziert, wenn Sie mit Methodensignaturen im RPC-Stil (Remote Procedure Call) vertraut sind. Bei dieser Methode stellt die Übergabe von Parametern an eine Methode und der Empfang der Rückgabewerte die normale Form dar, Funktionen von einem Objekt oder einem anderen Codetyp anzufordern.Using managed interfaces, classes, and methods to model service operations is straightforward when you are used to remote procedure call (RPC)-style method signatures, in which passing parameters into a method and receiving return values is the normal form of requesting functionality from an object or other type of code. Programmierer, die beispielsweise verwaltete Sprachen wie Visual BasicVisual Basic und C++ COM verwenden, wenden ihre Kenntnisse des RPC-ähnlichen Ansatzes (egal ob sie Objekte oder Schnittstellen verwenden) auf die Erstellung von WCFWCF-Dienstverträgen an, ohne auf die Probleme zu stoßen, die in verteilten RPC-Objektsystemen bekannt sind.For example, programmers using managed languages such as Visual BasicVisual Basic and C++ COM can apply their knowledge of the RPC-style approach (whether using objects or interfaces) to the creation of WCFWCF service contracts without experiencing the problems inherent in RPC-style distributed object systems. Die Dienstausrichtung bietet den Vorteil lose gekoppelter, nachrichtenorientierter Programmierung, während gleichzeitig die Leichtigkeit und Vertrautheit der RPC-Programmiererfahrung erhalten bleibt.Service orientation provides the benefits of loosely coupled, message-oriented programming while retaining the ease and familiarity of the RPC programming experience.

Viele Programmierer fühlen sich mit nachrichtenorientierten Anwendungsprogrammierschnittstellen, beispielsweise mit Nachrichtenwarteschlangen wie Microsoft MSMQ, den System.Messaging-Namespaces im .NET Framework oder dem Senden unstrukturierter XML in HTTP-Anforderungen wohler.Many programmers are more comfortable with message-oriented application programming interfaces, such as message queues like Microsoft MSMQ, the System.Messaging namespaces in the .NET Framework, or sending unstructured XML in HTTP requests, to name a few. Weitere Informationen zur Programmierung auf Nachrichtenebene finden Sie unter Verwendung von Nachrichtenverträgen, Programmierung auf Kanalebene Dienst, und Interoperabilität mit POX-Anwendungen.For more information about programming at the message level, see Using Message Contracts, Service Channel-Level Programming, and 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 message exchange pattern, 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 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 Diensts ab.The type of encryption or the manner in which 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.

Beachten Sie unbedingt diesen zusätzlichen Anforderungsprozess beim Entwerfen, Implementieren, Konfigurieren und Hosten einer Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Dienstanwendung.This additive requirement process is important to keep in mind while designing, implementing, configuring, and hosting a Windows Communication Foundation (WCF)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 Internetinformationsdiensten 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 Windows Integrated Authentication and is hosted in Internet Information Services (IIS), the Web application in which the service resides must have Windows Integrated 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 Hostingdienste.For more information about the features and impact of the different service host application types, see Hosting Services.

Siehe auchSee Also

Entwerfen von DienstverträgenDesigning Service Contracts
Implementieren von DienstverträgenImplementing Service Contracts