Core Windows Communication Foundation (CoreWCF)
Eintrag zuletzt aktualisiert am: 29.04.2022
Core
Windows Communication Foundation (Core
WCF) 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 "Core
WCF" [
https://github.com/CoreWCF/Core
WCF] 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 Core
WCF 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 Core
WCF-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 Core
WCF erschienen.
Download
Die Implementierung von Core
WCF steht auf
GitHub [
https://github.com/CoreWCF/Core
WCF/releases] und
NuGet [
https://www.nuget.org/packages?q=CoreWCF] bereit.
Support von Microsoft
Bemerkenswert ist, dass Microsoft technischen Support für Core
WCF [
https://github.com/CoreWCF/Core
WCF/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 Core
WCF 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 Core
WCF 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 Core
WCF 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 Core
WCF 1.0 sind auch ganz neu, d.h. existieren nicht im Original-
WCF, z.B. Unterstützung für die Open
API-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
Core
WCF 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 Core
WCF 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).