QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

微软发布 gRPC-Web 实现,可直接在浏览器端调用 gRPC 服务

  • 2020-07-06
  • 本文字数:1032 字

    阅读完需:约 3 分钟

微软发布gRPC-Web实现,可直接在浏览器端调用gRPC服务

最近,微软发布了.NET 的 gRPC-Web 协议实现。该组件最初是作为一个实验特性,现在是grpc-dotnet项目的一部分。有了该组件,就可以在浏览器中使用 gRPC,Web 应用程序可以不通过 HTTP 代理服务器直接与 gRPC 服务通信。


gRPC最初由谷歌开发,是一个高性能远程过程调用框架,基于 HTTP/2 实现。但由于浏览器没有直接暴露 HTTP/2,所以 Web 应用程序不能直接使用 gRPC。gRPC- Web 是一个标准化协议,它解决了这个问题,可以在浏览器中使用 gRPC。


今年早些时候,微软宣布将 gRPC-Web 作为一个实验项目。当时,ASP.NET Core 首席软件工程师 James Newton-King 表示该项目并不是一个正式项目:


我们想测试一下我们的 gRPC-Web 实现,并获取反馈,看看与使用代理相比,这种方法对.NET 开发人员来说是否有用。


第一个 gRPC-web 实现是在 2018 年作为一个JavaScript库发布的,Web 应用程序可以通过它直接与 gRPC 服务通信,无需使用 HTTP 服务器作为代理。其原理是创建与 HTTP/1.1 和 HTTP/2 兼容的端到端 gRPC 管道,然后浏览器发送常规的 HTTP 请求,位于浏览器和服务器之间的 gRPC-Web 代理对请求和响应进行转换。与 gRPC 类似,gRPC-Web 在 Web 客户端和后端 gRPC 服务之间使用预定义的契约。Protocol Buffers 被用来序列化和编码消息(尽管也可以使用其他编码器)。



图片来源:gPRC官网


有了这个新组件,.NET Blazor WebAssembly 应用程序和 JavaScript SPA 就可以从在浏览器里直接调用 ASP.NET Core gRPC 应用程序。他们还提供了一个替代在 IIS 和 Azure App Service 服务器上托管 ASP.NET Core gRPC 应用程序的方案,因为它们目前都不能托管 gRPC 服务。


不过,在浏览器端使用 gRPC-Web 调用 gRPC 服务存在一些限制:不支持客户端流和双向流调用,并且跨域调用 gRPC 服务需要在服务器端配置 CORS。另外,gRPC 服务器端必须配置为支持 gRPC-Web,或者必须有第三方服务代理(例如Envoy)在浏览器和服务器之间对调用进行转换。


在新的版本中,微软更新了原始的项目文档,并公开了一个 gRPC-Web示例应用程序。gRPC-Web 在 NuGet 上有两个独立的包:Grpc.AspNetCore.Web(向 ASP.NET Core gRPC 服务添加 gRPC-Web 支持)和gRPC.NET.Client.Web(可在.NET 中调用 gRPC-Web 端点)。该组件需要 3.1 或更高版本的.NET Core SDK,可在 Visual Studio 2019(16.4 或更高版本)、Visual Studio Code 和 Visual Studio for Mac(8.4 或更高版本)中使用。更多有关 gRPC-Web 的信息可以在这里找到。


原文链接


Microsoft Releases gRPC-Web for .NET


2020-07-06 14:0116077

评论

发布
暂无评论
发现更多内容

小师妹学JavaIO之:文件编码和字符集Unicode

程序那些事

Java io nio 文件管理

ARTS-weekly-32

落英坠露

ARTS 打卡计划

数据中台各种架构图

久吾尔岂

数据中台

这个神器让你拥有最佳的打印阅读体验

非著名程序员

chrome 程序员 效率工具 插件

写简历没模板?别怕,这些开源项目帮你搞定!

JackTian

GitHub 开源 面试 求职 简历模板

最全干货:从写简历,到面试、谈薪酬的那些技巧和防坑指南

四猿外

深度思考 程序员 个人成长 面试 求职

食堂就餐卡系统架构设计

Raymond

阿里《Java开发手册》也有bug?

王磊

Java 性能优化 Java性能

架构师训练营--第一周作业

花花大脸猫

极客大学架构师训练营

架构第一周-学习总结

J.Smile

极客大学架构师训练营

学习总结-第1周

饶军

ARTS week 3

锈蠢刀

小师妹学JavaIO之:文件读取那些事

程序那些事

Java io nio 文件管理

iOS 动画 - 窗景篇(二)

柯烂

ios objective-c swift 动画 移动

架构师训练营-第一周学习笔记

Dawn

极客大学架构师训练营

软件架构基础

dapaul

架构 架构师 极客大学架构师训练营

就餐卡系统设计

满山李子

小师妹学JavaIO之:File copy和File filter

程序那些事

Java Linux 多线程 io nio

重学 Java 设计模式:实战组合模式(营销差异化人群发券,决策树引擎搭建场景)

小傅哥

设计模式 重构 代码质量 代码坏味道 组合模式

架构师训练营--第一周学习总结

花花大脸猫

极客大学架构师训练营

ARTS Week2

姜海天

ARTS 打卡计划

Intellij IDEA 常用快捷键

insight

小师妹学JavaIO之:文件系统和WatchService

程序那些事

Java 监控 io nio 文件管理

作业:食堂就餐卡系统UML图

Dawn

极客大学架构师训练营

恕我直言,我怀疑你并不会用 Java 枚举

沉默王二

Java 枚举

架构文档-作业01

ashuai1106

UML

小师妹学JavaIO之:文件写入那些事

程序那些事

Java io nio 文件管理

读笔 | 迷茫期问问自己这三个问题

张鸱鸺

读书笔记 个人成长 心灵圣经

第一周总结

森林

食堂就餐卡系统设计

J.Smile

极客大学架构师训练营

架构师训练营第一周总结

Raymond

微软发布gRPC-Web实现,可直接在浏览器端调用gRPC服务_大前端_Arthur Casals_InfoQ精选文章