Freigeben über


WCF-Web-HTTP-Programmierobjektmodell

Mit dem WCF WEB-HTTP-Programmiermodell können Entwickler Windows Communication Foundation (WCF)-Webdienste über grundlegende HTTP-Anforderungen verfügbar machen, ohne SOAP zu benötigen. Das WCF WEB HTTP-Programmiermodell basiert auf dem vorhandenen WCF-Erweiterbarkeitsmodell. Es definiert die folgenden Klassen:

Programmiermodell:

Kanäle und Dispatcher-Infrastruktur:

Hilfsklassen und Erweiterbarkeitspunkte:

AspNetCacheProfileAttribute

Der AspNetCacheProfileAttribute, wenn er auf einen Dienstvorgang angewendet wird, gibt das ASP.NET Ausgabecacheprofil in der Konfigurationsdatei an, das verwendet werden soll, um Antworten aus dem Vorgang im ASP .NET-Ausgabecache zwischenzuspeichern. Diese Eigenschaft verwendet nur einen Parameter, den Cacheprofilnamen, der die Cacheeinstellungen in der Konfigurationsdatei angibt.

WebGetAttribute

Das WebGetAttribute Attribut wird verwendet, um einen Dienstvorgang als einen Dienstvorgang zu markieren, der auf HTTP GET-Anforderungen antwortet. Es handelt sich um ein passives Vorgangsverhalten (die IOperationBehavior Methoden tun nichts), das der Vorgangsbeschreibung Metadaten hinzufügt. Das Anwenden der WebGetAttribute Funktion hat keine Auswirkung, es sei denn, ein Verhalten, das in der Vorgangsbeschreibung (insbesondere der WebHttpBehavior) nach diesen Metadaten sucht, wird der Verhaltensauflistung des Diensts hinzugefügt. Das WebGetAttribute Attribut verwendet die optionalen Parameter, die in der folgenden Tabelle angezeigt werden.

Parameter BESCHREIBUNG
BodyStyle Steuert, ob Anforderungen und Antworten, die an den Dienstvorgang, auf den das Attribut angewendet wird, gesendet oder von diesem empfangen werden, umschlossen werden.
RequestFormat Steuert, wie Anforderungsnachrichten formatiert werden.
ResponseFormat Steuert, wie Antwortnachrichten formatiert werden.
UriTemplate Gibt die URI-Vorlage an, die steuert, welche HTTP-Anforderungen dem Dienstvorgang zugeordnet werden, auf den das Attribut angewendet wird.

WebHttpBinding

Die WebHttpBinding Klasse enthält Unterstützung für XML-, JSON- und Unformatierte Binärdaten mithilfe der WebMessageEncodingBindingElement. Es besteht aus einem HttpsTransportBindingElementObjekt HttpTransportBindingElement und einem WebHttpSecurity Objekt. Die WebHttpBinding wurde so konzipiert, dass sie in Verbindung mit WebHttpBehavior verwendet werden kann.

WebInvokeAttribute

Das WebInvokeAttribute Attribut ähnelt dem WebGetAttribute, wird jedoch verwendet, um einen Dienstvorgang als einen Dienstvorgang zu markieren, der auf andere HTTP-Anforderungen als GET antwortet. Es handelt sich um ein passives Vorgangsverhalten (die IOperationBehavior Methoden tun nichts), das der Vorgangsbeschreibung Metadaten hinzufügt. Das Anwenden der WebInvokeAttribute Funktion hat keine Auswirkung, es sei denn, ein Verhalten, das in der Vorgangsbeschreibung (insbesondere der WebHttpBehavior) nach diesen Metadaten sucht, wird der Verhaltensauflistung des Diensts hinzugefügt.

Das WebInvokeAttribute Attribut verwendet die optionalen Parameter, die in der folgenden Tabelle angezeigt werden.

Parameter BESCHREIBUNG
BodyStyle Steuert, ob Anforderungen und Antworten, die an den Dienstvorgang, auf den das Attribut angewendet wird, gesendet oder von diesem empfangen werden, umschlossen werden.
Method Gibt die HTTP-Methode an, der der Dienstvorgang zugeordnet ist.
RequestFormat Steuert, wie Anforderungsnachrichten formatiert werden.
ResponseFormat Steuert, wie Antwortnachrichten formatiert werden.
UriTemplate Gibt die URI-Vorlage an, die steuert, welche GET-Anforderungen dem Dienstvorgang zugeordnet werden, auf den das Attribut angewendet wird.

UriTemplate

Mit der UriTemplate Klasse können Sie einen Satz strukturell ähnlicher URIs definieren. Vorlagen bestehen aus zwei Teilen, einem Pfad und einer Abfrage. Ein Pfad besteht aus einer Reihe von Segmenten, die durch einen Schrägstrich (/) getrennt sind. Jedes Segment kann über einen Literalwert, einen Variablenwert (wird in geschweiften Klammern [{ }] angegeben und muss dem Inhalt genau eines Segments entsprechen) oder einen Platzhalter verfügen (wird als Sternchen [*] angegeben, das als "restlicher Pfad" interpretiert wird), der am Ende des Pfads stehen muss. Der Abfrageausdruck kann vollständig weggelassen werden. Wenn vorhanden, gibt sie eine nicht sortierte Reihe von Namen-Wert-Paaren an. Elemente des Abfrageausdrucks können entweder Literalpaare (?x=2) oder Variablenpaare (?x={value}) sein. Ungepaarte Werte sind nicht zulässig. UriTemplate wird intern vom WCF WEB HTTP Programming Model verwendet, um bestimmte URIs oder Gruppen von URIs dienstvorgängen zuzuordnen.

