Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Intro grpc.net

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Prochain SlideShare
Asp.net core 3
Asp.net core 3
Chargement dans…3
×

Consultez-les par la suite

1 sur 22 Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Similaire à Intro grpc.net (20)

Publicité

Plus par MSDEVMTL (20)

Plus récents (20)

Publicité

Intro grpc.net

  1. 1. anthonygiretti Introduction à gRPC dans ASP.NET Core 3 Anthony Giretti Senior software developer chez Equisoft http://anthonygiretti.com anthony.giretti@gmail.com
  2. 2. anthonygiretti INTRODUCTION 2- C’est quoi Protocol Buffers? 3- gRPC dans ASP.NET Core 3 4- REST vs gRPC 1- C’est quoi gRPC? 6- Démo 5- Pourquoi utiliser (ou pas) gRPC .NET ?
  3. 3. anthonygiretti • gRPC est un framework RPC (Remote procedure call *) et non pas un framework Microsoft. • HTTP2 • Format de serialization Protocol Buffers (descripteur de contrat like WSDL pour WCF) • Transport biredirectionnel de données • Control des flux (annulation et délais d’attente) • Permet de s’authentifier (ouf !) • Créé aux alentours de 2004 par Google Open sourcé en 2015 • Java, C, C++, Node.js, Python, Ruby, Mais pas .NET ! (serveur) • Apprécié pour 4 principales raisons • Faible latence • Serialisation efficace avec Protocol Buffers vs JSON • Streaming bidirectionnel, realtime push • 10 languages le supporte (client), + PHP, Javascript / Typescript, .NET, Go et Dart * 1976: invention du protocole reseau RPC. 2004: implementation de JSON-RPC C’est quoi gRPC?
  4. 4. anthonygiretti • Language de structuration de données, descripteur de contrat (services et entités) • Version actuelle: proto 3, (proto 2 obsolète) • Fichiers nommés .proto • Encodés en binaire, lors du transport HTTP • Supporte tous les types primitifs, les énumérateurs et les collections • Nécessite un compilateur protocol buffer pour générer vos entités • Pas besoin de coder a bras vos entités • Guide du développeur: https://developers.google.com/protocol-buffers/docs/overview C’est quoi Protocol Buffers?
  5. 5. anthonygiretti • Exemple C’est quoi Protocol Buffers?
  6. 6. anthonygiretti • Grpc.Net.Client compatible avec Polly • HttpClient -> Polly gRPC dans ASP.NET Core 3
  7. 7. anthonygiretti • Disponible uniquement avec ASP.NET Core 3 • Nécessite donc VS 2019 et le SDK .NET Core 3.0 • Création à partir d’un template prédéfini dans VS 2019 gRPC dans ASP.NET Core 3
  8. 8. anthonygiretti • Création d’un fichier protobuf à parti d’un template Visual C# -> ASP.NET Core -> Général gRPC dans ASP.NET Core 3
  9. 9. anthonygiretti • Création d’un service gRPC • Ajouter csharp_namespace • Puis compiler! (nécessaire pour écrire le service) • Enfin écrivez votre service gRPC dans ASP.NET Core 3
  10. 10. anthonygiretti • Ecriture d’un service gRPC gRPC dans ASP.NET Core 3
  11. 11. anthonygiretti • Configurer le service gRPC gRPC dans ASP.NET Core 3
  12. 12. anthonygiretti • Consommer un service gRPC (exemple .NET Core 3 console app) • Installer les packages requis gRPC dans ASP.NET Core 3
  13. 13. anthonygiretti • Consommer un service gRPC (exemple .NET Core 3 console app) • Importer le fichier protobuf gRPC dans ASP.NET Core 3
  14. 14. anthonygiretti • Consommer un service gRPC (exemple .NET Core 3 console app) • Compilez! gRPC dans ASP.NET Core 3
  15. 15. anthonygiretti • Consommer un service gRPC (exemple .NET Core 3 console app) • Écrire votre client! gRPC dans ASP.NET Core 3
  16. 16. anthonygiretti • Consommer un service gRPC dans Xamarin gRPC dans Xamarin
  17. 17. anthonygiretti • Status codes • https://github.com/grpc/grpc/blob/master/doc/statuscodes.md REST VS gRPC • JSON vs Protobuf (binaire) • HTTP 2 only vs HTTP 1 & 2 (depuis ASP.NET Core 2.2) • Pas de génération de code vs génération de code • Supporté par les navigateurs vs non supporté par les navigateurs (en fait si mais….)
  18. 18. anthonygiretti • Comment faire supporter un service gRPC par un navigateur ? • Nécessite la librairie client gRPC-Web • Un proxy (envoy) faisant la translation entre les requêtes HTTP 1 et HTTP 2 REST VS gRPC
  19. 19. anthonygiretti • (Pour) Très performant • Compression binaire • Le protocole HTTP / 2 permet d’avoir une faible latence • Le protocole HTTP / 2 permet le multiplexage (plusieurs requêtes sur la même connexion) Pourquoi utiliser (ou pas) gRPC .NET ? • (Pour) Très pratique • Streaming Bidirectionnel • Streaming client-server et server-client • Unaire (comme REST) • (Pour) Simple d’utilisation • Spécification strictes: plus de débats autour des formats d’urls, des verbes à utiliser et des codes HTTP • Code auto généré: partage du fichier protobuf entre le server et le client, compilation puis autogénération des entités et des services
  20. 20. anthonygiretti • (Contre) Trop tôt pour s’en servir • Bugs ASP.NET Core 3 • Manque de documentation de la part de Microsoft • Support limité des navigateurs (non lié à Microsoft) Pourquoi utiliser (ou pas) gRPC .NET ?
  21. 21. anthonygiretti DEMO!
  22. 22. anthonygiretti • Ressources • https://www.grpc.io/docs/guides/ • https://developers.google.com/protocol-buffers/docs/csharptutorial • https://github.com/grpc/grpc/blob/master/doc/statuscodes.md • https://github.com/grpc-ecosystem/awesome-grpc • https://medium.com/@jnewmano/grpc-postman-173b62a64341 • https://github.com/grpc/grpc-dotnet/tree/master/examples • https://grpc.io/blog/grpc-on-dotnetcore/ • https://github.com/grpc/grpc-web • https://www.youtube.com/watch?v=DDBmvOPfqzA&feature=youtu.be&t=2340 • https://stackoverflow.com/questions/28582935/does-http-2-make-websockets- obsolete#targetText=In%20HTTP%2F2%2C%20server%2D,the%20client%20from%20the%20 browser.&targetText=However%2C%20with%20Websocket%2C%20the%20developer,they%2 0should%20complement%20each%20other. • https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md Références

×