Objektmodell für WCF-Web-HTTP-ProgrammierungWCF Web HTTP Programming Object Model

Das WCF-Web-HTTP-Programmiermodell ermöglicht Entwicklern, Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Webdienste durch grundlegende HTTP-Anforderungen ohne SOAP verfügbar zu machen.The WCF WEB HTTP Programming Model allows developers to expose Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) Web services through basic HTTP requests without requiring SOAP. Das WCF-Web-HTTP-Programmiermodell wird zusätzlich zum vorhandenen WCFWCF-Erweiterbarkeitsmodell erstellt.The WCF WEB HTTP Programming Model is built on top of the existing WCFWCF extensibility model. Mit diesem Modell werden folgende Klassen definiert:It defines the following classes:

Programmiermodell:Programming Model:

Kanäle und Verteilerinfrastruktur:Channels and Dispatcher Infrastructure:

Hilfsprogrammklassen und Erweiterungspunkte:Utility Classes and Extensibility Points:

AspNetCacheProfileAttributeAspNetCacheProfileAttribute

AspNetCacheProfileAttribute gibt bei Anwendung auf einen Dienstvorgang das ASP.NET-Ausgabecacheprofil in der Konfigurationsdatei an, das zum Zwischenspeichern von Antworten aus dem Vorgang im ASP.NET-Ausgabecache verwendet werden soll.The AspNetCacheProfileAttribute, when applied to a service operation, indicates the ASP.NET output cache profile in the configuration file that should be used by to cache responses from the operation in the ASP .NET Output Cache. Diese Eigenschaft verwendet nur einen Parameter, den Cacheprofilnamen, der die Cacheeinstellungen in der Konfigurationsdatei angibt.This property takes only one parameter, the cache profile name that specifies the cache settings in the configuration file.

WebGetAttributeWebGetAttribute

Das WebGetAttribute-Attribut wird dazu verwendet, einen Dienstvorgang als Vorgang zu kennzeichnen, der auf HTTP GET-Anforderungen reagiert.The WebGetAttribute attribute is used to mark a service operation as one that responds to HTTP GET requests. Es handelt sich um ein passives Vorgangsverhalten (von den IOperationBehavior-Methoden werden keine Aktionen ausgeführt), durch das der Vorgangsbeschreibung Metadaten hinzugefügt werden.It is a passive operation behavior (the IOperationBehavior methods do nothing) that adds metadata to the operation description. 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.Applying the WebGetAttribute has no effect unless a behavior that looks for this metadata in the operation description (specifically, the WebHttpBehavior) is added to the service's behavior collection. Das WebGetAttribute-Attribut verwendet die in der folgenden Tabelle beschriebenen optionalen Parameter.The WebGetAttribute attribute takes the optional parameters shown in the following table.

ParameterParameter BeschreibungDescription
BodyStyle Steuert, ob Anforderungen und Antworten, die an den Dienstvorgang, auf den das Attribut angewendet wird, gesendet oder von diesem empfangen werden, umschlossen werden.Controls whether to wrap requests and responses sent to and received from the service operation the attribute is applied to.
RequestFormat Steuert die Formatierung von Anforderungsnachrichten.Controls how request messages are formatted.
ResponseFormat Steuert die Formatierung von Antwortnachrichten.Controls how response messages are formatted.
UriTemplate Gibt die URI-Vorlage an, mit der gesteuert wird, welche HTTP-Anforderungen dem Dienstvorgang zugeordnet werden, auf den das Attribut angewendet wird.Specifies the URI template that controls what HTTP requests get mapped to the service operation the attribute is applied to.

WebHttpBindingWebHttpBinding

Die WebHttpBinding-Klasse bietet mit dem WebMessageEncodingBindingElement Unterstützung für XML-, JSON- und unformatierte Binärdaten.The WebHttpBinding class incorporates support for XML, JSON, and raw binary data using the WebMessageEncodingBindingElement. Das Element besteht aus HttpsTransportBindingElement, HttpTransportBindingElement und einem WebHttpSecurity-Objekt.It is composed of an HttpsTransportBindingElement, HttpTransportBindingElement and a WebHttpSecurity object. Die WebHttpBinding wurde so konzipiert, dass sie in Verbindung mit WebHttpBehavior verwendet werden kann.The WebHttpBinding is designed to be used in conjunction with the WebHttpBehavior.

