Focus on • Identity- & Access-Management solutions • Web-based, cloud native application architectures • .NET Core • Email: [email protected] • Twitter: @boriswilhelms Migration von WCF zu gRPC mit ASP.NET Core 7 Who am I?
Remote-Prozeduraufruf-Kommunikation (RPC). • gRPC nutzt HTTP/2-Protokoll als Transportprotokoll. • gRPC ist eine Contract-First Technologie • gRPC verwendet Protocol Buffers (Protobuf) als Standard-Nachrichtenformat. • Protobuf ist eine binäres und sprachagnostische Serialisierungsformat Migration von WCF zu gRPC mit ASP.NET Core 7 Was ist gRPC?
auf den .proto-Dateien wird automatisch Stub-Code generiert, der auf Client- und Serverseite verwendet wird. • Der Stub-Code enthält Methoden, um gRPC-Anfragen zu senden und Antworten zu empfangen. • Serialisierung und Deserialisierung mit Protobuf • gRPC verwendet HTTP/2 als Transportprotokoll. • gRPC nativ leider im Browser nicht möglich. Dafür benötigt man gRPC-Web • Kann auch mit Named-Pipes oder Unix Sockets genutzt werden Migration von WCF zu gRPC mit ASP.NET Core 7 Wie funktioniert gRPC?
und Named Pipes und verwendet XML als Standard-Datenformat. gRPC verwendet standardmäßig HTTP/2 als Transportprotokoll und Protocol Buffers (Protobuf) als Datenformat, was eine effiziente Kommunikation und geringeren Overhead ermöglicht. Interoperabilität WCF ist stark mit der .NET-Plattform verbunden und unterstützt den Austausch von Nachrichten mit anderen WCF- Diensten. gRPC hingegen ist plattformübergreifend und unterstützt verschiedene Programmiersprachen, was die Interoperabilität zwischen verschiedenen Plattformen und Sprachen erleichtert. Migration von WCF zu gRPC mit ASP.NET Core 7 Unterschiede zwischen gRPC und WCF
2. Alle Service-Methoden müssen das OperationContractAttribute haben 3. Alle Service-Methoden dürfen nur ein Argument haben und dieses muss eine Klasse sein 4. Alle Rückgabetypen, müssen vom Typ void, Task oder eine Klasse sein 5. Alle Message-Klassen müssen das DataContractAttribute haben 6. Alle Properties in der Message Klasse müssen das DataMemberAttribute haben und dies muss eine eindeutige Order haben Migration von WCF zu gRPC mit ASP.NET Core 7 Migration mit gRPC Code-First
ähnliche Funktionen. • Middlewares ermöglichen Verarbeitungsschritte in der ASP.NET Ciore Pipeline. • Ermöglicht Nutzung aller ASP.NET Core Middlewares • z.B. Authentication & Authorization • Interceptors ermöglichen Verarbeitungsschritte in der gRPC-Pipeline. • Zugriff auf aufgerufene Service Methode • Zugriff auf die entsprechenden Messages Migration von WCF zu gRPC mit ASP.NET Core 7 WCF-Behaviors in gRPC
dynamische Erkunden von gRPC-Diensten zur Laufzeit • Nützlich für Entwickler Tools wie Postman, grpc-ui und grpcurl • Kann bei dem Code-First Verfahren genutzt werden, um proto-Dateien für den Code zu bekommen • Nuget Packages: • protobuf-net.Grpc.AspNetCore.Reflection bei Code-First • Grpc.AspNetCore.Server.Reflection bei Contract-Fist Migration von WCF zu gRPC mit ASP.NET Core 7 gRPC Reflection
bei der der vorhandene .NET-Code wiederverwendet werden kann. WCF-Behaviors können mit Hilfe von gRPC Interceptors und ASP.NET Core Middlewares in gRPC nachgebildet werden, um zusätzliche Verarbeitungsfunktionen wie Authentifizierung, Autorisierung und Überwachung zu implementieren. gRPC bietet eine moderne, interoperable Alternative zu WCF und wird aktiv weiterentwickelt. Migration von WCF zu gRPC mit ASP.NET Core 7 Fazit