gRPC pour C# (.NET) : bibliothèques et exemples
\n\ngRPC est un framework d'appel de procédure à distance (RPC) haute performance de Google, basé sur HTTP/2 et Protocol Buffers (protobuf). Dans l'écosystème .NET, gRPC est devenu le standard de facto pour la communication entre microservices, offrant un typage strict, un flux bidirectionnel et une faible latence. Dans cet article, nous examinerons les bibliothèques clés pour travailler avec gRPC en C# et fournirons des exemples pratiques de configuration d'un serveur et d'un client.
\n\nBibliothèques principales gRPC pour .NET
\n\nPour travailler avec gRPC dans .NET, les packages NuGet suivants sont utilisés :
\n\n- \n
- Grpc.AspNetCore — intégration du serveur gRPC dans ASP.NET Core (recommandé pour l'hébergement). \n
- Grpc.Net.Client — bibliothèque cliente pour .NET (incluant .NET Core, .NET 5+). \n
- Grpc.Tools — générateur de code à partir de fichiers
.proto(ajouté comme élémentProtobufdans .csproj). \n - Google.Protobuf — gestion des messages protobuf. \n
Tous ces packages sont pris en charge par Microsoft et sont activement développés. L'installation se fait via le gestionnaire de packages NuGet ou l'interface en ligne de commande dotnet :
\n\ndotnet add package Grpc.AspNetCore\ndotnet add package Grpc.Net.Client\ndotnet add package Google.Protobuf\ndotnet add package Grpc.Tools\n\nCréation d'un serveur gRPC en C#
\n\nExaminons la création étape par étape d'un service simple pour la gestion des commandes.
\n\n1. Définition du fichier proto
\nCréez un fichier order.proto dans le projet serveur (par exemple, GrpcServer) :
syntax = "proto3";\n\nservice OrderService {\n rpc GetOrder (OrderRequest) returns (OrderResponse);\n rpc SubscribeOrders (OrderRequest) returns (stream OrderResponse);\n}\n\nmessage OrderRequest {\n int32 order_id = 1;\n}\n\nmessage OrderResponse {\n int32 order_id = 1;\n string status = 2;\n double total = 3;\n}\n\n2. Configuration du .csproj pour la génération de code
\nAjoutez dans le fichier .csproj :
<ItemGroup>\n <Protobuf Include="order.proto" GrpcServices="Server" />\n</ItemGroup>\n\n3. Implémentation du service
\nCréez une classe héritant de la classe de base générée :
\n\npublic class OrderServiceImpl : OrderService.OrderServiceBase\n{\n public override Task<OrderResponse> GetOrder(OrderRequest request, ServerCallContext context)\n {\n return Task.FromResult(new OrderResponse\n {\n OrderId = request.OrderId,\n Status = "Shipped",\n Total = 99.99\n });\n }\n\n public override async Task SubscribeOrders(OrderRequest request, \n IServerStreamWriter<OrderResponse> responseStream, ServerCallContext context)\n {\n for (int i = 0; i < 5; i++)\n {\n await responseStream.WriteAsync(new OrderResponse\n {\n OrderId = request.OrderId,\n Status = $"Update #{i}",\n Total = 100 + i * 10\n });\n await Task.Delay(1000);\n }\n }\n}\n\n4. Enregistrement dans Program.cs
\n\nvar builder = WebApplication.CreateBuilder(args);\nbuilder.Services.AddGrpc();\n\nvar app = builder.Build();\napp.MapGrpcService<OrderServiceImpl>();\napp.MapGet("/", () => "gRPC server is running");\napp.Run();\n\nCréation d'un client gRPC en C#
\n\nCréons maintenant une application console cliente (GrpcClient).
1. Préparation
\nCopiez le fichier order.proto dans le projet client et spécifiez dans .csproj :
<Protobuf Include="order.proto" GrpcServices="Client" />\n\n2. Code du client
\n\nusing Grpc.Net.Client;\nusing GrpcClient;\n\nvar channel = GrpcChannel.ForAddress("https://localhost:5001");\ Aussi dans la bibliothèque
Surveillance des applications PHP avec les bibliothèques php-ast et xhprof
Bibliothèque WebSocket Ratchet pour PHP : création en temps réel sur le site
Générateur de QR codes en TypeScript : qrcode.js et qrcode-generator