UriTemplateTable

Die UriTemplateTable Klasse stellt eine assoziative Gruppe von UriTemplate Objekten dar, die an ein Objekt der Auswahl des Entwicklers gebunden sind. Damit können Sie die Kandidaten-URIs (Uniform Resource Identifiers) mit den Vorlagen im Satz abgleichen und die mit den übereinstimmenden Vorlagen verknüpften Daten abrufen. UriTemplateTable wird intern vom WCF WEB HTTP Programming Model verwendet, um bestimmte URIs oder Gruppen von URIs dienstvorgängen zuzuordnen.

WebServiceHost

WebServiceHost erweitert ServiceHost, um das Hosten eines Nicht-SOAP-Webdiensts zu vereinfachen. Wenn WebServiceHost in der Dienstbeschreibung keine Endpunkte gefunden werden, wird automatisch ein Standardendpunkt an der Basisadresse des Diensts erstellt. Beim Erstellen eines standardmäßigen HTTP-Endpunkts deaktiviert die WebServiceHost HTTP-Hilfeseite und die WSDL-GET-Funktionalität (Web Services Description Language), sodass der Metadatenendpunkt den Standard-HTTP-Endpunkt nicht beeinträchtigt. Von WebServiceHost wird zudem gewährleistet, dass an alle Endpunkte, die WebHttpBinding verwenden, das erforderliche WebHttpBehavior angehängt ist. Zuletzt konfiguriert WebServiceHost automatisch die Bindung des Endpunkts für die Kooperation mit den entsprechenden Sicherheitseinstellungen für Internetinformationsdienste (IIS), wenn sie in einem sicheren virtuellen Verzeichnis verwendet wird.

WebServiceHostFactory

Die WebServiceHostFactory-Klasse wird verwendet, um WebServiceHost dynamisch zu erstellen, wenn ein Dienst unter Internet Information Services (IIS) oder dem Windows Process Activation Service (WAS) gehostet wird. Anders als bei einem selbst gehosteten Dienst, bei dem die Hostinganwendung WebServiceHost instanziiert, verwenden unter IIS oder WAS gehostete Dienste diese Klasse, um WebServiceHost für den Dienst zu erstellen. Die CreateServiceHost(Type, Uri[]) Methode wird aufgerufen, wenn eine eingehende Anforderung für den Dienst empfangen wird.

WebHttpBehavior

Die WebHttpBehavior-Klasse stellt die erforderlichen Formatierer, Operationsselektoren und ähnliche Komponenten bereit, die zur Unterstützung von Webdienstfunktionen auf der Dienstmodell-Ebene erforderlich sind. Dies wird als Endpunktverhalten (in Verbindung mit dem WebHttpBinding) implementiert und ermöglicht es Formatierern und Vorgangsauswahlen für jeden Endpunkt anzugeben, wodurch die gleiche Dienstimplementierung sowohl SOAP- als auch POX-Endpunkte verfügbar macht.

Erweitern von WebHttpBehavior

WebHttpBehavior ist erweiterbar, indem eine Reihe virtueller Methoden verwendet wird: GetOperationSelector(ServiceEndpoint), , GetReplyClientFormatter(OperationDescription, ServiceEndpoint), GetRequestClientFormatter(OperationDescription, ServiceEndpoint), , GetReplyDispatchFormatter(OperationDescription, ServiceEndpoint)und GetRequestDispatchFormatter(OperationDescription, ServiceEndpoint). Entwickler können eine Klasse von WebHttpBehavior ableiten und diese Methoden überschreiben, um das Standardverhalten anzupassen.

Das WebScriptEnablingBehavior ist ein Beispiel für die Erweiterung von WebHttpBehavior. WebScriptEnablingBehavior ermöglicht Windows Communication Foundation (WCF)-Endpunkten das Empfangen von HTTP-Anforderungen von einem browserbasierten ASP.NET AJAX-Client. Der AJAX-Dienst mit HTTP POST ist ein Beispiel für die Verwendung dieses Erweiterungspunkts.

Warnung

Wenn Sie das WebScriptEnablingBehavior-Element verwenden, werden UriTemplate innerhalb von WebGetAttribute- oder WebInvokeAttribute-Attributen nicht unterstützt.

WebHttpDispatchOperationSelector

Die WebHttpDispatchOperationSelector-Klasse verwendet die UriTemplate-Klasse und die UriTemplateTable-Klasse, um Aufrufe an Dienstvorgänge zu senden.

Kompatibilität

Das WCF WEB HTTP-Programmiermodell verwendet keine SOAP-basierten Nachrichten und unterstützt daher nicht die WS-*-Protokolle. Sie können jedoch denselben Vertrag durch zwei verschiedene Endpunkte verfügbar machen, von denen einer im Gegensatz zum anderen SOAP verwendet. Ein Beispiel dazu finden Sie unter Vorgehensweise: Verfügbarmachen eines Vertrags für SOAP- und Webclients.

Sicherheit

Da das WCF WEB HTTP-Programmiermodell die WS-*-Protokolle nicht unterstützt, besteht die einzige Möglichkeit zum Sichern eines Webdiensts, der auf dem WCF WEB HTTP-Programmiermodell basiert, darin, Ihren Dienst mit SSL verfügbar zu machen. Weitere Informationen zum Einrichten von SSL mit IIS 7.0 finden Sie unter Implementieren von SSL in IIS.

Siehe auch