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

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

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

    View full-size slide

  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?

    View full-size slide

  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

    View full-size slide

  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?

    View full-size slide

  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?

    View full-size slide

  6. Beispiel Proto
    Migration von WCF zu gRPC mit ASP.NET Core 7
    Wie funktioniert gRPC?

    View full-size slide

  7. 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

    View full-size slide

  8. 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

    View full-size slide

  9. Demo
    Migration von WCF zu gRPC mit ASP.NET Core 7

    View full-size slide

  10. • 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

    View full-size slide

  11. Demo
    Migration von WCF zu gRPC mit ASP.NET Core 7

    View full-size slide

  12. • 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

    View full-size slide

  13. Demo
    Migration von WCF zu gRPC mit ASP.NET Core 7

    View full-size slide

  14. 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

    View full-size slide

  15. Migration von WCF zu gRPC mit ASP.NET Core 7
    Boris Wilhelms
    [email protected]
    @boriswilhelms
    Thank you!

    View full-size slide