Quelle: dotnetpro
Optionen für einen Umstieg von WCF, Teil 2 18.11.2019, 00:00 Uhr

Drei WCF-Alternativen

WCF wird spätestens mit .NET 5 zum Auslaufmodell. Die Kriterien für einen Vergleich der Alternativen sind definiert – nun gehen die ersten Kontrahenten an den Start.
Der erste Teil dieser Serie [1] hat eine Reihe von Kriterien vorgestellt, die eine vergleichende Bewertung möglicher Nachfolger für WCF erlauben (vergleiche Tabelle 1). Auf dieser Basis werden nun im Folgenden die ersten drei Kontrahenten eingehender betrachtet, die sich allesamt eng am Original orientieren.
Tabelle 1: Übersicht der Vergleichseigenschaften  (Teil 1)
Eigenschaft Beschreibung WCF Core WCF IpcServiceFramework Soap Core
Serverseitige Architektur
Sprache In welcher Sprache kann ein Dienst in der Technologie implementiert werden? C#/.NET C#/.NET C#/.NET C#/.NET
Plattform Welche Plattform (SDK, Runtime) in welcher minimalen Version wird benötigt, um Dienste zu implementieren? .NET 3.0 .NET Core 2.2 .NET 4.6.1, .NET Core 2.0 .NET 4.6.1, .NET Core 2.0
Architekturstil (RMM-Level) Handelt es sich um ein RPC-Framework oder um ein RESTful-basiertes System, und welche RMM-Level können maximal erreicht werden? RPC (0) RPC (0) RPC (0) RPC (0)
Adressierung (verwendete HTTP-Verben) Wie wird der Dienst adressiert, gibt es nur einen Endpunkt für alle Aktionen, oder können Aktionen separat adressiert werden? Im Fall eines HTTP-Transports: Welche Verben können genutzt werden? Single Endpoint, oft SVC-Datei (POST) Single Enpoint (POST) Single Endpoint (-) Single Enpoint (POST)
Service Definition - Service Contract Wie, wenn überhaupt, wird die Gesamtmentde der unterstützen Operationen des Dienstes definiert? C#-Interface mit ServiceContract-Attribut C# Interface mit ServiceContract-Attribut C# Interface C# Interface mit ServiceContract-Attribut
Service Definition - Operation Contract Wie wird eine einzelne Operation des Dienstes im Rahmen des Service Contract definiert? Methode mit OperationContract-Attribut Methode mit OperationContract-Attribut Methode Methode mit OperationContract-Attribut
Service Definition - Data Contract Wie werden die Datenstrukturen des Dienstes definiert? POCOs mit DataContract-/DataMember-Attributen POCOs mit DataContract-/DataMember-Attributen POCO POCOs mit DataContract-/DataMember-Attributen
Service Implementierung Wie wird ein Service konkret implementiert, also wie wird die Service Definition in lauffähige Software überführt Interface-Implementierung des Service Contract Implementierung des Service Contract Implementierung des Service Contract Interface-Implementierung des Service Contract
Metadaten Ist der Dienst in der Lage, sich selbst zu beschreiben, und wenn ja, in welchem Format? WSDL Keine (WSDL noch nicht unterstützt) Keine WSDL
Bindungen
Transporte Über welche Kanäle kann der Dienst angeboten werden? HTTP[S], TCP, Named Pipes, Message Queues HTTP[S], TCP TCP, Named Pipes HTTP[S]
Protokoll Wie müssen Nachrichten, die zwischen Client und Server ausgetauscht werden, gestaltet sein? SOAP SOAP Proprietär SOAP
Serialisierung Wie werden Nachrichten für den Versand über den Transport serialisiert? XML, binär XML, binär JSON/byte[] XML
Kommunikationsmuster Welche Anwendungsszenarien unterstützt eine Technologie durch verschiedene Austauschmuster von Nachrichten? One Way, Request/Response, Publish/Subscribe, Streaming One Way, Request/Response, Publish/Subscribe (nur via TCP) One Way, Request/Response One Way, Request/Response


