介绍

你用过 Curl 吗?这个工具允许你通过 http 来发送数据,现在有一个适用于gGRPC的工具,gRPCurl,在本文中,我将介绍如何下载安装这个工具,然后通过这个工具调试我们.NET 5上面的gGRC程序。

安装 gRPCurl

gRPCurl 基于GO语言开发,所以,你要安装GO环境,可以在这里下载, https://golang.org/doc/install,它的安装非常简单,您只需要运行安装程序就可以了!

安装完GO环境以后,还需要设置 Windows环境变量,然后使用管理员身份打开PowerShell,运行下边两个命令:

go get github.com/fullstorydev/grpcurl/...
go install github.com/fullstorydev/grpcurl/cmd/grpcurl

如果安装成功,则可以通过运行以下的命令进行测试:

grpcurl --help

你应该在PowerShell窗口中看到以下内容:

ASP.NET Core gRPC

为了使gRPCurl有效,它需要了解gRPC消息和端点定义,有两种方法:反射。我将向您展示如何使用反射,因为这是.NET中最简单的方法,为了能够使用Reflection,使用以下命令安装:

Install-Package Grpc.AspNetCore.Server.Reflection -Version 2.34.0

然后,使用 services.AddGrpcReflection()和 endpoints.MapGrpcReflectionService()方法为ASP.NET Core gRPC应用程序配置, 第一个启用gRPC的反射,第二个是通过反射向gRPCurl提供示例端点和消息信息的端点:

using CountryService.Web.Services;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;namespace CountryService.Web
{public class Startup{public void ConfigureServices(IServiceCollection services){services.AddGrpc();services.AddGrpcReflection();services.AddSingleton<CountryManagementService>();}public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.UseRouting();app.UseEndpoints(endpoints =>{endpoints.MapGrpcService<CountryGrpcService>();endpoints.MapGrpcReflectionService();});}}
}

使用 gRPCurl

通过运行以下命令列出所有可用的gRPC服务:

grpccurl localhost:5001 list

通过运行以下命令,列出指定gRPC服务的所有可用gRPC端点:

grpccurl localhost:5001 list YourgRPCServiceFullName

通过运行以下命令来调用一个获取列表的端点:

grpcurl localhost:5001 gRPCDemo.v1.CountryService/GetAll

通过运行一下命令,来获取一个元素,它需要传入JSON参数:

grpcurl localhost:5001 -d 'JSON字符串' gRPCDemo.v1.CountryService/Get

总结

这是gRPCurl的简单教程, gRPCurl具有很多功能,如果您想了解更多信息, 我建议你可以在这里找到更多的api,https://github.com/fullstorydev/grpcurl

原文作者: Anthony Giretti 原文链接:https://anthonygiretti.com/2021/01/13/grpc-asp-net-core-5-test-grpc-endpoints-with-grpcurl/

最后

欢迎扫码关注我们的公众号 【全球技术精选】,专注国外优秀博客的翻译和开源项目分享,也可以添加QQ群 897216102

