grpc-dotnet 项目在 PR #695 完成了 ASP.NET Core 服务与 .NET Core gRPC 客户端的 gRPC-Web 实现。虽然目前还是实验性项目,但是并不阻碍我们为之兴奋。下面我们来看看如何使用。

gRPC-Web 简介

gRPC-Web 允许从浏览器应用程序使用 gRPC,gRPC-Web 支持在新场景中使用 gRPC:

  • JavaScript 浏览器应用程序可以使用 gRPC-Web JavaScript 客户端调用 gRPC 服务。

  • Blazor WebAssembly 应用程序可以使用.Net Core gRPC 客户端调用 gRPC 服务。

  • 可以让 gRPC 服务被用于不完全支持 HTTP/2 的环境中。

  • 可以让 gRPC 用于 HTTP/2 中没有的技术,例如 Windows 身份验证。

Grpc.AspNetCore.Web 和 Grpc.Net.Client.Web 提供了扩展来为 .NET Core 支持端到端的 gRPC-Web。

服务端使用 Grpc.AspNetCore.Web

Grpc.AspNetCore.Web 提供了中间件使 ASP.NET Core gRPC 服务接受 gRPC- web 调用。

Startup.cs

public void ConfigureServices(IServiceCollection services)
{services.AddGrpc();services.AddGrpcWeb(o => o.GrpcWebEnabled = true);
}public void Configure(IApplicationBuilder app)
{app.UseRouting();app.UseGrpcWeb();app.UseEndpoints(endpoints =>{endpoints.MapGrpcService<GreeterService>();});
}

gRPC-Web 可以通过设置 GrpcWebOptions.GrpcWebEnabled = true 来被应用于所有 gRPC 服务,或者通过EnableGrpcWeb()方法被应用于单个服务:

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

客户端使用 Grpc.Net.Client.Web

Grpc.Net.Client.Web 提供了一个 HttpClient delegating handler 来配置 .NET Core gRPC 客户端发送 gRPC-Web 请求。

// Create channel
var handler = ew GrpcWebHandler(GrpcWebMode.GrpcWebText, new HttpClientHandler());
var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions{HttpClient = new HttpClient(handler)});// Make call with a client
var client = Greeter.GreeterClient(channel);
var response = await client.SayHelloAsync(new GreeterRequest { Name = ".NET" });

总结

可以看出,得益于 ASP.NET Core 3.0 以来对 gRPC 的深度集成,增加 gRPC 相关的新特性已经非常容易,使.NET Core 成为云原生家族的重要成员。

近期,观测分析平台 SkyWalking 的 .NET 自动探针 (SkyAPM-dotnet) 也已经支持了 grpc-dotnet 远程调用的链路跟踪采集,欢迎大家使用!如果喜欢,也请大家给点个星星!

项目地址:https://github.com/SkyAPM/SkyAPM-dotnet

Asp.Net Core 已支持 gRPC-Web !!相关推荐

  1. 使用ASP.NET Core开始使用gRPC客户端和服务器

    目录 介绍 GRPC Protobuf文件 背景 先决条件 使用代码 第1步--创建gRPC服务应用程序 gRPC项目结构 构建并运行应用程序 第2步:创建客户端控制台.NET核心应用程序 添加必需的 ...

  2. ASP.NET Core 3.0 gRPC 双向流

    目录 ASP.NET Core 3.0 使用gRPC ASP.NET Core 3.0 gRPC 双向流 ASP.NET Core 3.0 gRPC 认证授权 一.前言 在前一文 < 二. 什么 ...

  3. 2022年8月10日:使用 ASP.NET Core 为初学者构建 Web 应用程序--使用 ASP.NET Core 创建 Web UI(没看懂需要再看一遍)

    ASP.NET Core 支持使用名为 Razor 的本地模板化引擎创建网页. 本模块介绍了如何使用 Razor 和 ASP.NET Core 创建网页. 简介 通过在首选终端中运行以下命令,确保已安 ...

  4. ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用

    原文:ASP.NET Core 入门教程 2.使用ASP.NET Core MVC框架构建Web应用 一.前言 1.本文主要内容 使用dotnet cli创建基于解决方案(sln+csproj)的项目 ...

  5. ASP.NET Core+Quartz.Net实现web定时任务

    点击蓝色"Dotnet Plus"关注我哟 加个"星标",每天清晨 07:25,干货推送! 作为一枚后端程序狗,项目实践常遇到定时任务的工作,最容易想到的的思路 ...

  6. gRPC in ASP.NET Core 3.x - gRPC 简介(2)

    前一篇: gRPC in ASP.NET Core 3.x - gRPC 简介(1) 身份认证 这里指的不是用户的身份认证,而是指多个server和client之间,它们如何识别出来谁是谁,并且能安全 ...

  7. 8.ASP.NET Core中的Kestrel Web服务器

    这篇文章,向大家介绍ASP.NET Core中的Kestrel Web服务器.这篇文章主要讨论下面两个重要的事情: 什么是Kestrel 服务器? 怎么使用.NET Core CLI来运行ASP.NE ...

  8. 如何在 ASP.NET Core 中为 gRPC 服务添加全局异常处理 ?

    咨询区 Dmitriy 我在 ASP.NET Core 中使用 GRPC.ASPNETCore 工具包写 gRPC 服务,现在我想实现 gRPC 的异常全局拦截,我的代码如下: app.UseExce ...

  9. gRPC in ASP.NET Core 3.x - gRPC 消息定义

    之前写了几篇关于 Protoco Buffer 的文章. gRPC in ASP.NET Core 3.x - gRPC 简介(1) gRPC in ASP.NET Core 3.x - gRPC 简 ...

最新文章

  1. 【51CTO学院三周年】51cto学院的大数据培训之心路历程
  2. Python Socket 编程——聊天室示例程序
  3. Linux+Jenkins自动构建服务器包
  4. asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法...
  5. brew 安装软件能指定文件夹吗_Mac下Homebrew安装的软件放在什么地方
  6. 2019年京东Java研发岗社招面经(面试经历+真题总结+经验分享)!
  7. 数据结构笔记(十)-- 循环队列
  8. response 设置头的类型 (转)
  9. 实现gabor filter的滤波
  10. 学习JAVA环境搭建之下载安装MyEclipse 6.5
  11. 如何学习工业机器人技术
  12. 2022年华数杯数学建模
  13. 数学分析 积分表及常用积分公式
  14. landesk 卸载_LANDesk软件分发在项目中的深入探索(续2)—客户端已安装应用程序的远程卸载...
  15. 好用的在线工具,提高你的办公工作效率
  16. python如何爬取网站所有目录_python 爬取网站的博客目录
  17. 【MapReduce】数据去重、多表查询、倒排索引、单元测试等案例编程
  18. 重温设计模式二 设计原则之依赖倒置原则
  19. Java笔记总结(二)
  20. 手游方舟怎么输入代码_方舟自定义代码怎么输入 | 手游网游页游攻略大全

热门文章

  1. 基于 Spring Security 的开源统一角色访问控制系统 URACS
  2. Wave 文件(5): 获取 Wave 文件的格式信息
  3. 使用AzureFunction开发最简单的Teams Outgoing Webhook
  4. 立即通过Xumo.TV在线观看免费电视
  5. html标签属性和标签事件,HTML参考手册( 标签、属性和事件)
  6. 《设计模式》3.结构型模式
  7. informix linux安装步骤
  8. Tomcat定义虚拟主机案例
  9. 8-12 canvas专题-阶段练习一(上)
  10. 从零开始编写自己的C#框架(14)——T4模板在逻辑层中的应用(三)