Delen via


WCF-web-HTTP-programmeerobjectmodel

Met het WCF WEB HTTP-programmeermodel kunnen ontwikkelaars WCF-webservices (Windows Communication Foundation) beschikbaar maken via eenvoudige HTTP-aanvragen zonder SOAP. Het WCF WEB HTTP-programmeermodel is gebouwd op het bestaande WCF-uitbreidbaarheidsmodel. Hiermee worden de volgende klassen gedefinieerd:

Programmeermodel:

Kanalen en dispatcherinfrastructuur:

Hulpprogrammaklassen en uitbreidbaarheidspunten:

AspNetCacheProfileAttribute

De AspNetCacheProfileAttribute, wanneer deze wordt toegepast op een servicebewerking, geeft het ASP.NET uitvoercacheprofiel in het configuratiebestand aan dat moet worden gebruikt voor het opslaan van reacties van de bewerking in de ASP .NET-uitvoercache. Deze eigenschap heeft slechts één parameter, de naam van het cacheprofiel waarmee de cache-instellingen in het configuratiebestand worden opgegeven.

WebGetAttribute

Het WebGetAttribute kenmerk wordt gebruikt om een servicebewerking te markeren als een bewerking die reageert op HTTP GET-aanvragen. Het is een passief bewerkingsgedrag (de IOperationBehavior methoden doen niets) die metagegevens toevoegt aan de beschrijving van de bewerking. Het toepassen van het WebGetAttribute heeft geen effect tenzij een gedrag dat zoekt naar deze metagegevens in de beschrijving van de bewerking (met name de WebHttpBehavior) wordt toegevoegd aan de gedragverzameling van de service. Het WebGetAttribute kenmerk gebruikt de optionele parameters die worden weergegeven in de volgende tabel.

Parameter Description
BodyStyle Hiermee bepaalt u of aanvragen en antwoorden die worden verzonden naar en ontvangen van de servicebewerking waar het kenmerk op wordt toegepast, worden verpakt.
RequestFormat Hiermee bepaalt u hoe aanvraagberichten worden opgemaakt.
ResponseFormat Hiermee bepaalt u hoe antwoordberichten worden opgemaakt.
UriTemplate Hiermee geeft u de URI-sjabloon op waarmee wordt bepaald op welke HTTP-aanvragen worden toegewezen aan de servicebewerking waarop het kenmerk wordt toegepast.

WebHttpBinding

De WebHttpBinding klasse bevat ondersteuning voor XML-, JSON- en onbewerkte binaire gegevens met behulp van de WebMessageEncodingBindingElement. Het bestaat uit een HttpsTransportBindingElement, HttpTransportBindingElement en een WebHttpSecurity object. Het WebHttpBinding is ontworpen om te worden gebruikt in combinatie met de WebHttpBehavior.

WebInvokeAttribute

Het WebInvokeAttribute kenmerk is vergelijkbaar met het WebGetAttributekenmerk, maar wordt gebruikt om een servicebewerking te markeren als een bewerking die reageert op andere HTTP-aanvragen dan GET. Het is een passief bewerkingsgedrag (de IOperationBehavior methoden doen niets) die metagegevens toevoegt aan de beschrijving van de bewerking. Het toepassen van het WebInvokeAttribute heeft geen effect tenzij een gedrag dat zoekt naar deze metagegevens in de beschrijving van de bewerking (met name de WebHttpBehavior) wordt toegevoegd aan de gedragverzameling van de service.

Het WebInvokeAttribute kenmerk gebruikt de optionele parameters die worden weergegeven in de volgende tabel.

Parameter Description
BodyStyle Hiermee bepaalt u of aanvragen en antwoorden die worden verzonden naar en ontvangen van de servicebewerking waar het kenmerk op wordt toegepast, worden verpakt.
Method Hiermee geeft u de HTTP-methode op waaraan de servicebewerking is toegewezen.
RequestFormat Hiermee bepaalt u hoe aanvraagberichten worden opgemaakt.
ResponseFormat Hiermee bepaalt u hoe antwoordberichten worden opgemaakt.
UriTemplate Hiermee geeft u de URI-sjabloon waarmee wordt bepaald op welke GET-aanvragen worden toegewezen aan de servicebewerking waarop het kenmerk wordt toegepast.

UriTemplate

Met de UriTemplate klasse kunt u een set structureel vergelijkbare URI's definiëren. Sjablonen bestaan uit twee delen, een pad en een query. Een pad bestaat uit een reeks segmenten gescheiden door een slash (/). Elk segment kan een letterlijke waarde hebben, een variabele waarde (geschreven binnen accolades [{ }], beperkt tot de inhoud van precies één segment) of een jokerteken (geschreven als een sterretje [*], dat overeenkomt met de rest van het pad), die moet worden weergegeven aan het einde van het pad. De query-expressie kan volledig worden weggelaten. Als deze aanwezig is, wordt een niet-geordende reeks naam-/waardeparen opgegeven. Elementen van de query-expressie kunnen letterlijke paren (?x=2) of variabele paren (?x={value}) zijn. Niet-toegestane waarden zijn niet toegestaan. UriTemplate wordt intern gebruikt door het WCF WEB HTTP-programmeermodel om specifieke URI's of groepen URI's toe te wijzen aan servicebewerkingen.

