Umstieg auf .NET Core, Teil 4: SOAP- und REST-Webservices umstellen

Seite 4: WCF zu WebAPI?

Inhaltsverzeichnis

Alternativ zur Umstellung von WCF auf Google RPC könnte man auch von WCF auf ASP.NET Core WebAPI wechseln. Der Umstellungsaufwand ist grundsätzlich ähnlich. Es gibt aber Konverter für WSDL zu OAS (bspw. API Transformer sowie weitere Open API Tools) sowie Codegeneratoren, die aus einer OAS-Spezifikation WebAPI-Controller-Programmcode erzeugen. Swagger Hub generiert aus OAS ein komplettes ASP.NET-Core-WebAPI-Projekt inklusive Startcode (s. Abb. 4). Mit diesen Werkzeugen kann man die Umstellung von WCF auf WebAPI vereinfachen.

Generierung eines ASP.NET-Core-WebAPI-Projekts aus einer OAS-Spezifikation mit Swagger Hub (Abb. 4)

Die Performance-Änderung bei der Umstellung von WCF auf WebAPI hängt dabei vom Ausgangspunkt ab: Wenn man vorher TCP als Transportprotokoll mit binärer Serialisierung eingesetzt hat, verliert man viel Leistung. Wenn man vorher HTTP mit SOAP ohne Sicherheit eingesetzt hat, ist die Leistung ohne Sicherheit nun ähnlich. WebAPI mit SSL/TLS ist aber performanter als WCF HTTP mit WS-Security (s. Abb. 3).

WebAPI empfiehlt sich gegenüber gRPC, wenn man Webbrowser als Clients hat. Die gRPC-Implementierung für Webbrowser ist noch nicht ebenbürtig zum sonst üblichen gRPC-Funktionsumfang ("Nicht alle Funktionen von gRPC werden von gRPC-Web unterstützt. Client und bidirektionales Streaming werden nicht unterstützt, und es gibt nur eingeschränkte Unterstützung für Server Streaming.") wie die nachfolgende Abbildung 5 zeigt.

Wenn bei WCF Duplex-Kommunikation eingesetzt wurde, muss man dies in der Welt von WebAPIs mit ASP.NET Core SignalR nachbilden, denn die Grundausstattung der WebAPIs kann nur uni- und bidirektional kommunizieren.

Vergleich gRPC mit ASP.NET Core WebAPI (Abb. 5)

(Bild: Microsoft)

Außerhalb von Microsoft gibt es noch andere Kommunikationsalternativen in der .NET Core-Welt:

  • Das kostenfreie und quelloffene SOAP Core bietet eine SOAP-Implementierung für ASP.NET und ASP.NET Core als Server und Client (in beliebiger .NET-/.NET Core-Anwendungsart).
  • Kommunikation über TCP oder Named Pipes für den Datenaustausch zwischen .NET Core-Prozessen bietet das kostenfreie, quelloffene IPC Service Framework.
  • Service Stack bietet ähnlich wie WCF mehrere Serialisierungsformate (u.a. SOAP, JSON, CSV, JSV und Protocol Buffers) und Transportprotokolle (HTTP, HTTPS, MQ). Service Stack läuft auf .NET Framework und .NET Core, SOAP wird aber auf .NET Core nicht angeboten. Kosten ab jährlich 299 Euro pro Entwickler.