SlideShare une entreprise Scribd logo
1  sur  22
anthonygiretti
Introduction à gRPC
dans ASP.NET Core 3
Anthony Giretti
Senior software developer chez Equisoft
http://anthonygiretti.com
anthony.giretti@gmail.com
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 ?
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?
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?
anthonygiretti
• Exemple
C’est quoi Protocol Buffers?
anthonygiretti
• Grpc.Net.Client compatible avec Polly
• HttpClient -> Polly
gRPC dans ASP.NET Core 3
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
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
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
anthonygiretti
• Ecriture d’un service gRPC
gRPC dans ASP.NET Core 3
anthonygiretti
• Configurer le service gRPC
gRPC dans ASP.NET Core 3
anthonygiretti
• Consommer un service gRPC (exemple .NET Core 3 console app)
• Installer les packages requis
gRPC dans ASP.NET Core 3
anthonygiretti
• Consommer un service gRPC (exemple .NET Core 3 console app)
• Importer le fichier protobuf
gRPC dans ASP.NET Core 3
anthonygiretti
• Consommer un service gRPC (exemple .NET Core 3 console app)
• Compilez!
gRPC dans ASP.NET Core 3
anthonygiretti
• Consommer un service gRPC (exemple .NET Core 3 console app)
• Écrire votre client!
gRPC dans ASP.NET Core 3
anthonygiretti
• Consommer un service gRPC dans Xamarin
gRPC dans Xamarin
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….)
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
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
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 ?
anthonygiretti
DEMO!
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

Contenu connexe

Tendances

Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Publicis Sapient Engineering
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière Cellenza
 
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...Publicis Sapient Engineering
 
Prometheus et kubernetes | AIOS SH
Prometheus et kubernetes | AIOS SHPrometheus et kubernetes | AIOS SH
Prometheus et kubernetes | AIOS SHLaurent AMPLIS
 
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...Publicis Sapient Engineering
 
Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)Quentin Frémeaux
 
Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)Quentin Frémeaux
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueVincent Composieux
 
Angular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUGAngular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUGWilliam Marques
 
Performance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfonyPerformance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfonyXavier Leune
 
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim RousseauXebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim RousseauPublicis Sapient Engineering
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile AppHabib MAALEM
 
Meteor: you're going to love full-stack JavaScript. At last.
Meteor: you're going to love full-stack JavaScript. At last.Meteor: you're going to love full-stack JavaScript. At last.
Meteor: you're going to love full-stack JavaScript. At last.Arnaud Weil
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkMSDEVMTL
 

Tendances (19)

Devoxx fr 2015 HAProxy
Devoxx fr 2015 HAProxyDevoxx fr 2015 HAProxy
Devoxx fr 2015 HAProxy
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
 
Ansible et Jenkins
Ansible et JenkinsAnsible et Jenkins
Ansible et Jenkins
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière
 
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
 
Prometheus et kubernetes | AIOS SH
Prometheus et kubernetes | AIOS SHPrometheus et kubernetes | AIOS SH
Prometheus et kubernetes | AIOS SH
 
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
 
Devoxx France - Où sont passés mes serveurs ?
Devoxx France - Où sont passés mes serveurs ?Devoxx France - Où sont passés mes serveurs ?
Devoxx France - Où sont passés mes serveurs ?
 
Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)
 
Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
 
Angular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUGAngular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUG
 
Devoxx France : GruntJs In Action
Devoxx France : GruntJs In ActionDevoxx France : GruntJs In Action
Devoxx France : GruntJs In Action
 
Performance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfonyPerformance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfony
 
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim RousseauXebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
 
Meteor: you're going to love full-stack JavaScript. At last.
Meteor: you're going to love full-stack JavaScript. At last.Meteor: you're going to love full-stack JavaScript. At last.
Meteor: you're going to love full-stack JavaScript. At last.
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity framework
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
 

Similaire à Intro grpc.net

