ASP.NET Core 中建立 gRPC 客戶端和伺服器
建立專案:GRPC.Server.Demo
新增專案資料夾:Protos 裡面的檔案新增 ProtosFile資料夾裡的檔案
解決方案:
GrpcGreeter 專案檔案 :
- greet.proto – Protos/greet.proto 檔案定義
Greeter
gRPC,且用於生成 gRPC 伺服器資產 。 有關詳細資訊,請參閱 gRPC 介紹。 - Services 資料夾:包含
Greeter
服務的實現。 - appSettings.json – 包含配置資料,如 Kestrel 使用的協議。 有關詳細資訊,請參閱 ASP.NET Core 中的配置。
- Program.cs – 包含 gRPC 服務的入口點。 有關詳細資訊,請參閱 .NET 通用主機。
- Startup.cs – 包含配置應用行為的程式碼。 有關詳細資訊,請參閱應用啟動。
GRPC.Server.Demo.csproj 新增一段如下:
<ItemGroup>
<Protobuf Include="**/*.proto" OutputDir="auto-generated" CompileOutputs="false" GrpcServices="Server" />
</ItemGroup>
GreeterService.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Grpc.Core;
using GRPC.Server.Demo;
using Microsoft.Extensions.Logging;
namespace GRPC.Server.Demo.Services
{
public class GreeterService : Greeter.GreeterBase
{
private readonly ILogger<GreeterService> _logger;
public GreeterService(ILogger<GreeterService> logger)
{
_logger = logger;
}
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply
{
Message = "Hello " + request.Name
});
}
}
}
建立專案:GRPC.Client.Demo
方案一:
gRPC 客戶端專案需要以下包:
- Grpc.Net.Client,其中包含 .NET Core 客戶端。
- Google.Protobuf 包含適用於 C# 的 Protobuf 訊息。
- Grpc.Tools 包含適用於 Protobuf 檔案的 C# 工具支援。 執行時不需要工具包,因此依賴項標記為
PrivateAssets="All"
。
新增專案資料夾:Protos 同上
GRPC.Client.Demo.csproj 新增一段如下:
<ItemGroup>
<Protobuf Include="**/*.proto" OutputDir="auto-generated" CompileOutputs="false" GrpcServices="Client" />
</ItemGroup>
方案二:
Program.cs
using Grpc.Net.Client;
using GRPC.Server.Demo;
using System;
using System.Threading.Tasks;
namespace GRPC.Client.Demo
{
class Program
{
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Console.WriteLine("Hello World!");
}
}
}
執行效果:
參考文獻:
https://docs.microsoft.com/zh-cn/aspnet/core/grpc/index?view=aspnetcore-3.0
相關文章
- grpc套路客戶端編寫RPC客戶端
- ASP.NET:郵件伺服器與客戶端ASP.NET伺服器客戶端
- python建立tcp服務端和客戶端PythonTCP服務端客戶端
- 在.NET 6 中如何建立和使用 HTTP 客戶端 SDKHTTP客戶端
- Go gRPC 系列三:流式客戶端和服務端GoRPC客戶端服務端
- GRpc新增客戶端的五種方式RPC客戶端
- GRPC Android客戶端演化史RPCAndroid客戶端
- MQTT伺服器搭建服務端和客戶端MQQT伺服器服務端客戶端
- 客戶端段建立到伺服器端的連線過程客戶端伺服器
- 在netweaver中建立應用程式客戶端客戶端
- 使用 Webix 建立 Email 客戶端WebAI客戶端
- 如何建立NEO輕客戶端客戶端
- CXF建立webservice客戶端和服務端Web客戶端服務端
- gRPC負載均衡(客戶端負載均衡)RPC負載客戶端
- Easyvision中的伺服器與客戶端伺服器客戶端
- 中斷客戶端客戶端
- Redis原始碼剖析——客戶端和伺服器Redis原始碼客戶端伺服器
- ubuntu 下面 svn 伺服器端和客戶端的配置和使用Ubuntu伺服器客戶端
- vncserver建立與客戶端連線VNCServer客戶端
- React 伺服器端渲染和客戶端渲染效果對比React伺服器客戶端
- gRPC 的增刪改查系列之客戶端RPC客戶端
- java版gRPC實戰之四:客戶端流JavaRPC客戶端
- .net core grpc單元測試 - 伺服器端RPC伺服器
- gRPC在 ASP.NET Core 中應用學習RPCASP.NET
- 藍芽客戶端和伺服器的實現藍芽客戶端伺服器
- Go gRPC 系列二:一元客戶端與服務端GoRPC客戶端服務端
- Go基於gRPC實現客戶端連入服務端GoRPC客戶端服務端
- gRPC之.Net6中的客戶端和服務端共用proto協議檔案RPC客戶端服務端協議
- 在ASP.NET Core中建立自定義端點視覺化圖ASP.NET視覺化
- gRPC學習記錄(六)--客戶端連線池RPC客戶端
- 7.4 為投注合約建立客戶端客戶端
- 建立一個Twisted Reactor TCP客戶端ReactTCP客戶端
- git客戶端建立本地公鑰Git客戶端
- 如何建立一個Java遊戲客戶端Java遊戲客戶端
- Java UDP伺服器和客戶端原始碼 -javarevisitedJavaUDP伺服器客戶端原始碼
- UE 客戶端和伺服器上的時間同步客戶端伺服器
- 《samba搭建win客戶端和linux客戶端的區別》Samba客戶端Linux
- Asp .Net Core 系列:整合 Refit 和 RestEase 宣告式 HTTP 客戶端庫RESTHTTP客戶端