.NET 上的 gRPC 概述(grpc基于netty)
ccwgpt 2024-10-13 01:32 60 浏览 0 评论
gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架。
gRPC 的主要优点是:
- 现代高性能轻量级 RPC 框架。
- 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现。
- 可用于多种语言的工具,以生成强类型服务器和客户端。
- 支持客户端、服务器和双向流式处理调用。
- 使用 Protobuf 二进制序列化减少对网络的使用。
这些优点使 gRPC 适用于:
- 效率至关重要的轻量级微服务。
- 需要多种语言用于开发的 Polyglot 系统。
- 需要处理流式处理请求或响应的点对点实时服务。
警告
若要将 ASP.NET Core gRPC 用于 Azure 应用服务或 IIS,则该 gRPC 具有额外的要求。 有关可以在何处使用 gRPC 的详细信息,请参阅 .NET 支持的平台上的 gRPC。
对.proto文件的 C# 工具支持
gRPC 使用协定优先方法进行 API 开发。 在 .proto 文件中定义服务和消息:
ProtoBuf复制
syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
通过在项目中包含 .proto 文件,可自动生成用于服务、客户端和消息的 .NET 类型:
- 将包引用添加到 Grpc.Tools 包。
- 将 .proto 文件添加到 <Protobuf> 项目组。
XML复制
<ItemGroup>
<Protobuf Include="Protos\greet.proto" />
</ItemGroup>
有关 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 服务项目模板提供了一个入门版服务:
C#复制
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)
{
_logger.LogInformation("Saying hello to {Name}", request.Name);
return Task.FromResult(new HelloReply
{
Message = "Hello " + request.Name
});
}
}
GreeterService 继承自 GreeterBase 类型,后者是从 .proto 文件的 Greeter 服务生成的。 Startup.csProgram.cs 中的客户端可以访问该服务:
C#复制
app.MapGrpcService<GreeterService>();
若要详细了解 ASP.NET Core 上的 gRPC 服务,请参阅使用 ASP.NET Core 的 gRPC 服务。
使用 .NET 客户端调用 gRPC 服务
gRPC 客户端是从 .proto 文件生成的具体客户端类型。 具体 gRPC 客户端具有转换为 .proto 文件中 gRPC 服务的方法。
C#复制
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 服务。
相关推荐
- SLF4j + Log4j 、Log4j2、 Logback日志框架使用总结
-
从写代码开始,就陆陆续续接触到了许多日志框架,常用的Log4j、Log4j2、Logback等。每次自己写项目时,就copy别人的代码或网上的demo。配置log4j.properties或者lo...
- 轻量级日志追踪方案——TLog
-
TLog概述TLog提供了一种最简单的方式来解决日志追踪问题,它不收集日志,也不需要另外的存储空间,它只是自动的对你的日志进行打标签,自动生成TraceId贯穿你微服务的一整条链路。并且提供上下游节点...
- Java中优雅实现日志记录:Spring AOP秘籍
-
Java中优雅实现日志记录:SpringAOP秘籍在软件开发中,日志记录是一项非常重要的任务。它不仅帮助我们追踪程序执行的过程,还能在出现问题时快速定位错误原因。在Java世界里,Spring框架为...
- Redis与Java整合的最佳实践
-
Redis与Java整合的最佳实践在这个数字化时代,数据处理速度决定了企业的竞争力。Redis作为一款高性能的内存数据库,以其卓越的速度和丰富的数据结构,成为Java开发者的重要伙伴。本文将带你深入了...
- SpringBoot2.x系列教程54--SpringBoot整合日志记录项目重要信息
-
前言我们在进行项目开发时,无论是前端还是后端,都必须进行日志的记录。通过日志,来记录项目开发、运行时产生的各种异常信息和重要数据。这样我们才能对项目的异常进行定位,对项目的后期运营提供数据支撑。但我们...
- Spring Boot中的Logback日志配置详解
-
在SpringBoot开发中,日志作为检查问题、追踪系统、分析系统性能的手段之一,为开发者提供了各种快速解决问题的方案。而在SpringBoot中默认采用的日志框架是LogBack,作为一个功能强...
- MyBatis系列-2-日志配置
-
日积月累,方成大器。各大网站:Mybatis官方技术文档https://mybatis.org/mybatis-3/zh/index.htmlMybatis源码包下载:https://github...
- Springboot强大的日志功能你真的了解吗?这些功能你肯定不知道
-
环境:Springboot2.4.10日志配置详解SpringBoot使用CommonsLogging记录所有内部日志,但保留底层日志实现的打开状态。为JUL日志记录、Log4J2和Logback...
- SpringBoot中14个日志使用技巧
-
前言:日志是软件开发中不可或缺的一部分,它能帮助我们了解应用运行状态、调试问题和监控性能。1.使用SLF4J门面模式统一日志APISLF4J(SimpleLoggingFacadeforJ...
- 探索Java项目中日志系统最佳实践:从入门到精通
-
探索Java项目中日志系统最佳实践:从入门到精通在现代软件开发中,日志系统如同一位默默无闻却至关重要的管家,它记录了程序运行中的各种事件,为我们排查问题、监控性能和优化系统提供了宝贵的依据。在Java...
- # 怎么让 java -jar example.jar 产生的日志输出到指定文件
-
#怎么让java-jarexample.jar产生的日志输出到指定文件要实现java-jarexample.jar命令产生的日志输出到指定文件,可以使用以下几种方法:##一、方法1...
- 探秘Logback:优雅管理Java日志的魔法工具
-
探秘Logback:优雅管理Java日志的魔法工具在Java的世界里,日志记录是每个开发者都绕不开的重要话题。想象一下,如果没有日志,我们的程序就像一辆没有仪表盘的汽车,既看不到速度,也摸不清方向。而...
- SLF4J与Logback:Java日志世界的双子星
-
SLF4J与Logback:Java日志世界的双子星在Java的世界里,日志记录就像空气一样无处不在。无论是调试程序还是排查生产环境的问题,日志都是我们不可或缺的好帮手。而提到日志框架,SLF4J和L...
- SLF4J与Logback:让Java日志记录变得简单优雅
-
SLF4J与Logback:让Java日志记录变得简单优雅在Java开发的世界里,日志记录是一项不可或缺的技术。它不仅帮助我们追踪程序运行的状态,还能在排查问题时提供重要的线索。今天,我们就来聊聊两个...
- 阿里强制使用SLF4J日志框架的缘由
-
背景想必小伙伴们都用过日志,虽然日志看起来可有可无,但是等到出问题的时候,就比较棘手。所以说日志框架使用好不好,规范不规范,直接影响了解决生产环境故障的效率,日志框架选的不好、用的不好,有可能影响环境...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- bootstrap框架 (43)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)