Eigenschaft
Beschreibung WCF Core WCF IpcServiceFramework Soap Core
Sprache In welcher Sprache kann ein Dienst angesprochen werden, das heißt, in welcher Sprache lässt sich das vom Dienst verwendete Transportprotokoll gut ansprechen? C#/.NET, JS/TS nur bedingt, Cross-Plattform C#/.NET, JS/TS nur bedingt, Cross-Plattform C#/.NET C#/.NET, JS/TS nur bedingt, Cross-Plattform
Einsatzgebiet Wo werden die Clients dieses Dienstes überwiegend eingesetzt? Fat Client, Backend Fat Client, Backend Fat Client, Backend Fat Client, Backend
Aufruf Über welchen Weg ruft eine Applikation den Service auf, das heißt, wie ist der Client implementiert? Auto-generated Proxy, Generischer Proxy Generischer Proxy Generischer Proxy Auto-generated Proxy, Generischer Proxy
Tabelle 1: Übersicht der Vergleichseigenschaften  (Teil 1)
Eigenschaft Beschreibung WCF Core WCF IpcServiceFramework Soap Core
Serverseitige Architektur
Sprache In welcher Sprache kann ein Dienst in der Technologie implementiert werden? C#/.NET C#/.NET C#/.NET C#/.NET
Plattform Welche Plattform (SDK, Runtime) in welcher minimalen Version wird benötigt, um Dienste zu implementieren? .NET 3.0 .NET Core 2.2 .NET 4.6.1, .NET Core 2.0 .NET 4.6.1, .NET Core 2.0
Architekturstil (RMM-Level) Handelt es sich um ein RPC-Framework oder um ein RESTful-basiertes System, und welche RMM-Level können maximal erreicht werden? RPC (0) RPC (0) RPC (0) RPC (0)
Adressierung (verwendete HTTP-Verben) Wie wird der Dienst adressiert, gibt es nur einen Endpunkt für alle Aktionen, oder können Aktionen separat adressiert werden? Im Fall eines HTTP-Transports: Welche Verben können genutzt werden? Single Endpoint, oft SVC-Datei (POST) Single Enpoint (POST) Single Endpoint (-) Single Enpoint (POST)
Service Definition - Service Contract Wie, wenn überhaupt, wird die Gesamtmentde der unterstützen Operationen des Dienstes definiert? C#-Interface mit ServiceContract-Attribut C# Interface mit ServiceContract-Attribut C# Interface C# Interface mit ServiceContract-Attribut
Service Definition - Operation Contract Wie wird eine einzelne Operation des Dienstes im Rahmen des Service Contract definiert? Methode mit OperationContract-Attribut Methode mit OperationContract-Attribut Methode Methode mit OperationContract-Attribut
Service Definition - Data Contract Wie werden die Datenstrukturen des Dienstes definiert? POCOs mit DataContract-/DataMember-Attributen POCOs mit DataContract-/DataMember-Attributen POCO POCOs mit DataContract-/DataMember-Attributen
Service Implementierung Wie wird ein Service konkret implementiert, also wie wird die Service Definition in lauffähige Software überführt Interface-Implementierung des Service Contract Implementierung des Service Contract Implementierung des Service Contract Interface-Implementierung des Service Contract
Metadaten Ist der Dienst in der Lage, sich selbst zu beschreiben, und wenn ja, in welchem Format? WSDL Keine (WSDL noch nicht unterstützt) Keine WSDL
Bindungen
Transporte Über welche Kanäle kann der Dienst angeboten werden? HTTP[S], TCP, Named Pipes, Message Queues HTTP[S], TCP TCP, Named Pipes HTTP[S]
Protokoll Wie müssen Nachrichten, die zwischen Client und Server ausgetauscht werden, gestaltet sein? SOAP SOAP Proprietär SOAP
Serialisierung Wie werden Nachrichten für den Versand über den Transport serialisiert? XML, binär XML, binär JSON/byte[] XML
Kommunikationsmuster Welche Anwendungsszenarien unterstützt eine Technologie durch verschiedene Austauschmuster von Nachrichten? One Way, Request/Response, Publish/Subscribe, Streaming One Way, Request/Response, Publish/Subscribe (nur via TCP) One Way, Request/Response One Way, Request/Response


Eigenschaft
Beschreibung WCF Core WCF IpcServiceFramework Soap Core
Sprache In welcher Sprache kann ein Dienst angesprochen werden, das heißt, in welcher Sprache lässt sich das vom Dienst verwendete Transportprotokoll gut ansprechen? C#/.NET, JS/TS nur bedingt, Cross-Plattform C#/.NET, JS/TS nur bedingt, Cross-Plattform C#/.NET C#/.NET, JS/TS nur bedingt, Cross-Plattform
Einsatzgebiet Wo werden die Clients dieses Dienstes überwiegend eingesetzt? Fat Client, Backend Fat Client, Backend Fat Client, Backend Fat Client, Backend
Aufruf Über welchen Weg ruft eine Applikation den Service auf, das heißt, wie ist der Client implementiert? Auto-generated Proxy, Generischer Proxy Generischer Proxy Generischer Proxy Auto-generated Proxy, Generischer Proxy

dotnetpro

Sie wollen zukünftig auch von den Vorteilen eines plus-Abos profitieren? Werden Sie jetzt dotnetpro-plus-Kunde
  • 2 Monate Gratis testen
  • Über 4.000 qualifizierte Fachartikel
  • Auf jedem Gerät verfügbar