使用grpcui测试ASP.NET core的gRPC服务
grpcui类似Swagger UI,可以用来测试gRPC服务,使用起来特别简单。
其原理是通过自动发现gRPC服务协议(当然前提是gRPC服务暴露了Protobuf协议),然后启动一个带界面的Web程序,用户就可以在网页中选择要调用的接口、填写参数,然后通过grpcui发起gRPC请求,最终把执行结果展示出来。
废话先不说了,直接上图,看效果:
下边来看使用方法:
这里以ASP.NET Core gRPC服务为例,对于其它语言开发的gRPC服务也完全没有问题,gRPC协议都是一样的,只不过顺手写了这个。
1、添加gRPC服务反射
首先你得创建一个ASP.NET Core gRPC服务,这个用Visual Studio或者VS Code都可以。
服务要暴露ProtoBuf协议,需要添加反射,反射是通过Grpc.AspNetCore.Server.Reflection这个包来支持的,大家按照自己喜欢的方式自行安装就好了。
代码比较简单,请直接观看:
public void ConfigureServices(IServiceCollection services) { services.AddGrpc(); services.AddGrpcReflection(); // 划重点!!! } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGrpcService<GreeterService>(); if (env.IsDevelopment()) { endpoints.MapGrpcReflectionService(); // 划重点!!! } }); }
重点是代码中的这两句:
services.AddGrpcReflection();
endpoints.MapGrpcReflectionService();
注意:
- 为了安全,应该仅在开发环境启用。否则被别人嗅探了协议,就不太好了。
- 其实gRPCui还支持通过proto文件获取协议的方式,不过使用反射更加轻松一些。
添加完这两句就可以启动服务了。
2、启动grpcui
这个工具只有一个exe文件,在Github上开源,直接下载就好了:
Release v1.2.0 · fullstorydev/grpcui (github.com)
然后在命令行启动:grpcui -plaintext 127.0.0.1:5002
成功启动后,会在浏览器打开上文中的Web页面,就可以愉快的测试了。
注意:
- 这里没有使用https,服务监听的是 http://0.0.0.0:5002,所以这里加了个参数 -plaintext。如果是https,不需要添加这个参数。
- grpcui还有很多参数,你可以通过命令 gRPCui -help 来获取。
这个工具面向所有gRPC服务,如果你使用别的技术栈,也是完全可以的。
到此这篇关于使用grpcui测试ASP.NET core gRPC服务 的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
在 ASP.NET Core 中为 gRPC 服务添加全局异常处理
目录 一.咨询区 Dmitriy 二.回答区 valentasm 三.点评区 以下文章来源于公众号:DotNetCore实战 一.咨询区 Dmitriy 在 ASP.NET Core 中使用GRPC.ASPNETCore 工具包写 gRPC 服务,想实现 gRPC 的异常全局拦截, 代码如下: app.UseExceptionHandler(configure => { configure.Run(async e => { Console.WriteLine(&
-
.Net Core中使用Grpc的方法
一.Grpc概述 gRPC 基于如下思想:定义一个服务, 指定其可以被远程调用的方法及其参数和返回类型.gRPC 默认使用protocol buffers作为接口定义语言,来描述服务接口和有效载荷消息结构.如果有需要的话,可以使用其他替代方案. 定义的服务分为4中类型: 单项 RPC,即客户端发送一个请求给服务端,从服务端获取一个应答,就像一次普通的函数调用.这种最常用. 服务端流式 RPC,即客户端发送一个请求给服务端,可获取一个数据流用来读取一系列消息.客户端从返回的数据流里一直读取直到没有
-
.Net Core微服务rpc框架GRPC通信实际运用
序 上一篇博客把grpc的概念说了个大概,介绍了proto的数据类型,基本语法,也写了个小demo,是不是没那么难? 今天要从理论到实际,写两个微服务,并利用grpc完成两者之间的通信.只是作为demo写的话会十分简单,毕竟理解为主. 服务端 首先要拿出之前写好的proto文件,然后修改两个属性: Build Action => Protobuf compiler gRpc Stub Classes => Server only 如图: 当然也可以在项目文件里看到它: 然后重新生成项目 ,会自
-
.Net Core微服务rpc框架GRPC通信基础
什么是rpc? rpc,全称Remote Procedure Call,通过它,你可以像调用本地方法一样调用远程服务.前端可以调用后端方法,后端也可以调用前端方法.其实这个概念并不陌生,上一篇关于web实时应用的文章也提到了这个概念,并实现了前后端互调的操作. 在正式开始使用grpc之前,我们还需要掌握protocol buffer的概念. 什么是grpc? grpc来自大名鼎鼎的谷歌,孵化于CNCF基金会(docker.k8s同样出自这个基金会).它是一款高性能.开源.通用的rpc框架,你可以
-
图析ASP.NET Core引入gRPC服务模板
早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把.同时记录体验的过程.如果你也想按照本文的步骤体验的话,那你得先安装.NET Core3.0预览版的SDK.至于开发工具我用的时VS2019,当然你也可以使用VS Code进行. gRPC的简单介绍 gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. 有关 gRPC 基础知识的详细信息,请参阅 gRPC 文档页. gRPC 的主要优点是: 现代高性
-
ASP.NET Core 3.0使用gRPC的具体方法
一.简介 gRPC 是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架. gRPC使客户端和服务端应用程序可以透明地进行通信,并简化了连接系统的构建.它使用HTTP/2作为通信协议,使用 Protocol Buffers 作为序列化协议. 它的主要优点: 现代高性能轻量级 RPC 框架. 约定优先的 API 开发,默认使用 Protocol Buffers 作为描述语言,允许与语言无关的实现. 可用于多种语言的工具,以生成强类型的服务器和客户端. 支持客户端,服务器双向流调
-
如何在.NET Core中为gRPC服务设计消息文件(Proto)
如何在.NET Core中为gRPC服务设计消息 使用协议缓冲区规范定义gRPC服务非常容易,但从需求转换为.NET Core,然后管理服务的演变时,需要注意几件事. 创建gRPC服务的核心是.proto文件,该文件以与语言无关的格式描述了该服务.使用.proto文件,Visual Studio可以为您的服务生成基类(您只需编写特定于业务的代码),或者可以生成用于可靠访问服务的客户端类. .proto文件必须符合Google的协议缓冲区规范(通常称为ProtoBuf).原始文件的内容使您可以指定
-
.NET Core(.NET6)中gRPC使用实践
目录 一.简介 二.创建gRPC服务端 1.创建gRPC项目 2.编写自己的服务 三.创建gRPC客户端 1.创建客户端项目 2.grPC服务https的调用 3.gRPC内网http调用 4.IOC注入的方式调用gRPC 四.webapi中加入gRPC 一.简介 简单解析一下gRPC,gRPC 是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架. 特点: 跨语言 内容protobuf格式(比json体积小),网络传输快 使用HTTP/2进行传输 适合高性能轻量的微服务,一
-
ASP.NET Core 3.0 gRPC拦截器的使用
一. 前言 前面两篇文章给大家介绍了使用gRPC的入门以及双向流的使用,今天介绍的是gRPC中的拦截器.拦截器就像MVC的过滤器或者是ASP.NET Core middleware 一样,具有面向切面的思想,可以在调用服务的时候进行一些统一处理, 很适合在这里处理验证.日志等流程.本片文章就以记录日志为例来进行讲解. 二. Interceptor 类介绍 Interceptor类是gRPC服务拦截器的基类,是一个抽象类,它定了几个虚方法,分别如下: public virtual TRespons
-
使用grpcui测试ASP.NET core的gRPC服务
grpcui类似Swagger UI,可以用来测试gRPC服务,使用起来特别简单. 其原理是通过自动发现gRPC服务协议(当然前提是gRPC服务暴露了Protobuf协议),然后启动一个带界面的Web程序,用户就可以在网页中选择要调用的接口.填写参数,然后通过grpcui发起gRPC请求,最终把执行结果展示出来. 废话先不说了,直接上图,看效果: 下边来看使用方法: 这里以ASP.NET Core gRPC服务为例,对于其它语言开发的gRPC服务也完全没有问题,gRPC协议都是一样的,只不过顺手
-
ASP.NET Core中Grpc通信的简单用法
目录: 一.简单介绍DotnetCore3.0如何将.proto文件生成对应的服务端和客户端类 二.介绍如何在服务端使用Grpc,以及Grpc需要的条件(HTTP2.TLS) 三.介绍如何创建GrpcClient,以及Grpc通讯的四种模式 四.举例如何使用Grpc 一.如何使用protobuf生成服务类 Grpc中使用协议缓冲区 (protobuf) 用作接口设计语言 (IDL),它的主要内容包含: GRPC 服务的定义. 客户端和服务器之间发送的消息. Grpc.Tools 这个工具,在每次
-
asp.net Core中同名服务注册的实现代码
目录 1.使用.net Core自带容器 2.AutoFac中的实现 通常情况下,在使用注入时一个服务接口对应一个实现类,注入方式采用构造函数注入即可,但如果存在多个类实现同一个接口的情况下,则需要根据实际情况来选择不同的实现类. 如以下代码中的MyEmailService和EmailService都实现了IEmailService接口: public class MyEmailService : IEmailService { public string Send(string Email)
-
xUnit 编写 ASP.NET Core 单元测试的方法
还记得 .NET Framework 的 ASP.NET WebForm 吗?那个年代如果要在 Web 层做单元测试简直就是灾难啊..NET Core 吸取教训,在设计上考虑到了可测试性,就连 ASP.NET Core 这种 Web 或 API 应用要做单元测试也是很方便的.其中面向接口和依赖注入在这方面起到了非常重要的作用. 本文就来手把手教你如何用 xUnit 对 ASP.NET Core 应用做单元测试..NET Core 常用的测试工具还有 NUnit 和 MSTest,我本人习惯用 x
-
使用VS2022在ASP.NET Core中构建轻量级服务
目录 1. 使用 VS2022 创建 ASP.NET Core 项目 2. 在 ASP.NET Core 中启用一个轻量级的服务 3. 在 ASP.NET Core 中使用 IEndpointConventionBuilder 扩展方法 4. 在 ASP.NET Core 中使用轻量级服务检索记录 5. 在 ASP.NET Core 中使用轻量级服务创建记录 6. 在 ASP.NET Core 中使用轻量级服务删除记录 7. ASP.NET Core 中轻量级服务的配置方法 8. 在 ASP.N
-
ASP.NET Core依赖注入详解
目录 一.什么是依赖注入 二.使用框架提供的服务 三.注册服务 四.生命周期 五.请求服务 六.设计你的依赖服务 ASP.NET Core的底层设计支持和使用依赖注入.ASP.NET Core应用程序可以利用内置的框架服务将它们注入到启动类的方法中,并且应用程序服务能够配置注入.由ASP.NET Core提供的默认服务容器提供了最小功能集,并不是要取代其它容器. 一.什么是依赖注入 依赖注入(Dependency injection,DI)是一种实现对象及其合作者或依赖项之间松散耦合的技术.将类
-
ASP.NET Core项目使用xUnit进行单元测试
目录 一.前言 二.创建示例项目 1.UnitTest.Model 2.UnitTest.Data 3.UnitTest.IRepository 4.UnitTest.Repository 5.UnitTestDemo 6.TestDemo 三.编写单元测试 1.运行单元测试 2.调试单元测试 一.前言 在以前的.NET Framework项目中,我们也写过一些单元测试的项目,而在ASP.NET Core 这种Web或者API应用程序中要做单元测试是很方便的. 这篇文章主要讲解如何使用xUnit
-
ASP.NET Core依赖注入(DI)讲解
ASP.NET Core的底层设计支持和使用依赖注入.ASP.NET Core 应用程序可以利用内置的框架服务将服务注入到启动类的方法中,并且应用程序服务也可以配置注入.由ASP.NET Core 提供的默认服务容器提供了最小功能集,并不是取代其他容器. 1.浅谈依赖注入 依赖注入(Dependency injection,DI)是一种实现对象和依赖者之间松耦合的技术,将类用来执行其操作的这些对象以注入的方式提供给该类,而不是直接实例化依赖项或者使用静态引用.一般情况,类会通过构造函数声明器2依
随机推荐
- AngularJs Injecting Services Into Controllers详解
- 解决ThinkPHP关闭调试模式时报错的问题汇总
- ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
- js判断主流浏览器类型和版本号的简单实现代码
- php生成zip压缩文件的方法详解
- php实现表单多按钮提交action的处理方法
- 布局用CSS+DIV的优点总结
- 关于Jqzoom的使用心得 jquery放大镜效果插件
- jQuery中outerWidth()方法用法实例
- Ajax提交与传统表单提交的区别说明
- java URL 获取PHP JSON 数据
- [推荐]Win2003 Server安全配置完整篇第1/3页
- Python安装官方whl包和tar.gz包的方法(推荐)
- 利用PHP生成静态html页面的原理
- C#怎样才能实现窗体最小化到托盘呢?
- PHP中time(),date(),mktime()区别介绍
- 详解vue mixins和extends的巧妙用法
- wxWidgets实现无标题栏窗口拖动效果
- 解决django后台样式丢失,css资源加载失败的问题
- Maven下 mybatis-generator使用