.NET CORE 之 gRPC使用

这篇具有很好参考价值的文章主要介绍了.NET CORE 之 gRPC使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

gRPC简单介绍

gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架(google开源的rpc框架)。gRPC 默认使用 protocol buffers,这是 Google 开源的一套成熟的结构数据序列化机制(也可以使用其他数据格式如 JSON

 

gRPC 的主要优点是:

 

HTTP2传输

现代高性能轻量级 RPC 框架。

协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现。

可用于多种语言的工具,以生成强类型服务器和客户端。

支持客户端、服务器和双向流式处理调用。

使用 Protobuf 二进制序列化减少对网络的使用。

这些优点使 gRPC 适用于:

 

效率至关重要的轻量级微服务。

需要多种语言用于开发的系统。

需要处理流式处理请求或响应的点对点实时服务。

 

支持语言

https://grpc.io/docs/languages/

 

.NET CORE 之 gRPC使用

 

 

 

 

 

Protobuf Proto3对应各语言类型 

Proto3 参考:https://developers.google.com/protocol-buffers/docs/proto3

Proto2 参考:https://developers.google.com/protocol-buffers/docs/proto

 

.NET CORE 之 gRPC使用

 

.NET CORE 之 gRPC使用

 

 

 

除以上类型,还可以自定义类型

可null类型(google扩展包)

需要导入google.protobuf 

 import "google/protobuf/wrappers.proto"

 

 

.NET CORE 之 gRPC使用

 

google.protobuf 包内容

 

.NET CORE 之 gRPC使用

 

 

创建.Net Core gRpc Server项目

运行环境:Window10 ,Visual Studio 2019, Net Core 3.1

 

 

.NET CORE 之 gRPC使用

 

创建成功后,项目自动生成Protos文件与Services

 

 

.NET CORE 之 gRPC使用

 

 

注意几个点

1. 一个proto文件对应一个Service服务

2. 注入

services.AddGrpc();

当新增一个proto文件和Service服务后,添加以下对应注入

app.UseEndpoints(endpoints => {

endpoints.MapGrpcService<GreeterService>();

});

 

3. NuGet包引入

Grpc.AspNetCore

Grpc.Tools

Google.Protobuf

 

.NET CORE 之 gRPC使用

 

 

4. 指定Protobuf服务端

默认情况下,会为 Protobuf项组中每个 .proto 文件都生成服务器和客户端资产。 若要确保服务器项目中仅生成服务器资产,请将 GrpcServices 属性设置为 Server

 

多个proto时,可配置Protos\*.proto

 

.NET CORE 之 gRPC使用

 

 

5. 自动生成代码

根据proto文件自动生成.net 代码,当前项目obj\Debug\netcoreapp3.1目录下

 

Proto文件语法说明

我们习惯把通用的单独定义一个common.proto文件,然后通过import方式导入使用,包名.消息名; 集合类型定义使用repeated,枚举类型定义 enum

 

greeter.proto

 

.NET CORE 之 gRPC使用

 

common.proto

 

 

.NET CORE 之 gRPC使用

 

 

创建.Net Core gRpc Client项目

1. 创建项目

这里创建一个单元测试项目来做client调用

 

.NET CORE 之 gRPC使用

 

 

2. 拷贝Protos

Service项目的Protos整个目录拷贝到项目根目录下

 

3. NuGet包引入

Grpc.AspNetCore

Grpc.Tools

Google.Protobuf

 

4. .csproj配置

确保服务器项目中仅生成客户端资产,请将 GrpcServices 属性设置为 Client

 

<ItemGroup>

    <Protobuf Include="Protos\*.proto" GrpcServices="Client" />

  </ItemGroup>

 

 

5. 添加UnitTest1.cs 单元测试

 

.NET CORE 之 gRPC使用

 

 

gRpc使用Http2传输,设置https调用

AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);

 

GreeterClient proto文件自动生成的客户端资产

 

 

gRPC 调试

传统方式

启动Server  与  Client 两个项目,右键解决方案属性 进行设置

 

.NET CORE 之 gRPC使用

 

 

命令模式

运行-> cmd -> F:

切换到Client项目目录:cd F:\demo\gRPCDemo\TestProjectUnitDemo

执行命令:dotnet test --filter 类名.方法

例如:dotnet test --filter UnitTest1.GetById

 

 

结束 OVER

 

参考学习地址

https://grpc.io/docs/what-is-grpc/introduction/

https://docs.microsoft.com/zh-cn/aspnet/core/grpc/?view=aspnetcore-3.1

