Model obiektowy programowania protokołu HTTP sieci Web w programie WCF
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, po zastosowaniu do operacji usługi, wskazuje ASP.NET wyjściowy profil pamięci podręcznej w pliku konfiguracji, który powinien być używany przez program do buforowania odpowiedzi z operacji w pamięci podręcznej danych wyjściowych platformy 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.
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 zachowanie, które wyszukuje te metadane w opisie operacji (w szczególności ), WebHttpBehaviorjest dodawane do kolekcji zachowań usługi. 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 steruje tym, do czego żądania HTTP są mapowane na operację usługi, do której 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 zachowanie, które wyszukuje te metadane w opisie operacji (w szczególności ), WebHttpBehaviorjest dodawane do kolekcji zachowań usługi.
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 tym, do czego żądania GET są mapowane na operację usługi, do której jest stosowany atrybut. |
UriTemplate
Klasa UriTemplate umożliwia zdefiniowanie zestawu uri strukturalnych 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}). Niezapłacone wartości nie są dozwolone. UriTemplate program jest używany wewnętrznie przez model programowania HTTP sieci Web WCF do mapowania określonych identyfikatorów URI lub grup identyfikatorów URI na operacje usługi.
Uritemplatetable
Klasa UriTemplateTable reprezentuje asocjacyjny zestaw UriTemplate obiektów powiązanych z obiektem wybranego przez dewelopera. Umożliwia dopasowanie kandydatów uniform resource identifiers (URI) względem szablonów w zestawie i pobieranie danych skojarzonych z pasującymi szablonami. UriTemplateTable program jest używany wewnętrznie przez model programowania HTTP sieci Web WCF do mapowania określonych identyfikatorów URI lub grup identyfikatorów URI na operacje usługi.
Webservicehost
WebServiceHostServiceHost Rozszerza element , aby ułatwić hostowanie 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 WebServiceHost PROTOKOŁU HTTP powoduje również wyłączenie strony Pomocy HTTP i funkcji GET (Web Services Description Language, WSDL), dzięki czemu punkt końcowy metadanych nie zakłóca domyślnego punktu końcowego HTTP. WebServiceHost Zapewnia również, że wszystkie punkty końcowe, które używają WebHttpBinding , mają dołączone wymagane WebHttpBehavior punkty końcowe. 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 służy do dynamicznego WebServiceHost tworzenia, gdy usługa jest hostowana w usługach Internet Information Services (IIS) lub Windows Process Activation Service (WAS). W przeciwieństwie do samoobsługowej usługi, w której aplikacja hostująca tworzy wystąpienie WebServiceHostusługi , usługi hostowane w usługach IIS lub WAS używają tej klasy do utworzenia WebServiceHost dla usługi. Metoda jest wywoływana CreateServiceHost(Type, Uri[]) po odebraniu przychodzącego żądania 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.
Jest WebScriptEnablingBehavior to przykład rozszerzania elementu 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 elementu WebScriptEnablingBehaviornie UriTemplate są obsługiwane w ramach WebGetAttribute atrybutów ani WebInvokeAttribute .
WebHttpDispatchOperationSelector
Klasa WebHttpDispatchOperationSelector używa UriTemplate klas i UriTemplateTable do wysyłania wywołań 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: uwidacznianie kontraktu klientom soap i klientom internetowym, aby zapoznać się z przykładem.
Zabezpieczenia
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.