Dela via


WCF Web HTTP Programming Object Model

WCF WEB HTTP-programmeringsmodellen gör det möjligt för utvecklare att exponera WCF-webbtjänster (Windows Communication Foundation) via grundläggande HTTP-begäranden utan att kräva SOAP. WCF WEB HTTP-programmeringsmodellen bygger på den befintliga utökningsmodellen för WCF. Den definierar följande klasser:

Programmeringsmodell:

Kanaler och dispatcher-infrastruktur:

Verktygsklasser och utökningspunkter:

AspNetCacheProfileAttribute

När AspNetCacheProfileAttributeden används för en tjänståtgärd anger den ASP.NET cacheprofilen för utdata i konfigurationsfilen som ska användas av för att cachelagrar svar från åtgärden i ASP .NET-utdatacachen. Den här egenskapen tar bara en parameter, namnet på cacheprofilen som anger cacheinställningarna i konfigurationsfilen.

WebGetAttribute

Attributet WebGetAttribute används för att markera en tjänståtgärd som en som svarar på HTTP GET-begäranden. Det är ett passivt åtgärdsbeteende ( IOperationBehavior metoderna gör ingenting) som lägger till metadata i åtgärdsbeskrivningen. WebGetAttribute Att tillämpa har ingen effekt om inte ett beteende som söker efter dessa metadata i åtgärdsbeskrivningen (specifikt WebHttpBehavior) läggs till i tjänstens beteendesamling. Attributet WebGetAttribute tar de valfria parametrar som visas i följande tabell.

Parameter Description
BodyStyle Styr om du vill omsluta begäranden och svar som skickas till och tas emot från tjänståtgärden som attributet tillämpas på.
RequestFormat Styr hur begärandemeddelanden formateras.
ResponseFormat Styr hur svarsmeddelanden formateras.
UriTemplate Anger den URI-mall som styr vilka HTTP-begäranden som mappas till den tjänståtgärd som attributet tillämpas på.

WebHttpBinding

Klassen WebHttpBinding innehåller stöd för XML, JSON och binära rådata med hjälp av WebMessageEncodingBindingElement. Den består av ett HttpsTransportBindingElement, HttpTransportBindingElement och ett WebHttpSecurity -objekt. WebHttpBinding Är utformad för att användas tillsammans med WebHttpBehavior.

WebInvokeAttribute

Attributet WebInvokeAttribute liknar WebGetAttribute, men används för att markera en tjänståtgärd som en som svarar på andra HTTP-begäranden än GET. Det är ett passivt åtgärdsbeteende ( IOperationBehavior metoderna gör ingenting) som lägger till metadata i åtgärdsbeskrivningen. WebInvokeAttribute Att tillämpa har ingen effekt om inte ett beteende som söker efter dessa metadata i åtgärdsbeskrivningen (specifikt WebHttpBehavior) läggs till i tjänstens beteendesamling.

Attributet WebInvokeAttribute tar de valfria parametrar som visas i följande tabell.

Parameter Description
BodyStyle Styr om du vill omsluta begäranden och svar som skickas till och tas emot från tjänståtgärden som attributet tillämpas på.
Method Anger den HTTP-metod som tjänståtgärden mappas till.
RequestFormat Styr hur begärandemeddelanden formateras.
ResponseFormat Styr hur svarsmeddelanden formateras.
UriTemplate Anger den URI-mall som styr vilka GET-begäranden som mappas till den tjänståtgärd som attributet tillämpas på.

Uritemplate

Med UriTemplate klassen kan du definiera en uppsättning strukturellt liknande URI:er. Mallar består av två delar, en sökväg och en fråga. En sökväg består av en serie segment avgränsade med ett snedstreck (/). Varje segment kan ha ett literalvärde, ett variabelvärde (skrivet inom klammerparenteser [{ }], begränsat för att matcha innehållet i exakt ett segment) eller ett jokertecken (skrivet som en asterisk [*], som matchar "resten av sökvägen"), som måste visas i slutet av sökvägen. Frågeuttrycket kan utelämnas helt. Om det finns anger den en osorterad serie med namn/värde-par. Element i frågeuttrycket kan vara antingen literalpar (?x=2) eller variabelpar (?x={value}). Obetalda värden är inte tillåtna. UriTemplate används internt av WCF WEB HTTP Programming Model för att mappa specifika URI:er eller grupper av URI:er till tjänståtgärder.

UriTemplateTable

