Projektowanie i implementowanie usług
W tej sekcji przedstawiono sposób definiowania i implementowania kontraktów WCF. Kontrakt usługi określa, co punkt końcowy komunikuje się ze światem zewnętrznym. Na bardziej konkretnym poziomie jest to instrukcja dotycząca zestawu konkretnych wiadomości zorganizowanych w podstawowe wzorce wymiany komunikatów (deputowanych), takie jak żądanie/odpowiedź, jednokierunkowe i dwukierunkowe. Jeśli kontrakt usługi jest logicznie powiązanym zestawem wymiany komunikatów, operacja usługi jest jedną wymianą komunikatów. Na przykład Hello
operacja musi oczywiście zaakceptować jedną wiadomość (aby obiekt wywołujący mógł ogłosić powitanie) i może lub nie może zwrócić wiadomości (w zależności od uprzejmości operacji).
Aby uzyskać więcej informacji na temat kontraktów i innych podstawowych pojęć dotyczących programu Windows Communication Foundation (WCF), zobacz Podstawowe pojęcia dotyczące programu Windows Communication Foundation. Ten temat koncentruje się na zrozumieniu kontraktów usług. Aby uzyskać więcej informacji na temat tworzenia klientów korzystających z kontraktów usług do łączenia się z usługami, zobacz Omówienie klienta programu WCF.
Omówienie
Ten temat zawiera ogólną orientację koncepcyjną na potrzeby projektowania i implementowania usług WCF. Podtopy zawierają bardziej szczegółowe informacje na temat specyfiki projektowania i implementacji. Przed projektowaniem i wdrażaniem aplikacji WCF zaleca się:
Dowiedz się, czym jest kontrakt usługi, jak to działa i jak go utworzyć.
Należy pamiętać, że kontrakty mają minimalne wymagania dotyczące konfiguracji środowiska uruchomieniowego lub środowiska hostingu, które mogą nie być obsługiwane.
Kontrakty usług
Kontrakt usługi określa następujące elementy:
Operacje uwidacznia kontrakt.
Podpis operacji w odniesieniu do komunikatów wymienianych.
Typy danych tych komunikatów.
Lokalizacja operacji.
Określone protokoły i formaty serializacji, które są używane do obsługi pomyślnej komunikacji z usługą.
Na przykład umowa zamówienia zakupu może mieć operację CreateOrder
, która akceptuje dane wejściowe typów informacji o zamówieniu i zwraca informacje o powodzeniu lub niepowodzeniu, w tym identyfikator zamówienia. Może również mieć operację GetOrderStatus
, która akceptuje identyfikator zamówienia i zwraca informacje o stanie zamówienia. Kontrakt usługi tego rodzaju określi:
To, że umowa zamówienia zakupu składała się z
CreateOrder
operacji iGetOrderStatus
.Czy operacje określiły komunikaty wejściowe i komunikaty wyjściowe.
Dane, które te komunikaty mogą być przenoszone.
Kategoryczne instrukcje dotyczące infrastruktury komunikacyjnej niezbędnej do pomyślnego przetworzenia komunikatów. Na przykład te szczegóły obejmują, czy i jakie formy zabezpieczeń są wymagane do nawiązania pomyślnej komunikacji.
Aby przekazać tego rodzaju informacje innym aplikacjom na wielu platformach (w tym platformach innych niż Microsoft), kontrakty usług XML są publicznie wyrażane w standardowych formatach XML, takich jak Web Services Description Language (WSDL) i XML Schema (XSD), między innymi. Deweloperzy wielu platform mogą używać tych informacji o umowie publicznej do tworzenia aplikacji, które mogą komunikować się z usługą, zarówno dlatego, że rozumieją język specyfikacji, jak i dlatego, że te języki zostały zaprojektowane w celu umożliwienia współdziałania, opisując formularze publiczne, formaty i protokoły obsługiwane przez usługę. Aby uzyskać więcej informacji na temat obsługi tego rodzaju informacji przez usługę WCF, zobacz Metadane.
Kontrakty mogą być wyrażane na wiele sposobów, a języki WSDL i XSD są doskonałymi językami do opisywania usług w dostępny sposób, są trudne do użycia bezpośrednio i są jedynie opisami usług, a nie implementacjami kontraktów usług. W związku z tym aplikacje WCF używają atrybutów zarządzanych, interfejsów i klas zarówno do definiowania struktury usługi, jak i do jej implementowania.
Wynikowy kontrakt zdefiniowany w typach zarządzanych można eksportować jako metadane — WSDL i XSD — w razie potrzeby przez klientów lub innych implementatorów usług. Wynikiem jest prosty model programowania, który można opisać (przy użyciu metadanych publicznych) do dowolnej aplikacji klienckiej. Szczegóły podstawowych komunikatów PROTOKOŁU SOAP, informacji związanych z transportem i zabezpieczeniami, a tak dalej, można pozostawić do programu WCF, który automatycznie wykonuje niezbędne konwersje do i z systemu typów kontraktów usług do systemu typów XML.
Aby uzyskać więcej informacji na temat projektowania kontraktów, zobacz Projektowanie kontraktów usług. Aby uzyskać więcej informacji na temat implementowania kontraktów, zobacz Implementowanie kontraktów usług.
Komunikaty z góry i w środku
Używanie interfejsów zarządzanych, klas i metod do modelowania operacji usługi jest proste, gdy są używane do zdalnego wywołania procedury (RPC) sygnatur metod stylu, w których przekazywanie parametrów do metody i odbieranie wartości zwracanych jest normalną formą żądania funkcjonalności z obiektu lub innego typu kodu. Na przykład programiści korzystający z języków zarządzanych, takich jak Visual Basic i C++ COM, mogą zastosować swoją wiedzę na temat podejścia w stylu RPC (niezależnie od tego, czy używać obiektów lub interfejsów) do tworzenia kontraktów usług WCF bez napotykania problemów związanych z systemami obiektów rozproszonych w stylu RPC. Orientacja usługi zapewnia luźno powiązane, zorientowane na komunikaty programowanie przy zachowaniu łatwości i znajomości środowiska programowania RPC.
Wielu programistów jest bardziej wygodne w interfejsach programowania aplikacji zorientowanych na komunikaty, takich jak kolejki komunikatów, takie jak Microsoft MSMQ, System.Messaging przestrzenie nazw w programie .NET Framework lub wysyłanie nieustrukturyzowanego kodu XML w żądaniach HTTP, aby wymienić kilka. Aby uzyskać więcej informacji na temat programowania na poziomie komunikatów, zobacz Korzystanie z kontraktów komunikatów, programowanie na poziomie kanału usługi i współdziałanie z aplikacjami POX.
Opis hierarchii wymagań
Kontrakt usługi grupuje operacje; określa wzorzec wymiany komunikatów, typy komunikatów i typy danych, które są przenoszone; i wskazuje kategorie zachowania w czasie wykonywania implementacja musi obsługiwać kontrakt (na przykład może wymagać szyfrowania i podpisania komunikatów). Sam kontrakt usługi nie określa dokładnie sposobu spełnienia tych wymagań, tylko że muszą być spełnione. Typ szyfrowania lub sposób, w jaki jest podpisany komunikat, jest zgodny z implementacją i konfiguracją zgodnej usługi.
Zwróć uwagę na sposób, w jaki kontrakt wymaga pewnych elementów implementacji kontraktu usługi i konfiguracji czasu wykonywania w celu dodania zachowania. Zestaw wymagań, które należy spełnić, aby uwidocznić usługę do użycia, opiera się na poprzednim zestawie wymagań. Jeśli kontrakt spełnia wymagania implementacji, implementacja może wymagać jeszcze większej liczby konfiguracji i powiązań, które umożliwiają uruchomienie usługi. Na koniec aplikacja hosta musi również obsługiwać wszelkie wymagania dodane przez konfigurację i powiązania usługi.
Ten proces wymagania addytywnego jest ważny, aby pamiętać o projektowaniu, implementowaniu, konfigurowaniu i hostowaniu aplikacji usługi Windows Communication Foundation (WCF). Na przykład kontrakt może określać, że musi obsługiwać sesję. Jeśli tak, musisz skonfigurować powiązanie w celu zapewnienia obsługi tego wymagania umownego lub implementacja usługi nie będzie działać. Jeśli usługa wymaga zintegrowanego uwierzytelniania systemu Windows i jest hostowana w usługach Internet Information Services (IIS), aplikacja sieci Web, w której znajduje się usługa, musi mieć włączone zintegrowane uwierzytelnianie systemu Windows i wyłączono obsługę anonimową. Aby uzyskać więcej informacji na temat funkcji i wpływu różnych typów aplikacji hosta usług, zobacz Hosting Services.