我所看到的有关 gRPC 的所有内容似乎都在 Dotnet Core 中。
不幸的是,我只能使用 .NET Framework,因为我正在开发旧版应用程序。
我想向其中添加一些 gRPC 端点。
这可以以任何合理的方式完成吗?
Grpc.Core
软件包包含(旧版)非托管客户端和服务器代码,可在 .NET Framework 上使用;典型用法是:
Server server = new Server
{
Ports = { new ServerPort("localhost", 10042, ServerCredentials.Insecure) },
Services = {
Calculator.BindService(calc),
TimeService.BindService(clock),
}
};
server.Start();
Console.WriteLine("Server running... press any key");
Console.ReadKey();
await server.ShutdownAsync();
客户会更像:
var channel = new Channel("localhost", 10042, ChannelCredentials.Insecure);
try
{
var calc = new Calculator.CalculatorClient(channel);
for (int i = 0; i < 5; i++)
{
using var ma = calc.MultiplyAsync(new MultiplyRequest { X = i, Y = i });
var calcResult = await ma.ResponseAsync;
Console.WriteLine(calcResult.Result);
}
var clock = new TimeService.TimeServiceClient(channel);
using var subResult = clock.Subscribe(new Empty());
var reader = subResult.ResponseStream;
while (await reader.MoveNext(default))
{
var time = reader.Current.Time;
Console.WriteLine($"The time is now {time}");
}
}
finally
{
await channel.ShutdownAsync();
}
所以:是的。