使用 gRPC 进行进程间通信
09/16/2020
本文内容
客户端和服务之间的 gRPC 调用通常通过 TCP 套接字发送。 TCP 非常适用于网络中的通信。 但当客户端和服务在同一台计算机上时,进程间通信 (IPC) 的效率比 TCP 更高。 本文档介绍如何在 IPC 场景中将 gRPC 用于自定义传输。
服务器配置
Kestrel 支持自定义传输。 在 Program.cs 上配置 Kestrel:
public static readonly string SocketPath = Path.Combine(Path.GetTempPath(), "socket.tmp");
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup();
webBuilder.ConfigureKestrel(options =>
{
if (File.Exists(SocketPath))
{
File.Delete(SocketPath);
}
options.ListenUnixSocket(SocketPath, listenOptions =>
{
listenOptions.Protocols = HttpProtocols.Http2;
});
});