.NET 上的 gRPC 概述 您所在的位置:网站首页 微软的框架 .NET 上的 gRPC 概述

.NET 上的 gRPC 概述

2024-03-26 14:20| 来源: 网络整理| 查看: 265

.NET 上的 gRPC 概述 项目 11/30/2023

作者:James Newton-King

gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架。

gRPC 的主要优点是:

现代高性能轻量级 RPC 框架。 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现。 可用于多种语言的工具,以生成强类型服务器和客户端。 支持客户端、服务器和双向流式处理调用。 使用 Protobuf 二进制序列化减少对网络的使用。

这些优点使 gRPC 适用于:

效率至关重要的轻量级微服务。 需要多种语言用于开发的 Polyglot 系统。 需要处理流式处理请求或响应的点对点实时服务。 对 .proto 文件的 C# 工具支持

gRPC 使用协定优先方法进行 API 开发。 在 .proto 文件中定义服务和消息:

syntax = "proto3"; service Greeter { rpc SayHello (HelloRequest) returns (HelloReply); } message HelloRequest { string name = 1; } message HelloReply { string message = 1; }

通过在项目中包含 .proto 文件,可自动生成用于服务、客户端和消息的 .NET 类型:

将包引用添加到 Grpc.Tools 包。 将 .proto 文件添加到 项目组。

有关 gRPC 工具支持的详细信息,请参阅使用 C# 的 gRPC 服务。

ASP.NET Core 上的 gRPC 服务

gRPC 服务可以托管在 ASP.NET Core 上。 这些服务与日志记录、依赖关系注入 (DI)、身份验证和授权等 ASP.NET Core 功能完全集成。

将 gRPC 服务添加到 ASP.NET Core 应用

gRPC 需要 Grpc.AspNetCore 包。 若要了解如何在 .NET 应用中配置 gRPC,请查看配置 gRPC。

gRPC 服务项目模板

ASP.NET Core gRPC 服务项目模板提供了一个入门版服务:

public class GreeterService : Greeter.GreeterBase { private readonly ILogger _logger; public GreeterService(ILogger logger) { _logger = logger; } public override Task SayHello(HelloRequest request, ServerCallContext context) { _logger.LogInformation("Saying hello to {Name}", request.Name); return Task.FromResult(new HelloReply { Message = "Hello " + request.Name }); } }

GreeterService 继承自 GreeterBase 类型,后者是从 .proto 文件的 Greeter 服务生成的。 Program.cs 中的客户端可以访问该服务:

app.MapGrpcService();

若要详细了解 ASP.NET Core 上的 gRPC 服务,请参阅使用 ASP.NET Core 的 gRPC 服务。

使用 .NET 客户端调用 gRPC 服务

gRPC 客户端是从 .proto 文件生成的具体客户端类型。 具体 gRPC 客户端具有转换为 .proto 文件中 gRPC 服务的方法。

var channel = GrpcChannel.ForAddress("https://localhost:5001"); var client = new Greeter.GreeterClient(channel); var response = await client.SayHelloAsync( new HelloRequest { Name = "World" }); Console.WriteLine(response.Message);

gRPC 客户端是使用通道创建的,该通道表示与 gRPC 服务的长期连接。 可以使用 GrpcChannel.ForAddress 创建通道。

有关创建客户端、调用不同服务方法的详细信息,请参阅使用 .NET 客户端调用 gRPC 服务。

其他资源 使用 C# 的 gRPC 服务 使用 ASP.NET Core 的 gRPC 服务 使用 .NET 客户端调用 gRPC 服务 .NET 中的 gRPC 客户端工厂集成 在 ASP.NET Core 中创建 .NET Core gRPC 客户端和服务器

gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架。

gRPC 的主要优点是:

现代高性能轻量级 RPC 框架。 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现。 可用于多种语言的工具,以生成强类型服务器和客户端。 支持客户端、服务器和双向流式处理调用。 使用 Protobuf 二进制序列化减少对网络的使用。

这些优点使 gRPC 适用于:

效率至关重要的轻量级微服务。 需要多种语言用于开发的 Polyglot 系统。 需要处理流式处理请求或响应的点对点实时服务。 对 .proto 文件的 C# 工具支持

gRPC 使用协定优先方法进行 API 开发。 在 .proto 文件中定义服务和消息:

syntax = "proto3"; service Greeter { rpc SayHello (HelloRequest) returns (HelloReply); } message HelloRequest { string name = 1; } message HelloReply { string message = 1; }

通过在项目中包含 .proto 文件,可自动生成用于服务、客户端和消息的 .NET 类型:

将包引用添加到 Grpc.Tools 包。 将 .proto 文件添加到 项目组。

有关 gRPC 工具支持的详细信息,请参阅使用 C# 的 gRPC 服务。

ASP.NET Core 上的 gRPC 服务

gRPC 服务可以托管在 ASP.NET Core 上。 这些服务与日志记录、依赖关系注入 (DI)、身份验证和授权等 ASP.NET Core 功能完全集成。

将 gRPC 服务添加到 ASP.NET Core 应用

gRPC 需要 Grpc.AspNetCore 包。 若要了解如何在 .NET 应用中配置 gRPC,请查看配置 gRPC。

gRPC 服务项目模板

gRPC 服务项目模板提供了一个入门版服务:

public class GreeterService : Greeter.GreeterBase { private readonly ILogger _logger; public GreeterService(ILogger logger) { _logger = logger; } public override Task SayHello(HelloRequest request, ServerCallContext context) { _logger.LogInformation("Saying hello to {Name}", request.Name); return Task.FromResult(new HelloReply { Message = "Hello " + request.Name }); } }

GreeterService 继承自 GreeterBase 类型,后者是从 .proto 文件的 Greeter 服务生成的。 Startup.cs 中的客户端可以访问该服务:

app.UseEndpoints(endpoints => { endpoints.MapGrpcService(); });

若要详细了解 ASP.NET Core 上的 gRPC 服务,请参阅使用 ASP.NET Core 的 gRPC 服务。

使用 .NET 客户端调用 gRPC 服务

gRPC 客户端是从 .proto 文件生成的具体客户端类型。 具体 gRPC 客户端具有转换为 .proto 文件中 gRPC 服务的方法。

var channel = GrpcChannel.ForAddress("https://localhost:5001"); var client = new Greeter.GreeterClient(channel); var response = await client.SayHelloAsync( new HelloRequest { Name = "World" }); Console.WriteLine(response.Message);

gRPC 客户端是使用通道创建的,该通道表示与 gRPC 服务的长期连接。 可以使用 GrpcChannel.ForAddress 创建通道。

有关创建客户端、调用不同服务方法的详细信息,请参阅使用 .NET 客户端调用 gRPC 服务。

其他资源 使用 C# 的 gRPC 服务 使用 ASP.NET Core 的 gRPC 服务 使用 .NET 客户端调用 gRPC 服务 .NET 中的 gRPC 客户端工厂集成 在 ASP.NET Core 中创建 .NET Core gRPC 客户端和服务器


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有