WCF-Alternativen (Teil 4) – Eine Zusammenfassung

Im letzten Blogpost der Artikelreihe zu den Alternativen der Windows Communication Foundation (WCF) wollen wir diese noch einmal zusammenfassend gegenüberstellen.

Entscheidungsmatrix

EigenschaftWeb APIgRPC
Bidirektionale KommunikationBedingt möglich
Diese muss mit SignalR realisiert werden.
Bedingt möglich
Es wird nur Stream Response unterstützt.
Aufwand Änderung in BestandscodeGering
Durch die Übernahme der Service-Methoden in die Controller und die Generierung des Clients sind nur geringe Anpassungen nötig.
Groß
Das Mapping ist nötig, da teilweise eigene Datentypen
vorgegeben sind: Es muss ein Über- und Rückgabe-Parameter existieren.
Notwendiges VorwissenTechnologiespezifisch
Web-API-Wissen zu Controller und Action-Verwendung, HTTP-Verben
Technologiespezifisch
gRPC-Besonderheiten, Erstellung *.proto-Datei
PlattformunabhängigkeitJa
Bei der Verwendung von .NET Core können Client und Server auf unterschiedlichen Plattformen ausgeführt werden.
Ja
Bei der Verwendung von .NET Core können Client und Server auf unterschiedlichen Plattformen ausgeführt werden.
InteroperabilitätJa
Client und Server können in unterschiedlichen Programmiersprachen erstellt worden sein.
Ja
Client und Server können in unterschiedlichen Programmiersprachen erstellt worden sein.
Browser-UnterstützungJaOptional
Aktuell nur mit 3rd-Party-Bibliotheken möglich
Selbstbeschreibende SchnittstellenOptional
OpenAPI ist durch die Einbindung von 3rd- Party-Bibliotheken möglich.
Nein
Die *.proto-Datei zur Beschreibung der Schnittstelle muss selbst erstellt werden.
Payload-GrößeHöher
JSON, menschenlesbar
Geringer
Binary-Format
GeschwindigkeitGeringerHöher
ZukunftsfähigkeitJa
Web API wird aktuell als zukunftsfähige Alternative von Microsoft empfohlen.
Ja
gRPC wird aktuell als zukunftsfähige Alternative von Microsoft empfohlen.
DebuggingEinfach möglichBedingt möglich
Die übertragenen Daten können aufgrund der Komprimierung nicht eingesehen werden.

Vor- und Nachteile

Web API

gRPC

Vorteile

  • Übertragungsdaten lesbar
  • Weniger Code-Anpassung bei Migration nötig
  • Flexiblere Gestaltung der Endpunkte und Aufrufe in Bezug auf Über- und Rückgabe-Parameter
  • Schnellere Übertragung
  • Typisiert durch Protocol-Buffers-Schnittstellenbeschreibung
  • Einfache Generierung von Client-Klassen

Nachteile

  • Langsamere Übertragung im Vergleich zu gRPC
  • Generierung von Client-Klassen nur durch 3rd-Party-Bibliotheken
  • Keine Typisierung der Schnittstelle möglich
  • Übertragungsdaten nicht lesbar
  • Mapping-Code nötig, da keine Standard-.NET-Typen verwendet werden
  • Größerer Migrationsaufwand, da mehr Code-Anpassungen nötig

Fazit

In unserer Blogpostreihe zum Thema WCF haben wir sowohl ASP.NET Core Web API als auch gRPC vorgestellt. Dabei ist deutlich geworden, dass beide Varianten ihre Vor- und Nachteile haben.

Bei Web API können die Schnittstellen durch den Content-First-Ansatz sowie die Nutzung von HTTP sehr einfach von jedem verwendet werden. Dabei sind die übertragenen Daten jederzeit einsehbar und können gelesen werden.

Durch gRPC werden im Contract-First-Ansatz die Schnittstellenaufrufe abstrahiert, wodurch diese schneller sind und von Entwicklern sehr einfach angesprochen werden können. Dabei können die übertragenen Daten aber nicht eingesehen werden.

Grundsätzlich ist die Migration zu beiden Varianten möglich und beide werden auch von Microsoft empfohlen. Abschließend kann jedoch keine Empfehlung für eine der beiden Alternativen gegeben werden. Eine Entscheidung sollte immer projektspezifisch und nach verschiedenen Kriterien wie Projektgröße, Erfahrung in der jeweiligen Technologie oder bestehender Architektur getroffen werden.