Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pragmatische Architektur-Modernisierung Migrati...

Pragmatische Architektur-Modernisierung Migration von WCF zu gRPC mit ASP.NET Core 7

Boris Wilhelms

May 17, 2023
Tweet

More Decks by Boris Wilhelms

Other Decks in Programming

Transcript

  1. Migration von WCF zu gRPC mit ASP.NET Core 7 Boris

    Wilhelms @boriswilhelms Consultant
  2. Boris Wilhelms • Consultant and Architect at Thinktecture AG •

    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?
  3. • Was ist gRPC? • Unterschiede zwischen gRPC und WCF?

    • Migration mit gRPC Code-First • WCF-Behaviors in gRPC • gRPC Reflection Migration von WCF zu gRPC mit ASP.NET Core 7 Agenda
  4. • gRPC ist ein von Google entwickeltes Open-Source-Framework für die

    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?
  5. • Client-Server-Kommunikation • Service- und Model-Definitionen mit .proto-Dateien • Basierend

    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?
  6. Transportprotokolle und Datenformat WCF unterstützt verschiedene Transportprotokolle wie HTTP, TCP

    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
  7. Voraussetzungen 1. Auf dem Contract muss das ServiceContractAttribute gesetzt sein

    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
  8. • gRPC in ASP.NET Core verwendet Middlewares und Interceptors für

    ä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
  9. • Stellt proto-Dateien zu den gRPC-Diensten bereit • Ermöglicht das

    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
  10. Der Code-First-Ansatz mit dem Community-Projekt protobuf-net.Grpc ermöglicht eine pragmatische Migration,

    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