Architektura WCF (Windows Communication Foundation)
Poniższa ilustracja przedstawia główne warstwy architektury programu Windows Communication Foundation (WCF).
Architektura programu WCF
Kontrakty i opisy
Kontrakty definiują różne aspekty systemu komunikatów. Kontrakt danych opisuje każdy parametr, który składa się z każdego komunikatu, który usługa może utworzyć lub zużyć. Parametry komunikatu są definiowane przez dokumenty języka definicji schematu XML (XSD), co umożliwia każdemu systemowi, który rozumie kod XML do przetwarzania dokumentów. Kontrakt komunikatów definiuje określone części komunikatów przy użyciu protokołów SOAP i umożliwia bardziej szczegółową kontrolę nad częściami komunikatu, gdy współdziałanie wymaga takiej precyzji. Kontrakt usługi określa rzeczywiste podpisy metod usługi i jest dystrybuowany jako interfejs w jednym z obsługiwanych języków programowania, takich jak Visual Basic lub Visual C#.
Zasady i powiązania określają warunki wymagane do komunikowania się z usługą. Na przykład powiązanie musi (co najmniej) określać używany transport (na przykład HTTP lub TCP) i kodowanie. Zasady obejmują wymagania dotyczące zabezpieczeń i inne warunki, które muszą zostać spełnione w celu komunikowania się z usługą.
Środowisko uruchomieniowe usługi
Warstwa środowiska uruchomieniowego usługi zawiera zachowania, które występują tylko podczas rzeczywistej operacji usługi, czyli zachowania środowiska uruchomieniowego usługi. Ograniczanie przepustowości określa, ile komunikatów jest przetwarzanych, co może być zróżnicowane, jeśli zapotrzebowanie na usługę wzrośnie do ustalonego limitu. Zachowanie błędu określa, co występuje, gdy w usłudze wystąpi błąd wewnętrzny, na przykład poprzez kontrolowanie informacji przekazywanych do klienta. (Zbyt wiele informacji może dać złośliwemu użytkownikowi przewagę podczas instalowania ataku). Zachowanie metadanych określa, jak i czy metadane są udostępniane światu zewnętrznemu. Zachowanie wystąpienia określa, ile wystąpień usługi można uruchomić (na przykład pojedyncze wystąpienie określa tylko jedno wystąpienie do przetwarzania wszystkich komunikatów). Zachowanie transakcji umożliwia wycofanie transakcji operacji, jeśli wystąpi awaria. Zachowanie wysyłania to kontrola sposobu przetwarzania komunikatu przez infrastrukturę WCF.
Rozszerzalność umożliwia dostosowywanie procesów środowiska uruchomieniowego. Na przykład inspekcja komunikatów to funkcja inspekcji części komunikatu, a filtrowanie parametrów umożliwia wykonywanie wstępnie zdefiniowanych akcji na podstawie filtrów działających na nagłówkach komunikatów.
Obsługa komunikatów
Warstwa obsługi komunikatów składa się z kanałów. Kanał to składnik, który przetwarza komunikat w jakiś sposób, na przykład przez uwierzytelnianie komunikatu. Zestaw kanałów jest również nazywany stosem kanałów. Kanały działają na komunikatach i nagłówkach wiadomości. Różni się to od warstwy środowiska uruchomieniowego usługi, która dotyczy głównie przetwarzania zawartości treści komunikatów.
Istnieją dwa typy kanałów: kanały transportu i kanały protokołu.
Kanały transportu odczytują i zapisują komunikaty z sieci (lub inny punkt komunikacji ze światem zewnętrznym). Niektóre transporty używają kodera do konwertowania komunikatów (reprezentowanych jako zestawy informacji XML) do i z reprezentacji strumienia bajtów używanej przez sieć. Przykłady transportu to HTTP, nazwane potoki, TCP i MSMQ. Przykłady kodowania to XML i zoptymalizowane dane binarne.
Kanały protokołu implementują protokoły przetwarzania komunikatów, często odczytując lub zapisując dodatkowe nagłówki do komunikatu. Przykłady takich protokołów to WS-Security i WS-Reliability.
Warstwa obsługi komunikatów ilustruje możliwe formaty i wzorce wymiany danych. WS-Security to implementacja specyfikacji WS-Security umożliwiająca zabezpieczenia w warstwie komunikatów. Kanał WS-Reliable Messaging umożliwia zagwarantowanie dostarczania komunikatów. Kodery przedstawiają różne kodowania, których można użyć do zaspokojenia potrzeb komunikatu. Kanał HTTP określa, że protokół transportu HyperText jest używany do dostarczania komunikatów. Kanał TCP podobnie określa protokół TCP. Kanał przepływu transakcji zarządza wzorcami komunikatów transakcyjnych. Kanał nazwanego potoku umożliwia komunikację międzyprocesową. Kanał MSMQ umożliwia współdziałanie z aplikacjami MSMQ.
Hosting i aktywacja
W ostatecznej formie usługa jest programem. Podobnie jak w przypadku innych programów, usługa musi być uruchamiana w pliku wykonywalnym. Jest to nazywane samoobsługą.
Usługi mogą być również hostowane lub uruchamiane w pliku wykonywalnym zarządzanym przez agenta zewnętrznego, takiego jak usługi IIS lub Usługa aktywacji systemu Windows (WAS). WAS umożliwia automatyczne aktywowanie aplikacji WCF podczas wdrażania na komputerze z uruchomionym programem WAS. Usługi mogą być również uruchamiane ręcznie jako pliki wykonywalne (.exe plików). Usługę można również uruchamiać automatycznie jako usługę systemu Windows. Składniki COM+ mogą być również hostowane jako usługi WCF.