Klassen UriTemplateTable representerar en associativ uppsättning UriTemplate objekt som är bundna till ett objekt som utvecklaren väljer. Med den kan du matcha kandidat-URI:er (Uniform Resource Identifiers) mot mallarna i uppsättningen och hämta data som är associerade med matchande mallar. UriTemplateTable används internt av WCF WEB HTTP Programming Model för att mappa specifika URI:er eller grupper av URI:er till tjänståtgärder.

WebServiceHost

WebServiceHost utökar ServiceHost för att göra det enklare att vara värd för en webbtjänst som inte är SOAP. Om WebServiceHost inga slutpunkter hittas i tjänstbeskrivningen skapas automatiskt en standardslutpunkt på tjänstens basadress. När du skapar en STANDARD-HTTP-slutpunkt WebServiceHost inaktiverar även HTTP-hjälpsidan och funktionen Web Services Description Language (WSDL) GET så att metadataslutpunkten inte stör HTTP-standardslutpunkten. WebServiceHost säkerställer också att alla slutpunkter som använder WebHttpBinding har de nödvändiga WebHttpBehavior kopplade. Slutligen WebServiceHost konfigurerar automatiskt slutpunktens bindning så att den fungerar med de associerade säkerhetsinställningarna för Internet Information Services (IIS) när den används i en säker virtuell katalog.

WebServiceHostFactory

Klassen WebServiceHostFactory används för att dynamiskt skapa en WebServiceHost när en tjänst finns under Internet Information Services (IIS) eller Windows Process Activation Service (WAS). Till skillnad från en lokalt installerad tjänst där värdprogrammet instansierar WebServiceHost, använder tjänster som finns under IIS eller WAS den här klassen för att skapa WebServiceHost för tjänsten. Metoden CreateServiceHost(Type, Uri[]) anropas när en inkommande begäran för tjänsten tas emot.

WebHttpBehavior

Klassen WebHttpBehavior tillhandahåller de formaterare, åtgärdsväljare och så vidare som krävs för stöd för webbtjänster på servicemodelllagret. Detta implementeras som ett slutpunktsbeteende (används tillsammans med WebHttpBinding) och gör att formaterare och åtgärdsväljare kan anges för varje slutpunkt, vilket gör att samma tjänstimplementering kan exponera både SOAP- och POX-slutpunkter.

Utöka WebHttpBehavior

WebHttpBehaviorär utökningsbar med hjälp av ett antal virtuella metoder: GetOperationSelector(ServiceEndpoint), , GetReplyClientFormatter(OperationDescription, ServiceEndpoint)GetRequestClientFormatter(OperationDescription, ServiceEndpoint), , GetReplyDispatchFormatter(OperationDescription, ServiceEndpoint)och GetRequestDispatchFormatter(OperationDescription, ServiceEndpoint). Utvecklare kan härleda en klass från WebHttpBehavior och åsidosätta dessa metoder för att anpassa standardbeteendet.

WebScriptEnablingBehavior är ett exempel på att WebHttpBehaviorutöka . WebScriptEnablingBehavior gör det möjligt för WCF-slutpunkter (Windows Communication Foundation) att ta emot HTTP-begäranden från en webbläsarbaserad ASP.NET AJAX-klient. AJAX-tjänsten med HTTP POST är ett exempel på hur du använder den här utökningspunkten.

Varning

När du använder WebScriptEnablingBehavior, UriTemplate stöds inte inom WebGetAttribute eller WebInvokeAttribute attribut.

WebHttpDispatchOperationSelector

Klassen WebHttpDispatchOperationSelector använder UriTemplate och UriTemplateTable klasser för att skicka anrop till tjänståtgärder.

Kompatibilitet

WCF WEB HTTP-programmeringsmodellen använder inte SOAP-baserade meddelanden och stöder därför inte WS-*-protokollen. Du kan dock exponera samma kontrakt med två olika slutpunkter: en med SOAP och en annan som inte använder SOAP. Se Så här gör du: Exponera ett kontrakt för SOAP och webbklienter för ett exempel.

Säkerhet

Eftersom WCF WEB HTTP Programming Model inte stöder WS-*-protokollen är det enda sättet att skydda en webbtjänst som bygger på WCF WEB HTTP Programming Model att exponera tjänsten med hjälp av SSL. Mer information om hur du konfigurerar SSL med IIS 7.0 finns i Implementera SSL i IIS.

Se även