Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Model programowania HTTP sieci Web WCF umożliwia deweloperom uwidacznienie usług sieci Web programu Windows Communication Foundation (WCF) za pomocą podstawowych żądań HTTP bez konieczności używania protokołu SOAP. Model programowania HTTP w sieci Web WCF jest oparty na istniejącym modelu rozszerzalności WCF. Definiuje następujące klasy:
Model programowania:
Kanały i infrastruktura dyspozytora:
Klasy narzędzi i punkty rozszerzalności:
AspNetCacheProfileAttribute
Wartość AspNetCacheProfileAttribute, gdy zastosowana do operacji usługi, wskazuje profil pamięci podręcznej wyjściowej ASP.NET w pliku konfiguracji, który powinien być używany do buforowania odpowiedzi z operacji w pamięci podręcznej wyjściowej ASP.NET. Ta właściwość przyjmuje tylko jeden parametr— nazwę profilu pamięci podręcznej, która określa ustawienia pamięci podręcznej w pliku konfiguracji.
Element WebGetAttribute
Atrybut WebGetAttribute jest używany do oznaczania operacji usługi jako jednej, która odpowiada na żądania HTTP GET. Jest to zachowanie operacji pasywnej ( IOperationBehavior metody nic nie robią), które dodaje metadane do opisu operacji. Zastosowanie elementu WebGetAttribute nie ma wpływu, chyba że do kolekcji zachowań usługi zostanie dodane zachowanie, które wyszukuje te metadane w opisie operacji (w szczególności WebHttpBehavior). Atrybut WebGetAttribute przyjmuje parametry opcjonalne pokazane w poniższej tabeli.
Parametr | Opis |
---|---|
BodyStyle |
Określa, czy należy opakowywać żądania i odpowiedzi wysyłane do i odbierane z operacji usługi, do których jest stosowany atrybut. |
RequestFormat |
Określa sposób formatowania komunikatów żądań. |
ResponseFormat |
Określa sposób formatowania komunikatów odpowiedzi. |
UriTemplate |
Określa szablon identyfikatora URI, który decyduje, do jakich operacji usługi są mapowane żądania HTTP, na które jest stosowany atrybut. |
WebHttpBinding
Klasa WebHttpBinding zawiera obsługę plików XML, JSON i nieprzetworzonych danych binarnych przy użyciu elementu WebMessageEncodingBindingElement. Składa się z obiektu HttpsTransportBindingElement, HttpTransportBindingElement i WebHttpSecurity . Element WebHttpBinding został zaprojektowany do użycia w połączeniu z elementem WebHttpBehavior.
WebInvokeAttribute
Atrybut WebInvokeAttribute jest podobny do WebGetAttribute, ale jest używany do oznaczania operacji usługi jako jeden, który odpowiada na żądania HTTP inne niż GET. Jest to zachowanie operacji pasywnej ( IOperationBehavior metody nic nie robią), które dodaje metadane do opisu operacji. Zastosowanie elementu WebInvokeAttribute nie ma wpływu, chyba że do kolekcji zachowań usługi zostanie dodane zachowanie, które wyszukuje te metadane w opisie operacji (w szczególności WebHttpBehavior).
Atrybut WebInvokeAttribute przyjmuje parametry opcjonalne pokazane w poniższej tabeli.
Parametr | Opis |
---|---|
BodyStyle |
Określa, czy należy opakowywać żądania i odpowiedzi wysyłane do i odbierane z operacji usługi, do których jest stosowany atrybut. |
Method |
Określa metodę HTTP, na która jest mapowana operacja usługi. |
RequestFormat |
Określa sposób formatowania komunikatów żądań. |
ResponseFormat |
Określa sposób formatowania komunikatów odpowiedzi. |
UriTemplate |
Określa szablon identyfikatora URI, który steruje mapowaniem żądań GET na operacje serwisowe, do których zastosowano atrybut. |
UriTemplate
Klasa UriTemplate umożliwia zdefiniowanie zestawu strukturalnie podobnych identyfikatorów URI. Szablony składają się z dwóch części, ścieżki i zapytania. Ścieżka składa się z serii segmentów rozdzielonych ukośnikiem (/). Każdy segment może mieć wartość literału, wartość zmiennej (zapisaną w nawiasach klamrowych [{ }], ograniczoną do zawartości dokładnie jednego segmentu) lub symbol wieloznaczny (zapisany jako gwiazdka [*], która pasuje do reszty ścieżki), która musi pojawić się na końcu ścieżki. Wyrażenie zapytania można całkowicie pominąć. Jeśli istnieje, określa nieurządkowaną serię par nazwa/wartość. Elementy wyrażenia zapytania mogą być parami literałów (?x=2) lub parami zmiennych (?x={value}). Nieparowane wartości nie są dozwolone. UriTemplate jest używany wewnętrznie przez mechanizm programowania HTTP sieci Web WCF do mapowania określonych identyfikatorów URI lub grup identyfikatorów URI na operacje usługowe.
TabelaSzablonówUri
Klasa UriTemplateTable reprezentuje asocjacyjny zestaw UriTemplate obiektów powiązanych z obiektem wybranego przez dewelopera. Umożliwia dopasowanie URI kandydatów do szablonów w zestawie i pobieranie danych skojarzonych z pasującymi szablonami. UriTemplateTable jest używany wewnętrznie przez mechanizm programowania HTTP sieci Web WCF do mapowania określonych identyfikatorów URI lub grup identyfikatorów URI na operacje usługowe.
WebServiceHost
WebServiceHost rozszerza ServiceHost, w celu ułatwienia hostowania usługi w stylu sieci Web innej niż SOAP. Jeśli WebServiceHost nie znajdzie żadnych punktów końcowych w opisie usługi, automatycznie tworzy domyślny punkt końcowy pod adresem podstawowym usługi. Podczas tworzenia domyślnego punktu końcowego HTTP, WebServiceHost wyłącza również stronę pomocy HTTP oraz funkcjonalność GET dla opisu usługi sieciowej (Web Services Description Language, WSDL), tak aby punkt końcowy metadanych nie zakłócał działania domyślnego punktu końcowego HTTP. WebServiceHost Zapewnia także, że wszystkie punkty końcowe, które używają WebHttpBinding, mają dołączone wymagane WebHttpBehavior. WebServiceHost Na koniec automatycznie konfiguruje powiązanie punktu końcowego do pracy ze skojarzonymi ustawieniami zabezpieczeń usług Internet Information Services (IIS) w przypadku użycia w bezpiecznym katalogu wirtualnym.
WebServiceHostFactory
Klasa WebServiceHostFactory jest używana do dynamicznego tworzenia WebServiceHost, gdy usługa jest hostowana w Internet Information Services (IIS) lub Windows Process Activation Service (WAS). W przeciwieństwie do samodzielnie hostowanej usługi, w której aplikacja hostująca tworzy wystąpienie WebServiceHost, usługi hostowane w ramach IIS lub WAS używają tej klasy do utworzenia WebServiceHost dla usługi. Metoda CreateServiceHost(Type, Uri[]) jest wywoływana, gdy nadejdzie przychodzące żądanie dla usługi.
WebHttpBehavior
Klasa WebHttpBehavior dostarcza niezbędne formatatory, selektory operacji itd. wymagane do obsługi usługi w stylu sieci Web w warstwie modelu usług. Jest to implementowane jako zachowanie punktu końcowego (używane w połączeniu z WebHttpBinding) i umożliwia określenie formatatorów i selektorów operacji dla każdego punktu końcowego, co umożliwia tej samej implementacji usługi uwidocznienie punktów końcowych protokołu SOAP i POX.
Rozszerzanie aplikacji WebHttpBehavior
WebHttpBehaviorjest rozszerzalny przy użyciu wielu metod wirtualnych: GetOperationSelector(ServiceEndpoint), , GetReplyClientFormatter(OperationDescription, ServiceEndpoint)GetRequestClientFormatter(OperationDescription, ServiceEndpoint), GetReplyDispatchFormatter(OperationDescription, ServiceEndpoint)i GetRequestDispatchFormatter(OperationDescription, ServiceEndpoint). Deweloperzy mogą uzyskać klasę z WebHttpBehavior i zastąpić te metody, aby dostosować domyślne zachowanie.
Element WebScriptEnablingBehavior jest przykładem rozszerzania WebHttpBehavior. WebScriptEnablingBehavior Umożliwia punktom końcowym programu Windows Communication Foundation (WCF) odbieranie żądań HTTP z klienta ASP.NET AJAX opartego na przeglądarce. Usługa AJAX używająca protokołu HTTP POST jest przykładem użycia tego punktu rozszerzalności.
Ostrzeżenie
W przypadku korzystania z WebScriptEnablingBehavior, UriTemplate nie są obsługiwane w ramach atrybutów WebGetAttribute ani WebInvokeAttribute.
WebHttpDispatchOperationSelector
Klasa WebHttpDispatchOperationSelector używa klas UriTemplate i UriTemplateTable aby przekazywać wywołania do operacji usługi.
Zgodność
Model programowania HTTP sieci Web WCF nie używa komunikatów opartych na protokole SOAP i dlatego nie obsługuje protokołów WS-*. Można jednak uwidocznić ten sam kontrakt za pomocą dwóch różnych punktów końcowych: jeden przy użyciu protokołu SOAP i drugi, który nie używa protokołu SOAP. Zobacz instrukcje dotyczące uwidaczniania kontraktu użytkownikom SOAP oraz użytkownikom sieci, aby zobaczyć przykład.
Bezpieczeństwo
Ponieważ model programowania HTTP sieci Web WCF nie obsługuje protokołów WS-* jedynym sposobem zabezpieczenia usługi internetowej opartej na modelu programowania HTTP sieci Web WCF jest uwidocznienie usługi przy użyciu protokołu SSL. Aby uzyskać więcej informacji na temat konfigurowania protokołu SSL za pomocą usług IIS 7.0, zobacz Jak zaimplementować protokół SSL w usługach IIS.