https://docs.microsoft.com/zh-cn/aspnet/core/grpc/protobuf?view=aspnetcore-3.1#scalar-value-types

https://github.com/grpc/文章来源地址https://www.toymoban.com/news/detail-711566.html

到了这里,关于.NET CORE 之 gRPC使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NET Core 6.0 webapi 简单使用+连接数据库

    ASP.NET core NET core 6.0 如何使用 在 Program.cs里面 添加对应注释 效果: Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Sqlite.Core Newtonsoft.Json:用于Json格式转换 添加测试Api Tips:这里用到ORM查询语法 EntityFramework EF 常用增删改查语句 运行结果

    2024年02月09日
    浏览(39)
  • .net 温故知新【11】:Asp.Net Core WebAPI 入门使用及介绍

    在Asp.Net Core 上面由于现在前后端分离已经是趋势,所以asp.net core MVC用的没有那么多,主要以WebApi作为学习目标。 我使用的是VS2022, .Net 7版本。 在创建界面有几项配置: 配置Https 启用Docker 使用控制器 启用OpenAPI支持 不使用顶级语句 其中配置Https 是WebApi是否使用https协议,启

    2024年02月07日
    浏览(47)
  • asp.net core 一种基于token 和 Permission 的权限管理中间件示例

    asp.net core webapi 下面,想做一个过滤权限的Filter,配合token,对api做一个较为细粒度的权限控制, 该filter (PermissionFilter) 的作用是用户LoginUser.Permissions 列表中有 Key指定的权限才可以访问,没有则返回403 错误码。   1. 先上封装后的使用效果 说明:要求登录即可,不要求特定权限

    2024年02月05日
    浏览(111)
  • asp.net core 一种基于token 和 Permission 的权限管理Filter 过滤器

    asp.net core webapi 下面,想做一个过滤权限的Filter,配合token,对api做一个较为细粒度的权限控制, 该filter (PermissionFilter) 的作用是用户LoginUser.Permissions 列表中有 Key指定的权限才可以访问,没有则返回403 错误码。   1. 先上封装后的使用效果 说明:要求登录即可,不要求特定权限

    2024年02月08日
    浏览(49)
  • .net core介绍

    .NET Core(现在已经重命名为.NET 5及更高版本为.NET)是一个跨平台的开源开发框架,由Microsoft开发和维护。它旨在支持构建现代、高性能、可扩展的应用程序,可以运行在Windows、macOS和Linux等多个操作系统上。 以下是.NET Core的一些关键特点和介绍: 跨平台: .NET Core是一个跨平

    2024年02月12日
    浏览(38)
  • .net core系列源码地址介绍

     很早就想写.net core相关教程内容了,但是一方面感觉东西太多了,一方面是太懒了,最近才下定决心,一定要写点东西出来         好了,先从.net core开源开始吧,以后会对一些独立模块单独剖析介绍,比如认证授权,配置,日志等等: .net core独立模块源码:https://gi

    2024年02月05日
    浏览(44)
  • .NET Core 开发微服务框架介绍

    什么是微服务? 微服务是一种系统架构模式,它将传统的单体应用程序按照业务功能拆分成多个职责单一、独立部署、松耦合、可伸缩的接口服务。每个微服务都有自己的数据存储、业务逻辑、通信机制和技术栈,可以通过标准化的协议(如 HTTP、gRPC、AMQP 等)进行交互。微

    2024年02月15日
    浏览(34)
  • GRPC的学习(高性能远程过程调用框架)

    在一次和公司的人工智能部门的对接中,涉及到了grpc接口,实现的是实时语音流转文字。把自己对grpc的理解归纳出博客,并且分享出来。我会围绕几个点进行展开,gprc和rpc的差别,以及分析下优缺点,最后通过一个实例。 技术一GRPC和RPC的区别 通信协议:RPC使用的通信协议

    2024年02月13日
    浏览(39)
  • ASP.NET Core 6 (.NET 6) 快速开发简单登陆和登出功能

    ASP.NET Core 6中的简单登录和登出功能,需要使用身份验证和授权中间件实现, 使用Visual Studio 2022或更高版本开发工具,创建一个ASP.NET Core 6 (.NET 6) 项目,项目添加引用 Microsoft.AspNetCore.Authentication.Cookies ,引用方法可以参考: 1)使用Nuget界面管理器 搜索 \\\"Microsoft.AspNetCore.Authe

    2024年02月21日
    浏览(45)
  • ASP.NET Core 授权一(简单的Cookie)

    简单的理解:鉴权衡量你能不能进一道门,授权是你进门了可以干什么

    2024年02月04日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包