Grpc.Net vs Grpc.Core:服务器端有什么区别?
Grpc.Net vs Grpc.Core: What are the server side differences?
似乎 Grpc.Net 需要 ASP.NET 核心才能托管服务,而 Grpc.Core 不需要?有什么区别?更喜欢哪一个?
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
// Communication with gRPC endpoints must be made through a gRPC client.
// To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909
endpoints.MapGrpcService<GreeterService>();
});
}
Server server = new Server
{
Services = { RouteGuide.BindService(new RouteGuideImpl(features)) },
Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) }
};
server.Start();
Grpc.Core 是一个基于 gRPC 原生实现的库。它基本上是对本机库的绑定,可以直接将“原始”gRPC 用于客户端和服务器目的。
Grpc.AspNetCore 是 gRPC 的托管重新实现,它构建在 Kestrel 服务器堆栈之上。与本机实现相比,这使得 Grpc.AspNetCore 通常更加高效。它是为 ASP.NET Core 本身构建的,它还可以更好地集成到 ASP.NET Core 应用程序中,这还允许您与其他 ASP.NET Core 端点并排托管 gRPC 服务。相比之下,它可能不支持所有的gRPC特性,也仅限于服务端方面。
似乎 Grpc.Net 需要 ASP.NET 核心才能托管服务,而 Grpc.Core 不需要?有什么区别?更喜欢哪一个?
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
// Communication with gRPC endpoints must be made through a gRPC client.
// To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909
endpoints.MapGrpcService<GreeterService>();
});
}
Server server = new Server
{
Services = { RouteGuide.BindService(new RouteGuideImpl(features)) },
Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) }
};
server.Start();
Grpc.Core 是一个基于 gRPC 原生实现的库。它基本上是对本机库的绑定,可以直接将“原始”gRPC 用于客户端和服务器目的。
Grpc.AspNetCore 是 gRPC 的托管重新实现,它构建在 Kestrel 服务器堆栈之上。与本机实现相比,这使得 Grpc.AspNetCore 通常更加高效。它是为 ASP.NET Core 本身构建的,它还可以更好地集成到 ASP.NET Core 应用程序中,这还允许您与其他 ASP.NET Core 端点并排托管 gRPC 服务。相比之下,它可能不支持所有的gRPC特性,也仅限于服务端方面。