.net + Windows + gRPC library = ?

Faire le choix de gRPC aujourd'hui, c'est faire le chois de la performance, de la modernité, et tout un tas de belles choses. Quand on se documente sur gRPC, on aurait presque l'impression qu'il n'y a que des avantages.

Attention : Spoiler alerte, l'article qui suit va peut-être vous éviter de faire de grosses erreurs.

Il existe un sujet qui peut poser des problèmes lors de la mise en production d'une application gRPC. Il s'agit de HTTP2. Ce standard n'est pas forcément supporté par votre OS, votre Runtime ou votre librairie gRPC. Voilà donc un sujet qu'il faut maitriser avant de se lancer.

Plutôt que de partir dans une longue litanie d'informations et détails indigestes, j'ai fait le choix de créer quelques tableaux. J'espère qu'ils seront suffisamment clairs et explicites.

J'ai découpé l'information suivant les scénarios suivants :

  • Application serveur gRPC (HTTP2)
  • Application client gRPC (HTTP2)
  • Application serveur gRPC Web (HTTP1)
  • Application client gRPC Web (HTTP1)

Côté technologies, je me suis arrêté aux versions de Windows et .net que l'on rencontre encore régulièrement aujourd'hui.

Rappel : Même si ces tableaux font référence à Grpc.Core, il faut se rappeler que cette implémentation n'est plus conseillée.


Application serveur gRPC (HTTP2)

Windows 2008R2 Windows 2012 Windows 2012R2 Windows 2016 Windows 2019
.net Framework 4.6.1 - 4.8 impossible impossible impossible Grpc.Core Grpc.Core
.net core 2.0 - 2.1 impossible impossible impossible Grpc.Core Grpc.Core
.net core 3.0 - 3.1 impossible impossible impossible Grpc.AspNetCore Grpc.AspNetCore
.net 5 impossible impossible impossible Grpc.AspNetCore Grpc.AspNetCore

IIS ne supportant pas HTTP2, la solution la plus simple consistera à utiliser directement Kestrel avec .net Core et .net 5. Pour .net Framework, une application console fera l'affaire.


Application client gRPC (HTTP2)

Windows 7 Windows 8 – 8.1 Windows 10 Windows 10 Build 19622 ou version ultérieure
.net Framework 4.6.1 - 4.8 impossible impossible Grpc.Core Grpc.Net.Client avec WinHttpHandler
.net core 2.0 - 2.1 impossible impossible Grpc.Core Grpc.Core
.net core 3.0 - 3.1 Grpc.Net.Client Grpc.Net.Client Grpc.Net.Client Grpc.Net.Client
.net 5 Grpc.Net.Client Grpc.Net.Client Grpc.Net.Client Grpc.Net.Client


Application serveur gRPC Web (HTTP1)

Windows 2008R2 Windows 2012 Windows 2012R2 Windows 2016 Windows 2019
.net Framework 4.6.1 - 4.8 impossible impossible impossible impossible impossible
.net core 2.0 - 2.1 impossible impossible impossible impossible impossible
.net core 3.0 - 3.1 Grpc.AspNetCore.Web Grpc.AspNetCore.Web Grpc.AspNetCore.Web Grpc.AspNetCore.Web Grpc.AspNetCore.Web
.net 5 Grpc.AspNetCore.Web Grpc.AspNetCore.Web Grpc.AspNetCore.Web Grpc.AspNetCore.Web Grpc.AspNetCore.Web


Application client gRPC Web (HTTP1)

Windows 7 Windows 8 – 8.1 Windows 10 Windows 10 Build 19622 ou version ultérieure
.net Framework 4.6.1 - 4.8 Grpc.Net.Client.Web Grpc.Net.Client.Web Grpc.Net.Client.Web Grpc.Net.Client.Web
.net core 2.0 - 2.1 Grpc.Net.Client.Web Grpc.Net.Client.Web Grpc.Net.Client.Web Grpc.Net.Client.Web
.net core 3.0 - 3.1 Grpc.Net.Client.Web Grpc.Net.Client.Web Grpc.Net.Client.Web Grpc.Net.Client.Web
.net 5 Grpc.Net.Client.Web Grpc.Net.Client.Web Grpc.Net.Client.Web Grpc.Net.Client.Web
Jérémy Jeanson

Comments

You have to be logged in to comment this post.