WebInvokeAttributeWebInvokeAttribute

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.The WebInvokeAttribute attribute is similar to the WebGetAttribute, but it is used to mark a service operation as one that responds to HTTP requests other than GET. Es handelt sich um ein passives Vorgangsverhalten (von den IOperationBehavior-Methoden werden keine Aktionen ausgeführt), durch das der Vorgangsbeschreibung Metadaten hinzugefügt werden.It is a passive operation behavior (the IOperationBehavior methods do nothing) that adds metadata to the operation description. 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.Applying the WebInvokeAttribute has no effect unless a behavior that looks for this metadata in the operation description (specifically, the WebHttpBehavior) is added to the service's behavior collection.

Das WebInvokeAttribute-Attribut verwendet die in der folgenden Tabelle beschriebenen optionalen Parameter.The WebInvokeAttribute attribute takes the optional parameters shown in the following table.

ParameterParameter BeschreibungDescription
BodyStyle Steuert, ob Anforderungen und Antworten, die an den Dienstvorgang, auf den das Attribut angewendet wird, gesendet oder von diesem empfangen werden, umschlossen werden.Controls whether to wrap requests and responses sent to and received from the service operation the attribute is applied to.
Method Gibt die HTTP-Methode an, der der Dienstvorgang zugeordnet wird.Specifies the HTTP method the service operation is mapped to.
RequestFormat Steuert die Formatierung von Anforderungsnachrichten.Controls how request messages are formatted.
ResponseFormat Steuert die Formatierung von Antwortnachrichten.Controls how response messages are formatted.
UriTemplate Gibt die URI-Vorlage an, mit der gesteuert wird, welche GET-Anforderungen dem Dienstvorgang zugeordnet werden, auf den das Attribut angewendet wird.Specifies the URI template that controls what GET requests get mapped to the service operation the attribute is applied to.

UriTemplateUriTemplate

Mit der UriTemplate-Klasse können Sie einen Satz strukturell ähnlicher URIs definieren.The UriTemplate class allows you to define a set of structurally similar URIs. Vorlagen bestehen aus zwei Teilen, einem Pfad und einer Abfrage.Templates are composed of two parts, a path and a query. Ein Pfad besteht aus einer Reihe von Segmenten, die durch einen Schrägstrich (/) voneinander getrennt werden.A path consists of a series of segments delimited by a slash (/). Jedes Segment kann über einen Literalwert, einen Variablenwert (in der geschweiften Klammern [{}] und dem Inhalt genau eines Segments entsprechen) oder einen Platzhalter verfügen (als Sternchen [*], der "den Rest des Pfads" entspricht), müssen die am stehen das Ende des Pfads.Each segment can have a literal value, a variable value (written within curly braces [{ }], constrained to match the contents of exactly one segment), or a wildcard (written as an asterisk [*], which matches "the rest of the path"), which must appear at the end of the path. Der Abfrageausdruck kann vollständig weggelassen werden.The query expression can be omitted entirely. Sofern der Abfrageausdruck vorhanden ist, wird eine ungeordnete Reihe von Name-Wert-Paaren angegeben.If present, it specifies an unordered series of name/value pairs. Elemente des Abfrageausdrucks kann entweder um Literale Paare (? X = 2) oder Variable Paare (? x = {Wert}).Elements of the query expression can be either literal pairs (?x=2) or variable pairs (?x={value}). Alleinstehende Werte sind nicht zulässig.Unpaired values are not permitted. UriTemplate wird intern vom WCFWCF WEB-HTTP-Programmiermodell verwendet, um Dienstvorgängen bestimmte URIs oder Gruppen von URIs zuzuordnen.UriTemplate is used internally by the WCFWCF WEB HTTP Programming Model to map specific URIs or groups of URIs to service operations.