[FR] Websocket Documentary Reasearches
[FR] Websocket Documentary Reasearches[FR] Websocket Documentary Reasearches
[FR] Websocket Documentary ReasearchesManavai Teikituhaahaa
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)Restlet
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.pptadiouf2
 
S51 vos projets web services ibm i a l aide de php
S51   vos projets web services ibm i a l aide de phpS51   vos projets web services ibm i a l aide de php
S51 vos projets web services ibm i a l aide de phpGautier DUMAS
 
Les Web APIs en .NET Core
Les Web APIs en .NET CoreLes Web APIs en .NET Core
Les Web APIs en .NET CoreFrançois Camus
 
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...sametmax
 
gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!David Caramelo
 
gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !Carles Sistare
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...sebastienmoreno
 
resume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdfresume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdfFootballLovers9
 
La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secretsAymeric Bouillat
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryDamien Goldenberg
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 
Session GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraSession GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraDNG Consulting
 
Découvrez la technologie WebRTC, comment cela fonctionne?
Découvrez la technologie WebRTC, comment cela fonctionne? Découvrez la technologie WebRTC, comment cela fonctionne?
Découvrez la technologie WebRTC, comment cela fonctionne? Sylvain Boily
 

Similaire à Intro grpc.net (20)

[FR] Websocket Documentary Reasearches
[FR] Websocket Documentary Reasearches[FR] Websocket Documentary Reasearches
[FR] Websocket Documentary Reasearches
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
 
S51 vos projets web services ibm i a l aide de php
S51   vos projets web services ibm i a l aide de phpS51   vos projets web services ibm i a l aide de php
S51 vos projets web services ibm i a l aide de php
 
Les Web APIs en .NET Core
Les Web APIs en .NET CoreLes Web APIs en .NET Core
Les Web APIs en .NET Core
 
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
 
gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!
 
gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
43_pps.pdf
43_pps.pdf43_pps.pdf
43_pps.pdf
 
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
 
resume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdfresume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdf
 
La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secrets
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous Delivery
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
Session GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraSession GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 Cobra
 
Talk gRPC et Dapr
Talk gRPC et DaprTalk gRPC et Dapr
Talk gRPC et Dapr
 
Découvrez la technologie WebRTC, comment cela fonctionne?
Découvrez la technologie WebRTC, comment cela fonctionne? Découvrez la technologie WebRTC, comment cela fonctionne?
Découvrez la technologie WebRTC, comment cela fonctionne?
 
Le web en http 2
Le web en http 2Le web en http 2
Le web en http 2
 

Plus de MSDEVMTL

Grpc and asp.net partie 2
Grpc and asp.net partie 2Grpc and asp.net partie 2
Grpc and asp.net partie 2MSDEVMTL
 
Property based testing
Property based testingProperty based testing
Property based testingMSDEVMTL
 
Improve cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft AzureImprove cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft AzureMSDEVMTL
 
Return on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & DataReturn on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & DataMSDEVMTL
 
C sharp 8.0 new features
C sharp 8.0 new featuresC sharp 8.0 new features
C sharp 8.0 new featuresMSDEVMTL
 
MSDEVMTL Informations 2019
MSDEVMTL Informations 2019MSDEVMTL Informations 2019
MSDEVMTL Informations 2019MSDEVMTL
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcoreMSDEVMTL
 
Groupe Excel et Power BI - Rencontre du 25 septembre 2018
Groupe Excel et Power BI  - Rencontre du 25 septembre 2018Groupe Excel et Power BI  - Rencontre du 25 septembre 2018
Groupe Excel et Power BI - Rencontre du 25 septembre 2018MSDEVMTL
 
Api gateway
Api gatewayApi gateway
Api gatewayMSDEVMTL
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcoreMSDEVMTL
 
Stephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environmentsStephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environmentsMSDEVMTL
 
Eric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts AzureEric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts AzureMSDEVMTL
 
Data science presentation
Data science presentationData science presentation
Data science presentationMSDEVMTL
 
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...MSDEVMTL
 
Open id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api coreOpen id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api coreMSDEVMTL
 
Yoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analyticsYoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analyticsMSDEVMTL
 
CAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling AverageCAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling AverageMSDEVMTL
 
CAE: etude de cas
CAE: etude de casCAE: etude de cas
CAE: etude de casMSDEVMTL
 
Dan Edwards : Data visualization best practices with Power BI
Dan Edwards : Data visualization best practices with Power BIDan Edwards : Data visualization best practices with Power BI
Dan Edwards : Data visualization best practices with Power BIMSDEVMTL
 
Entity framework core 2 vs micro orm performances
Entity framework core 2 vs micro orm performancesEntity framework core 2 vs micro orm performances
Entity framework core 2 vs micro orm performancesMSDEVMTL
 

Plus de MSDEVMTL (20)

Grpc and asp.net partie 2
Grpc and asp.net partie 2Grpc and asp.net partie 2
Grpc and asp.net partie 2
 
Property based testing
Property based testingProperty based testing
Property based testing
 
Improve cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft AzureImprove cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft Azure
 
Return on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & DataReturn on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & Data
 
C sharp 8.0 new features
C sharp 8.0 new featuresC sharp 8.0 new features
C sharp 8.0 new features
 
MSDEVMTL Informations 2019
MSDEVMTL Informations 2019MSDEVMTL Informations 2019
MSDEVMTL Informations 2019
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
 
Groupe Excel et Power BI - Rencontre du 25 septembre 2018
Groupe Excel et Power BI  - Rencontre du 25 septembre 2018Groupe Excel et Power BI  - Rencontre du 25 septembre 2018
Groupe Excel et Power BI - Rencontre du 25 septembre 2018
 
Api gateway
Api gatewayApi gateway
Api gateway
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
 
Stephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environmentsStephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environments
 
Eric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts AzureEric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts Azure
 
Data science presentation
Data science presentationData science presentation
Data science presentation
 
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
 
Open id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api coreOpen id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api core
 
Yoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analyticsYoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analytics
 
CAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling AverageCAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling Average
 
CAE: etude de cas
CAE: etude de casCAE: etude de cas
CAE: etude de cas
 
Dan Edwards : Data visualization best practices with Power BI
Dan Edwards : Data visualization best practices with Power BIDan Edwards : Data visualization best practices with Power BI
Dan Edwards : Data visualization best practices with Power BI
 
Entity framework core 2 vs micro orm performances
Entity framework core 2 vs micro orm performancesEntity framework core 2 vs micro orm performances
Entity framework core 2 vs micro orm performances
 

Intro grpc.net

  • 1. anthonygiretti Introduction à gRPC dans ASP.NET Core 3 Anthony Giretti Senior software developer chez Equisoft http://anthonygiretti.com anthony.giretti@gmail.com
  • 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. 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. 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?
  • 6. anthonygiretti • Grpc.Net.Client compatible avec Polly • HttpClient -> Polly gRPC dans ASP.NET Core 3
  • 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. 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. 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. anthonygiretti • Ecriture d’un service gRPC gRPC dans ASP.NET Core 3
  • 11. anthonygiretti • Configurer le service gRPC gRPC dans ASP.NET Core 3
  • 12. anthonygiretti • Consommer un service gRPC (exemple .NET Core 3 console app) • Installer les packages requis gRPC dans ASP.NET Core 3
  • 13. anthonygiretti • Consommer un service gRPC (exemple .NET Core 3 console app) • Importer le fichier protobuf gRPC dans ASP.NET Core 3
  • 14. anthonygiretti • Consommer un service gRPC (exemple .NET Core 3 console app) • Compilez! gRPC dans ASP.NET Core 3
  • 15. anthonygiretti • Consommer un service gRPC (exemple .NET Core 3 console app) • Écrire votre client! gRPC dans ASP.NET Core 3
  • 16. anthonygiretti • Consommer un service gRPC dans Xamarin gRPC dans Xamarin
  • 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. 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. 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. 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 ?
  • 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