写点什么

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

2020 年 7 月 06 日

微软发布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 年 7 月 06 日 14:013133

评论

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

架构师训练营第一周总结

极客大学架构师训练营

推荐几款基于 Markdown 语法在线制作简历的平台

JackTian

GitHub 网站 markdown 简历 工具软件

Hyperledger Fabric基础知识

程序那些事

区块链 以太坊 超级账本 hyperledger fabric

分布式账本简介

程序那些事

区块链 分布式系统 区块链技术 hyperledger fabric

架构师训练营第一周命题作业

兔狲

干货|微服务线上生命周期管理

博文视点Broadview

容器 微服务 微服务架构 微服务冶理 架构师

极客时间 - 架构师训练营 - week1 - 课堂笔记

毛聪

极客大学架构师训练营

读笔 | 听说你也想辞职去摆摊?何不先收下这份秘籍

张鸱鸺

读书笔记 摆地摊 社会话题

Fabric的6大特性

程序那些事

区块链 blockchain 区块链技术 hyperledger fabric

食堂就餐卡系统设计

hellohuan

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

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

hiqian

PostgreSQL权限控制

唯爱

作业一:食堂就餐卡系统设计

LN

S型曲线 - 第二曲线

石云升

创新 增长 S型理论 第二曲线 破坏式创新

IT自由职业者是怎么样的感受和体验

古月木易

IT职场

怎样才能像月「睡后收入」 20 万的独立开发者一样挣钱?

非著名程序员

程序员 独立开发者 程序人生 提升认知

深圳各大知名办公园区引进 GoWork 智能楼宇管理系统,开启商业地产行业的春天

Geek_116789

第一周学习总结:架构方法

晓雷

标题

lai

架构师训练营 - 第一周 - 食堂就餐卡系统设计

韩挺

ZooKeeper核心原理及应用场景

奈学教育

zookeeper

就餐卡系统设计

hiqian

极客大学架构师训练营

第一周练习1 食堂就餐卡系统设计

王鑫龙

极客大学架构师训练营

如何使用UML做需求分析与系统架构

已昏懒人

UML 架构文档

IT自由职业者是怎么样的感受和体验

奈学教育

IT

作业二:根据当周学习情况,完成一篇学习总结

LN

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

韩挺

开启“观察者模式”,跳出灵魂看自己

小天同学

日常思考 个人感悟

【架构师训练营】第1周作业2—学习总结

花生无翼

从软件架构说起

傻傻的帅

架构 架构要素 架构设计原则

架构师训练营第一周总结

Linuxer

极客大学架构师训练营

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