UriTemplateTable

De UriTemplateTable klasse vertegenwoordigt een associatieve set UriTemplate objecten die zijn gebonden aan een object dat door de ontwikkelaar wordt gekozen. Hiermee kunt u kandidaat-URI's (Uniform Resource Identifiers) vergelijken met de sjablonen in de set en de gegevens ophalen die zijn gekoppeld aan de overeenkomende sjablonen. UriTemplateTable wordt intern gebruikt door het WCF WEB HTTP-programmeermodel om specifieke URI's of groepen URI's toe te wijzen aan servicebewerkingen.

WebServiceHost

WebServiceHost breidt het ServiceHost uit om het eenvoudiger te maken om een niet-SOAP-webservice te hosten. Als WebServiceHost er geen eindpunten in de servicebeschrijving worden gevonden, wordt er automatisch een standaardeindpunt gemaakt op het basisadres van de service. Wanneer u een standaard-HTTP-eindpunt maakt, worden ook de HTTP Help-pagina en de WSDL GET-functionaliteit (Web Services Description Language) uitgeschakeld, WebServiceHost zodat het metagegevenseindpunt geen invloed heeft op het standaard-HTTP-eindpunt. WebServiceHost zorgt er ook voor dat alle eindpunten die gebruikmaken WebHttpBinding de vereiste gekoppelde WebHttpBehavior eindpunten hebben. Ten slotte WebServiceHost configureert u automatisch de binding van het eindpunt om te werken met de bijbehorende IIS-beveiligingsinstellingen (Internet Information Services) wanneer deze wordt gebruikt in een beveiligde virtuele map.

WebServiceHostFactory

De WebServiceHostFactory klasse wordt gebruikt om dynamisch een WebServiceHost service te maken wanneer een service wordt gehost onder Internet Information Services (IIS) of Windows Process Activation Service (WAS). In tegenstelling tot een zelf-hostende service waarbij de hostingtoepassing de WebServiceHostservices die worden gehost onder IIS of WAS deze klasse gebruikt om de WebServiceHost service te maken. De CreateServiceHost(Type, Uri[]) methode wordt aangeroepen wanneer een binnenkomende aanvraag voor de service wordt ontvangen.

WebHttpBehavior

De WebHttpBehavior klasse levert de benodigde formatters, bewerkingskiezers, enzovoort, die vereist zijn voor webserviceondersteuning op de servicemodellaag. Dit wordt geïmplementeerd als eindpuntgedrag (gebruikt in combinatie met de WebHttpBinding) en staat toe dat formatters en bewerkingskiezers worden opgegeven voor elk eindpunt, waardoor dezelfde service-implementatie zowel SOAP- als POX-eindpunten beschikbaar kan maken.

WebHttpBehavior uitbreiden

WebHttpBehavioris uitbreidbaar met behulp van een aantal virtuele methoden: , , , en GetRequestDispatchFormatter(OperationDescription, ServiceEndpoint)GetReplyDispatchFormatter(OperationDescription, ServiceEndpoint). GetRequestClientFormatter(OperationDescription, ServiceEndpoint)GetReplyClientFormatter(OperationDescription, ServiceEndpoint)GetOperationSelector(ServiceEndpoint) Ontwikkelaars kunnen een klasse afleiden van WebHttpBehavior en deze methoden overschrijven om het standaardgedrag aan te passen.

Het WebScriptEnablingBehavior is een voorbeeld van uitbreiden WebHttpBehavior. WebScriptEnablingBehavior hiermee kunnen WCF-eindpunten (Windows Communication Foundation) HTTP-aanvragen ontvangen van een ASP.NET AJAX-client op basis van een browser. De AJAX-service met HTTP POST is een voorbeeld van het gebruik van dit uitbreidbaarheidspunt.

Waarschuwing

Wanneer u de WebScriptEnablingBehavior, UriTemplate worden niet ondersteund binnen WebGetAttribute of WebInvokeAttribute kenmerken.

WebHttpDispatchOperationSelector

De WebHttpDispatchOperationSelector klasse gebruikt UriTemplate en UriTemplateTable klassen voor het verzenden van oproepen naar servicebewerkingen.

Compatibiliteit

Het WCF WEB HTTP-programmeermodel maakt geen gebruik van SOAP-berichten en biedt daarom geen ondersteuning voor de WS-*-protocollen. U kunt hetzelfde contract echter beschikbaar maken door twee verschillende eindpunten: één met SOAP en de andere niet met SOAP. Zie Procedure : Een contract beschikbaar maken voor SOAP- en webclients voor een voorbeeld.

Beveiliging

Omdat het WCF WEB HTTP-programmeermodel de WS-*-protocollen niet ondersteunt, is de enige manier om een webservice die is gebouwd op het WCF WEB HTTP-programmeermodel te beveiligen, uw service beschikbaar te maken met SSL. Zie SSL implementeren in IIS voor meer informatie over het instellen van SSL met IIS 7.0.

Zie ook