Definicja #
WCF (Windows Communication Foundation) to framework Microsoftu do tworzenia zorientowanych na usługi aplikacji (SOA) w ekosystemie .NET Framework. Udostępniony w 2006 roku (.NET 3.0), stanowił ujednolicenie wcześniejszych technologii komunikacyjnych Microsoftu: ASMX Web Services, .NET Remoting, MSMQ, COM+.
Kluczowe koncepcje WCF:
- ABC WCF — trzy podstawowe elementy każdej usługi:
- A (Address) — adres endpointu usługi (URL)
- B (Binding) — protokół komunikacji (BasicHttpBinding dla SOAP/HTTP, NetTcpBinding dla TCP, wsHttpBinding dla WS-Security, NetNamedPipeBinding dla IPC)
- C (Contract) — kontrakt usługi:
[ServiceContract],[OperationContract],[DataContract]
- Behaviors — konfiguracja zachowań usługi: autoryzacja, instancing (PerCall, PerSession, Singleton), throttling
- Hosting — IIS, Windows Service, self-hosted w aplikacji konsolowej
- Metadata — automatyczna generacja WSDL (MEX endpoint); narzędzie svcutil.exe do generowania klientów
WCF obsługuje wiele protokołów przez konfigurację Binding — tę samą usługę można udostępnić przez SOAP/HTTP, TCP i Named Pipes jednocześnie.
Status w 2026 roku: WCF działa tylko na .NET Framework (Windows). Na .NET Core/.NET 5+ nie ma pełnego WCF Server — tylko klient (CoreWCF to community port). Nowe projekty .NET używają ASP.NET Core Web API (REST) lub gRPC zamiast WCF.
Zastosowania #
- Utrzymanie istniejących systemów enterprise na .NET Framework — WCF jest szeroko stosowany w bankach, ubezpieczycielach i systemach korporacyjnych
- Integracja z systemami SOAP/WS-* — gdy partner biznesowy wymaga SOAP z WS-Security, WS-ReliableMessaging lub WS-Transaction
- Migracja z WCF do ASP.NET Core — analiza istniejących kontraktów WCF i przepisanie na REST/gRPC
- Systemy z wymaganiami WS-Security — zaawansowane scenariusze bezpieczeństwa (mutual certificate authentication, message-level encryption)
Ścieżka nauki #
WCF jest technologią legacy — nauka jest uzasadniona tylko przy pracy z istniejącymi systemami.
Zacznij od (dla osób utrzymujących legacy systemy):
- Podstawy WCF: ServiceContract, OperationContract, DataContract; ABC (Address, Binding, Contract)
- Konfiguracja w app.config/web.config: bindings, behaviors, endpoints
- Narzędzia: WCF Test Client (wbudowany w Visual Studio), SoapUI do testowania serwisów
Jeśli planujesz migrację:
- CoreWCF — community port WCF na .NET 6+; pozwala stopniowo migrować serwisy
- Migracja kontraktów WCF na ASP.NET Core Web API — mapowanie OperationContract na HTTP endpoints
- gRPC jako alternatywa dla scenariuszy binarnych i niskiej latencji
- Microsoft Upgrade Assistant — narzędzie wspomagające migrację .NET Framework → .NET
FAQ #
- Czym jest WCF i czy jest nadal używany?
- WCF (Windows Communication Foundation) to framework Microsoft do usług SOA w .NET Framework — SOAP, TCP, Named Pipes. Jest nadal szeroko stosowany w istniejących systemach enterprise (banki, ubezpieczenia). Jednak dla nowych projektów .NET jest technologią legacy — zastępowany przez ASP.NET Core Web API (REST) i gRPC. Microsoft nie portuje WCF Server na .NET Core — tylko community projekt CoreWCF.
- Czym różni się WCF od ASP.NET Web API?
- WCF obsługuje wiele protokołów (SOAP, TCP, Named Pipes) z konfigurowanymi Bindings — idealny dla SOA i integracji enterprise. ASP.NET Web API (i nowszy ASP.NET Core Web API) skupia się na REST/HTTP — prostszy, lżejszy, wieloplatformowy. Dla nowych projektów .NET zawsze wybierz ASP.NET Core Web API lub gRPC zamiast WCF.
- Czy WCF działa na .NET 6/7/8?
- WCF Server nie działa natywnie na .NET 5+. Microsoft portuje tylko klienta WCF (System.ServiceModel.Http). CoreWCF to otwarty projekt społecznościowy portujący WCF Server na .NET 6+ — obsługuje BasicHttpBinding i NetTcpBinding. Dla pełnej migracji z WCF na nowoczesny .NET zalecane jest przepisanie usług na ASP.NET Core lub gRPC.
- Co to jest ABC w WCF?
- ABC to trzy filary każdego endpointu WCF: Address (adres URL usługi), Binding (protokół komunikacji — BasicHttpBinding, NetTcpBinding, wsHttpBinding itp.) i Contract (kontrakt usługi definiowany przez interfejs z atrybutami [ServiceContract] i [OperationContract]). Każdy endpoint WCF musi mieć skonfigurowane wszystkie trzy elementy.