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

SPAs & APIs mal anders: gRPC Code-First mit Bla...

SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7

Ein einziges .NET Interface für Client & Server genügt, um aus einer Blazor WebAssemby SPA mit serverseitigem .NET Code über gRPC Code-First zu reden – und das auch noch verdammt schnell!

Wie in allen anderen browserbasierten Single-Page-Application (SPA) Frameworks, ist Blazor WebAssembly JSON-over-HTTP (über Web- oder REST-APIs) die bei weitem häufigste Methode, um Daten auszutauschen und serverseitige Vorgänge auszulösen.

Warum sollte man das ändern? Nun, es gibt Gründe – vor allem wenn man in einem geschlossenen System ist und .NET sowohl im Frontend als auch im Backend einsetzt.

In diesem Webinar zeigt euch Patrick Jahr anhand einer Beispielanwendung wie ihr eure Daten mit gRPC bzw. gRPC-Web zwischen dem Backend und Frontend jenseits von REST austauschen könnt – und das alles in .NET & C#!

Patrick Jahr

May 31, 2023
Tweet

More Decks by Patrick Jahr

Other Decks in Programming

Transcript

  1. SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly

    & ASP.NET Core 7 Patrick Jahr @jahr_patrick Developer Consultant
  2. Hello, it’s me. Patrick Jahr Developer Consultant @ Thinktecture AG

    E-Mail: [email protected] Twitter: @jahr_patrick Slides: https://thinktecture.com/patrick-jahr SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7 Patrick Jahr P
  3. Warum gRPC bzw. gRPC-Web? Contract First vs Code First Single

    Point of Interface Vom Backend zur SPA Resumé SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7
  4. • Typsicherheit und Codegenerierung • Schnittstellendefinition mit Protocol Buffers (ProtoBuf)

    • Codegenerierung für sowohl den Client- als auch den Servercode • Performante Serialisierung der Daten • Deserialisierung erfolgt etwa 2-3 Mal schneller als mit JSON. • Bidirektionale Streaming-Kommunikation • (Client) und Server-Streaming • Unterstützung für Webanwendungen durch gRPC-Web • .NET, Java, Python, Go und viele weitere SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7 Warum gRPC bzw. gRPC-Web?
  5. Warum gRPC bzw. gRPC-Web? Contract First vs Code First Single

    Point of Interface Vom Backend zur SPA Resumé SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7
  6. Contract First • Service Schnittstellen mit Hilfe von .proto Dateien

    erstellen • Plattform- und Programmiersprachenunabhängig • Definieren von: • message-Objekten (Models) • service-Objecten (Services) • Code generation via MSBuild Task • Erstellt Server und Client Code SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7 Contract First vs. Code First
  7. Contract First – Service Sample SPAs & APIs mal anders:

    gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7 Contract First vs. Code First
  8. Contract First – Model Sample SPAs & APIs mal anders:

    gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7 Contract First vs. Code First
  9. Code First • NuGet Package: protobuf-net.Grpc • Entwickelt von Marc

    Gravell • Statt service- und message-Objekte, direkt im .NET-Code definieren • Streng typisierte .NET-Klassen sowohl im Backend als auch im Frontend • Code Sharing SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7 Contract First vs. Code First
  10. Warum gRPC bzw. gRPC-Web? Contract First vs Code First Single

    Point of Interface Vom Backend zur SPA Resumé SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7
  11. • Definieren eines Interface in einer Shared Library • Implementierung

    wird Serverseitig durchgeführt • Client nutzt lediglich das Interface, um mit dem Server zu kommunizieren Vom Backend bis zum Frontend mit nur einem Interface SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7 Single Point of Interface
  12. SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly

    & ASP.NET Core 7 Single Point of Interface
  13. Warum gRPC bzw. gRPC-Web? Contract First vs Code First Single

    Point of Interface Vom Backend zur SPA Resumé SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7
  14. 1. Server startet gRPC-Server um Clientaufrufe zu verarbeiten 2. Client

    enthält einen Stub, der dieselben Methoden wie der Server bereitstellt 3. gRPC-Stub sendet Proto- Anforderung(en) an den gRPC-Server und dieser gibt die Proto-Antwort(en) zurück SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7 Vom Backend zur SPA 1 2 2 3
  15. Warum gRPC bzw. gRPC-Web? Contract First vs Code First Single

    Point of Interface Vom Backend zur SPA Resumé SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7
  16. - Höhere Performance bei der Deserialisierung als mit JSON -

    frühzeitige Fehlererkennung während der Kompilierung - Bessere IntelliSense-Unterstützung - Code Sharing - Server-Streaming SPAs & APIs mal anders: gRPC Code-First mit Blazor WebAssembly & ASP.NET Core 7 Resumé