Core Windows Communication Foundation (CoreWCF)
Eintrag zuletzt aktualisiert am: 29.04.2022
Core
Windows Communication Foundation (CoreWCF) ist eine Implementierung einer Teilmenge der
Windows Communication Foundation (WCF) für modernes .NET (.NET Core, .NET 5 ff).
Hintergründe
Während Microsoft die Client-Bibliothek für WCF (
Windows Communication Foundation Client Libraries) [
https://github.com/dotnet/wcf] beim Umbau von
.NET Framework zu .NET Core übernommen hat, steht die Serverseite von WCF seit 2019 auf der
Liste der Klassen [
https://www.heise.de/developer/meldung/Build-2019-Microsoft-konkretisiert-die-Plaene-fuer-NET-5-0-4416914.html], die Microsoft nicht mehr ins moderne .NET migrieren will. Microsoft verwies die Entwickler darauf, REST-basierte
Web-APIs oder
gRPC-Dienste an Stelle von WCF zu nutzen, was einen erheblichen Migrationsaufwand für bestehende WCF-basierten Services bedeutete [
https://www.heise.de/hintergrund/Umstieg-auf-NET-Core-Teil-4-SOAP-und-REST-Webservices-umstellen-4705706.html?seite=2].
Bereits 2019 gründete sich das Community Project "CoreWCF" [
https://github.com/CoreWCF/CoreWCF] unter Leitung von Matt Connew [
https://github.com/mconnew], um den WCF-Server in die moderne .NET-Welt zu überführen. Microsoft unterstütze dies mit der Bereitstellung des WCF-Quellcodes als
Open Source und der Schirmherrschaft der
.NET Foundation [
https://devblogs.microsoft.com/dotnet/supporting-the-community-with-wf-and-wcf-oss-projects/]. Matt Connew ist zwar selbst bei Microsoft angestellt, hat aber lange Zeit offensichtlich wenig Zeit und Unterstützung für CoreWCF gehabt. In einem Video [
https://www.youtube.com/watch?v=dom2O19fGAo] aus dem Februar 2022 sagte er, dass er nur etwa 20 Prozent seiner Arbeitszeit im CoreWCF-Projekt verbracht hat – die übrige Zeit verbrachte er mit der Pflege von WCF im
.NET Framework und der WCF-Clients in modernem .NET. Auch wenn es dann Hilfe aus dem Amazon
AWS-Team gab [
https://corewcf.github.io/blog/2022/04/28/corewcf-10_0_release], dümpelte CoreWCF mit der Bemerkung "Please note that right now, this port is not production ready." vor sich hin. Ein erstes Release 0.1 gab es erst im Februar 2021. Die Anzahl von Beiträgen aus anderen Unternehmen erhöhte sich [https://corewcf.github.io/blog/2022/04/28/corewcf-1_0_0release]. Am 28. April 2022 ist nun Version 1.0 von CoreWCF erschienen.
Download
Die Implementierung von CoreWCF steht auf GitHub [
https://github.com/CoreWCF/CoreWCF/releases] und NuGet [
https://www.nuget.org/packages?q=CoreWCF] bereit.
Support von Microsoft
Bemerkenswert ist, dass Microsoft technischen Support für CoreWCF [
https://github.com/CoreWCF/CoreWCF/blob/main/Documentation/Microsoft-Support.md] anbietet, auch wenn das Projekt kein offizielles Microsoft-Produkt darstellt und auch nicht als Teil des
.NET SDK ausgeliefert werden wird. Dabei gibt es Hilfe aber nur für diejenigen Versionen, die bei Microsoft noch offiziell im Support sind
Features in WCF Core (Stand Version 1.0, 28.4.2022)
Dabei bietet CoreWCF 1.0 – wie schon 2019 angekündigt – zunächst nicht alle Funktionen von WCF, sondern konzentriert sich auf die am häufigsten genutzten Kommunikationsszenarien. WCF fasst Kommunikationsszenarien zu sogenannten "Bindings" zusammen. Vollständig unterstützte Bindings in CoreWCF 1.0 sind BasicHttpBinding (HTTP/HTTPS mit SOAP), WebHttpBinding (HTTP/HTTPS mit beliebigem
XML oder
JSON) und NetHttpBinding (HTTP/HTTPS mit binärer
Serialisierung). Bei den Bindungen NetTcpBinding (
TCP/binär) und
WSHttpBinding (HTTPS/SOAP) sowie
WSFederationHttpBinding (HTTPS/SOAP mit WS-Federation) gibt partielle Unterstützung. So wird zum Beispiel Verschlüsselung nur auf Transportprotokollebene, nicht aber auf Nachrichtenebene mit WS-Security unterstützt. Bei der
Authentifizierung können Entwickler zwischen
Zertifikaten, Benutzername/Kennwort und der integrierten Windows-
Authentifizierung wählen, wobei die Konfiguration dafür sich geändert hat.
Metadaten mit WSDL werden in CoreWCF 1.0 unterstützt, aber kein Message Queuing und keine verteilten
Transaktionen sowie kein
Tracing. Die
XML-basierten
Konfigurationsdateien sowie die Erweiterbarkeit von WCF ist teilweise implementiert.
Metadaten mit WSDL werden unterstützt, aber mit einigen Unterschieden bei der Aktivierung [
https://corewcf.github.io/blog/2022/04/26/wsdl]. Einige Features in CoreWCF 1.0 sind auch ganz neu, d.h. existieren nicht im Original-WCF, z.B. Unterstützung für die OpenAPI-Medadaten im WebHttpBinding [
https://corewcf.github.io/blog/2022/04/13/webhttp] und
Dependency Injection für die Klassen HttpContext, HttpRequest und HttpResponse.
Plattformen für WCF Core
CoreWCF 1.0 basiert auf
.NET Standard 2.0 und läuft daher in
.NET Framework ab Version 4.6.2, .NET Core ab Version 2.0 sowie
.NET 5.0 und
.NET 6.0. Während das ursprüngliche WCF unabhängig von ASP.NET war, basiert CoreWCF auf ASP.NET Core und setzt die Installation der ASP
.NET Core Runtime voraus (auch unter
.NET Framework – hier läuft höchstens Version
ASP.NET Core 2.2).