UriTemplateTableUriTemplateTable

Die UriTemplateTable-Klasse stellt einen assoziativen Satz von UriTemplate-Objekten dar, die an ein Objekt nach Wahl des Entwicklers gebunden sind.The UriTemplateTable class represents an associative set of UriTemplate objects bound to an object of the developer's choosing. Sie ermöglicht es Ihnen, mögliche URIs (Uniform Resource Identifiers) mit den Vorlagen im Satz abzugleichen und die den übereinstimmenden Vorlagen zugeordneten Daten abzurufen.It lets you match candidate Uniform Resource Identifiers (URIs) against the templates in the set and retrieve the data associated with the matching templates. UriTemplateTable wird intern vom WCFWCF WEB-HTTP-Programmiermodell verwendet, um Dienstvorgängen bestimmte URIs oder Gruppen von URIs zuzuordnen.UriTemplateTable is used internally by the WCFWCF WEB HTTP Programming Model to map specific URIs or groups of URIs to service operations.

WebServiceHostWebServiceHost

WebServiceHost erweitert ServiceHost, um das Hosten eines Nicht-SOAP-Webdiensts zu vereinfachen.WebServiceHost extends the ServiceHost to make it easier to host a non-SOAP Web-style service. Werden von WebServiceHost in der Dienstbeschreibung keine Endpunkte gefunden, wird automatisch ein Standardendpunkt an der Basisadresse des Diensts erstellt.If WebServiceHost finds no endpoints in the service description, it automatically creates a default endpoint at the service's base address. Beim Erstellen eines standardmäßigen HTTP-Endpunkts deaktiviert WebServiceHost auch die HTTP-Hilfeseite und die GET-Funktion der Web Services Description Language (WSDL), damit der Metadatenendpunkt nicht in Konflikt mit dem standardmäßigen HTTP-Endpunkt gerät.When creating a default HTTP endpoint, the WebServiceHost also disables the HTTP Help page and the Web Services Description Language (WSDL) GET functionality so the metadata endpoint does not interfere with the default HTTP endpoint. Von WebServiceHost wird zudem gewährleistet, dass an alle Endpunkte, die WebHttpBinding verwenden, das erforderliche WebHttpBehavior angehängt ist.WebServiceHost also ensures that all endpoints that use WebHttpBinding have the required WebHttpBehavior attached. 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.Finally, WebServiceHost automatically configures the endpoint's binding to work with the associated Internet Information Services (IIS) security settings when used in a secure virtual directory.

WebServiceHostFactoryWebServiceHostFactory

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.The WebServiceHostFactory class is used to dynamically create a WebServiceHost when a service is hosted under Internet Information Services (IIS) or Windows Process Activation Service (WAS). 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.Unlike a self-hosted service where the hosting application instantiates the WebServiceHost, services hosted under IIS or WAS use this class to create the WebServiceHost for the service. Die CreateServiceHost(Type, Uri[])-Methode wird aufgerufen, wenn eine eingehende Anforderung für den Dienst empfangen wird.The CreateServiceHost(Type, Uri[]) method is called when a incoming request for the service is received.

WebHttpBehaviorWebHttpBehavior

Die WebHttpBehavior-Klasse stellt die erforderlichen Formatierungsprogramme, Vorgangsselektoren usw. bereit, die für die Unterstützung von Webdiensten auf der Dienstmodellebene erforderlich sind.The WebHttpBehavior class supplies the necessary formatters, operation selectors, and so on, required for Web-style service support at the Service Model layer. 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.This is implemented as an endpoint behavior (used in conjunction with the WebHttpBinding) and allows formatters and operation selectors to be specified for each endpoint, which enables the same service implementation to expose both SOAP and POX endpoints.

Erweitern von WebHttpBehaviorExtending WebHttpBehavior