使用 gRPCurl 调试.NET 5的gPRC服务相关推荐

  1. 跨网段远程调试vs_如何提高后台服务应用问题的排查效率?日志 VS 远程调试

    转眼间,距离Jerry最近一篇文章推送已经过去了一个多月的时间了. 公众号更新的频率降低,不是因为Jerry偷懒,而是由于从春节过后,我所在的SAP成都研究院数字创新空间整个团队,一直在忙一个5月份需 ...

  2. 如何调试分布式系统:与微服务调试工具“Squash”创始人Idit Levine的对话

    \ 本文要点 \\ 在开发与生产中,对应用的监控和调试能力非常重要.相对于调试单体应用,调试基于微服务的应用更具挑战性,因为难以将一个原生调试器附着于通过整个网络通信的多个进程上.\\t 当前,调试微 ...

  3. 在VSCode环境下用dlv工具的attach模式远程调试在运行中的服务

    一.前提条件 1.以下操作和注意事项都是基于ubuntu 20.04版本进行描述. 2.以下操作和注意事项都是基于操作系统的非root用户进行描述. 3.需要提前下载dlv工具,远程服务器上的dlv工 ...

  4. SpringBoot 服务端接口公网远程调试,并实现 HTTP 服务监听

    前后端分离项目中,在调用接口调试时候,可以通过cpolar内网穿透将本地服务端接口模拟公共网络环境远程调用调试,本次教程以Java服务端接口为例. 1. 本地环境搭建 1.1 环境参数 JDK1.8 ...

  5. android应用测试与调试实战_实战 | Java 服务端和 Android 端手工测试覆盖率统计的实现...

    本文为霍格沃兹测试学院优秀学员关于后端和 App 端手工测试覆盖率的学习笔记.测试开发进阶学习,文末加群. 一.前言 代码测试覆盖率工具流行了这么多年,已经有很多成熟方案比如 Jacoco,我司近一段 ...

  6. Windows服务的快速搭建与调试(C#图解)

    目录 一.什么是Windows 服务? 二.创建Windows 服务与安装/卸载批处理. 三.调试Windows 服务. 正文 一.什么是Windows 服务? 答:Microsoft Windows ...

  7. 如何使用VS+C#创建,优雅自动化的安装(不使用命令行),调试,更新Windows服务

    轻量级,即是服务部署器,又是服务本体,免命令行,免bat.直接部署和调试代码的东西,也就长这样了. 看这一篇文章应该可以把你构建和调试windows服务这些事儿玩儿转. 一.创建服务 1.可以打开VS ...

  8. 解决springcloud 中各服务之间调用外部依赖的clint api时,在调试时不方便的问题

    解决springcloud 中,各个服务中调用外部依赖的api,在调试时不方便的问题 屏蔽外部依赖 那如何解决问题呢?既可以在本地调试也不用启动其他服务. 大致的流程分 具体实践 调用接口 替换原有的 ...

  9. java毕业设计社区志愿者服务管理系统源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计社区志愿者服务管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计社区志愿者服务管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 ...

最新文章

  1. 人均 11878 元,2020 年研发岗年终奖最高!技术、产品岗均榜上有名
  2. win10 vs2015 编译caffe2
  3. 快速定位java系统的线上问题--转
  4. django_rest_framework之GenericAPIView(三)
  5. 攻防世界misc新手_[攻防世界]mobile新手练习区easy-apk
  6. QDir, QFileInfo 和 QDirIterator 区别
  7. 【顶】Asp无组件生成缩略图(1)
  8. linux篇:CenterOS6和Center的区别
  9. ThinkPHP Bootstrap简约自适应网址导航网站源码
  10. 在WEB中实现打印分页
  11. .net mysql 多线程_.net线程详解(转)
  12. 《推荐系统笔记(四)》svd的python计算实例
  13. Bailian2693 最远距离【序列处理】
  14. YetAnotherKeyDisplayer(YAKD屏幕上显示键盘操作)源码下载及编译(Win10,VS2022)
  15. Android 动态更换app图标
  16. 5个不为人知的音乐网站,全网音乐免费听!说什么也不能错过
  17. ftp服务器 文件权限,ftp服务器 文件权限设置
  18. 实现Promise的resolve/reject/then/all/race/finally/catch方法
  19. 如何统计一列中姓名重复出现的次数,并且只标注在第一次出现姓名的位子
  20. epub格式电子书制作工具——ep…

热门文章

  1. Codeforces 1066 C(思维)
  2. Python 循环删除指定文件夹下所有的.longtian类型文件
  3. JAVA多线程之先行发生原则
  4. js控制图像等比例缩放
  5. c#调用存储过程查询表并返回影响的行数
  6. PHP require和include的区别
  7. 反射封装工具类-----零SQL插入
  8. How to change the text color in the terminal
  9. 在netbeans下使用调试PHP的插件XdeBug
  10. 《划时代-51单片机C语言全新教程》-第四章 工程创建与深入 概览