Freigeben über


Objektmodell für WCF-Webprogrammierung

Das HTTP-Webprogrammierungsmodell ermöglicht Entwicklern, Windows Communication Foundation (WCF)-Webdienste durch grundlegende HTTP-Anforderungen ohne SOAP verfügbar zu machen. Das HTTP-Webprogrammierungsmodell wird zusätzlich zum vorhandenen WCF-Erweiterbarkeitsmodell erstellt. Mit diesem Modell werden folgende Klassen definiert:

Programmiermodell:

Kanäle und Verteilerinfrastruktur:

Dienstprogrammklassen und Erweiterungspunkte:

WebGetAttribute

Das WebGetAttribute-Attribut wird dazu verwendet, einen Dienstvorgang als einen Vorgang zu kennzeichnen, der auf HTTP GET-Anforderungen reagiert. Es handelt sich um ein passives Vorgangsverhalten (von den IOperationBehavior-Methoden werden keine Aktionen ausgeführt), durch das der Vorgangsbeschreibung Metadaten hinzugefügt werden. Die Anwendung von WebGetAttribute hat nur dann Auswirkungen, wenn ein Verhalten, das in der Vorgangsbeschreibung nach diesen Metadaten sucht (insbesondere WebHttpBehavior), der Verhaltensauflistung des Diensts hinzugefügt wird. Das WebGetAttribute-Attribut verwendet die in der folgenden Tabelle beschriebenen optionalen Parameter.

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 die Formatierung von Anforderungsnachrichten.

ResponseFormat

Steuert die Formatierung von Antwortnachrichten.

UriTemplate

Gibt die URI-Vorlage an, mit der gesteuert wird, welche GET-Anforderungen dem Dienstvorgang zugeordnet werden, auf den das Attribut angewendet wird.

WebHttpBinding

Die WebHttpBinding bietet mit dem WebMessageEncodingBindingElement Unterstützung für XML-, JSON- und unformatierte Binärdaten. Das Element besteht aus HttpsTransportBindingElement, HttpTransportBindingElement und einem WebHttpSecurity-Objekt. Die WebHttpBinding wurde so konzipiert, dass sie in Verbindung mit WebHttpBehavior verwendet werden kann.

WebInvokeAttribute

Das WebInvokeAttribute-Attribut ist vergleichbar mit WebGetAttribute, wird jedoch dazu verwendet, einen Dienstvorgang als einen Vorgang zu kennzeichnen, der auf andere HTTP-Anforderungen als GET antwortet. Es handelt sich um ein passives Vorgangsverhalten (von den IOperationBehavior-Methoden werden keine Aktionen ausgeführt), durch das der Vorgangsbeschreibung Metadaten hinzugefügt werden. Die Anwendung von WebInvokeAttribute hat nur dann Auswirkungen, wenn ein Verhalten, das in der Vorgangsbeschreibung nach diesen Metadaten sucht (insbesondere WebHttpBehavior), der Verhaltensauflistung des Diensts hinzugefügt wird.

Das WebGetAttribute-Attribut verwendet die in der folgenden Tabelle beschriebenen optionalen Parameter.

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

RequestFormat

Steuert die Formatierung von Anforderungsnachrichten.

ResponseFormat

Steuert die Formatierung von Antwortnachrichten.

UriTemplate

Gibt die URI-Vorlage an, mit der gesteuert wird, 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 werden. Jedes Segment kann über einen Literalwert, einen Variablenwert (wird in geschweiften Klammern [{ }] geschrieben und ist entsprechend dem Inhalt genau eines Segments beschränkt) oder einen Platzhalter verfügen (wird als Sternchen [*] geschrieben, das dem "Rest des Pfads" entspricht), der am Ende des Pfads angezeigt werden muss. Der Abfrageausdruck kann vollständig weggelassen werden. Sofern der Abfrageausdruck vorhanden ist, wird eine ungeordnete Reihe von Namen- und Wertpaaren angegeben. Bei den Elementen des Abfrageausdrucks kann es sich entweder um literale Paare (? x=2) oder variable Paare (? x = {Wert}) handeln. Alleinstehende Werte sind nicht zulässig. UriTemplate wird intern vom WCF-Webprogrammierungsmodell verwendet, um Dienstvorgängen bestimmte URIs oder Gruppen von URIs zuzuordnen.