WebHttpBehavior ist durch eine Reihe von virtuellen Methoden erweiterbar: GetOperationSelector(ServiceEndpoint), GetReplyClientFormatter(OperationDescription, ServiceEndpoint), GetRequestClientFormatter(OperationDescription, ServiceEndpoint), GetReplyDispatchFormatter(OperationDescription, ServiceEndpoint) und GetRequestDispatchFormatter(OperationDescription, ServiceEndpoint).WebHttpBehavior is extensible by using a number of virtual methods: GetOperationSelector(ServiceEndpoint), GetReplyClientFormatter(OperationDescription, ServiceEndpoint), GetRequestClientFormatter(OperationDescription, ServiceEndpoint), GetReplyDispatchFormatter(OperationDescription, ServiceEndpoint), and GetRequestDispatchFormatter(OperationDescription, ServiceEndpoint). Entwickler können eine Klasse von WebHttpBehavior ableiten und diese Methoden überschreiben, um das Standardverhalten anzupassen.Developers can derive a class from WebHttpBehavior and override these methods to customize the default behavior.

WebScriptEnablingBehavior ist ein Beispiel für die Erweiterung von WebHttpBehavior.The WebScriptEnablingBehavior is an example of extending WebHttpBehavior. WebScriptEnablingBehavior ermöglicht Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Endpunkten den Empfang von HTTP-Anforderungen von einem browserbasierten ASP.NET AJAX-Client.WebScriptEnablingBehavior enables Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) endpoints to receive HTTP requests from a browser-based ASP.NET AJAX client. Die AJAX-Dienst mithilfe von HTTP-POST ist ein Beispiel zur Verwendung dieser Erweiterungspunkt.The AJAX Service Using HTTP POST is an example of using this extensibility point.

Warnung

Wenn das WebScriptEnablingBehavior verwendet wird, wird UriTemplate im WebGetAttribute-Attribut oder im WebInvokeAttribute-Attribut nicht unterstützt.When using the WebScriptEnablingBehavior, UriTemplate are not supported within WebGetAttribute or WebInvokeAttribute attributes.

WebHttpDispatchOperationSelectorWebHttpDispatchOperationSelector

Die WebHttpDispatchOperationSelector-Klasse verwendet die UriTemplate-Klasse und die UriTemplateTable-Klasse, um Aufrufe an Dienstvorgänge zu senden.The WebHttpDispatchOperationSelector class uses UriTemplate and UriTemplateTable classes to dispatch calls to service operations.

KompatibilitätCompatibility

Das WCFWCF-Web-HTTP-Programmiermodell verwendet keine SOAP-basierten Nachrichten und unterstützt daher nicht die WS--Protokolle.The WCFWCF WEB HTTP Programming Model does not use SOAP-based messages and therefore does not support the WS- protocols. Sie können jedoch denselben Vertrag durch zwei verschiedene Endpunkte verfügbar machen, von denen einer im Gegensatz zum anderen SOAP verwendet.You can however, expose the same contract by two different endpoint: one using SOAP and the other not using SOAP. Finden Sie unter wie: Verfügbarmachen eines Vertrags für SOAP- und Webclients ein Beispiel.See How to: Expose a Contract to SOAP and Web Clients for an example.

SicherheitSecurity

Da das WCFWCF-Web-HTTP-Programmiermodell die WS--Protokolle nicht unterstützt, ist die einzige Möglichkeit zur Absicherung eines auf dem WCFWCF-Web-HTTP-Programmiermodell basierenden Webdiensts das Verfügbarmachen des Diensts mithilfe von SSL.Because the WCFWCF WEB HTTP Programming Model does not support the WS- protocols the only way to secure a Web service built on the WCFWCF WEB HTTP Programming Model is to expose your service using SSL. Weitere Informationen finden Sie unterFor more information aboutEinrichten von SSL mit IIS 7.0IIS 7.0 finden Sie unter Gewusst wie: Implementieren von SSL auf IIS setting up SSL with IIS 7.0IIS 7.0 see How to implement SSL in IIS

Siehe auchSee Also

WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebHttpBehavior
WebHttpDispatchOperationSelector
Überblick über das WCF-Web-HTTP-ProgrammiermodellWCF Web HTTP Programming Model Overview