UriTemplateTable

Die UriTemplateTable-Klasse stellt einen assoziativen Satz von UriTemplate-Objekten dar, die an ein Objekt nach Wahl des Entwicklers gebunden sind. Mit dieser Klasse werden Kandidaten-URIs (Uniform Resource Identifiers) mit den Vorlagen im Satz abgeglichen und die den übereinstimmenden Vorlagen zugeordneten Daten abgerufen. UriTemplateTable wird intern vom WCF-Webprogrammierungsmodell verwendet, um bestimmte URIs oder Gruppen von URIs Dienstvorgängen zuzuordnen.

WebServiceHost

WebServiceHost erweitert ServiceHost, um das Hosten eines Nicht-SOAP-Webdiensts zu vereinfachen. Werden von WebServiceHost in der Dienstbeschreibung keine Endpunkte gefunden, wird automatisch ein Standardendpunkt an der Basisadresse des Diensts erstellt. Beim Erstellen eines standardmäßigen HTTP-Endpunkts deaktiviert WebServiceHost auch die HTTP-Hilfeseite und die GET-Funktion von Web Services Description Language (WSDL), damit der Metadatenendpunkt nicht in Konflikt mit dem standardmäßigen HTTP-Endpunkt gerät. 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 dazu verwendet, dynamisch einen WebServiceHost zu erstellen, wenn ein Dienst unter Internetinformationsdienste (IIS) oder Windows Process Activation Service (WAS) gehostet wird. Im Gegensatz zu einem selbst gehosteten Dienst, bei dem WebServiceHost von der Hostanwendung instanziiert wird, erstellen unter IIS oder WAS gehostete Dienste mithilfe dieser Klasse den WebServiceHost für den Dienst. Die CreateServiceHost-Methode wird aufgerufen, wenn eine eingehende Anforderung für den Dienst empfangen wird.

WebHttpBehavior

WebHttpBehavior stellt die erforderlichen Formatierungsprogramme, Vorgangsselektoren usw. bereit, die für die Unterstützung von Webdiensten auf der Dienstmodellebene erforderlich sind. Dieses Verhalten wird als Endpunktverhalten implementiert (das in Verbindung mit der WebHttpBinding verwendet wird) und ermöglicht die Angabe von Formatierungsprogrammen und Vorgangsselektoren für jeden Endpunkt, sodass von derselben Dienstimplementierung sowohl SOAP- als auch POX-Endpunkte verfügbar gemacht werden können.

Erweitern von WebHttpBehavior

WebHttpBehavior ist durch eine Reihe von virtuellen Methoden erweiterbar: GetOperationSelector, GetReplyClientFormatter, GetRequestClientFormatter, GetReplyDispatchFormatter und GetRequestDispatchFormatter. Entwickler können eine Klasse von WebHttpBehavior ableiten und diese Methoden überschreiben, um das Standardverhalten anzupassen.

WebScriptEnablingBehavior ist ein Beispiel für die Erweiterung von WebHttpBehavior. WebScriptEnablingBehavior ermöglicht Windows Communication Foundation (WCF)-Endpunkten den Empfang von HTTP-Anforderungen von einem browserbasierten ASP.NET AJAX-Client. Ein Beispiel für die Verwendung dieses Erweiterungspunkts finden Sie unter HTML Form Handler Sample.

WebHttpDispatchOperationSelector

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

Kompatibilität

Das WCF-Webprogrammierungsmodell 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 finden Sie unter Gewusst wie: Verfügbarmachen eines Vertrags für SOAP- und Webclients.

Siehe auch

Referenz

WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebHttpBehavior
WebHttpDispatchOperationSelector

Konzepte

Überblick über WCF-Webprogrammiermodelle