写点什么

微软发布 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:0116284

评论

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

云技术分享 | EC2 之 Windows 忘记密码(二)

亚马逊云科技 (Amazon Web Services)

大数据 Amazon EC2 ebs

一款DC-DC控制器应用方案

芯动大师

边缘计算技术:深度学习与人工智能的融合

熬夜磕代码、

5 分钟内搭建一个免费问答机器人:Milvus + LangChain

Zilliz

Milvus 向量数据库 langchain rag

鸿蒙、ChatGPT 入选全球十大工程成就丨 RTE 开发者日报 Vol.111

声网

KubeWharf:构建下一代分布式操作系统的云原生力量

不会算法。

Inscribe:应用非定向资产交易协议 布局巨大铭文赛道

鳄鱼视界

开源赋能汽车智能化演进分论坛圆满举办

开放原子开源基金会

开源

开源治理与开发者运营分论坛圆满举办

开放原子开源基金会

开源

直播预告 | 大模型时代,“应用变了”:政务办公,如何从大模型中巧借力?

京东科技开发者

直播 办公 政务 大模型

软件测试/测试开发丨持续交付与 DevOps 体系

测试人

软件测试 测试开发

《用“开源”的方式讲开源的法律,有问必答,一问到底》——开源合规分论坛为你答疑解惑

开放原子开源基金会

开源

创新铸就卓越 HashData再度荣获 IT168技术卓越奖

酷克数据HashData

适用各种行情,使用网格交易策略实现自动高效套利

股市老人

Inscribe:应用非定向资产交易协议 布局巨大铭文赛道

股市老人

深度盘点:除了BRC20外 这些公链潜力铭文也值得关注

BlockChain先知

大模型 “下沉时刻”,容联云完成“三级跳”

脑极体

AI

海外云手机-如何高效运营多个海外社媒账户?

Ogcloud

社交媒体 社媒

PON网络是什么?

小齐写代码

云手机解决Tik Tok运营难题

Ogcloud

短视频 跨境电子商务 短视频直播 TikTok 电子商务

Typora+PicGo 搭建免费图床

吳先森321

经验分享

事务的实现方法:事务注解和编程式事务

xfgg

Java

技术创新,照见未来 | 2023开放原子开发者大会OpenHarmony分论坛圆满举行

开放原子开源基金会

开源

感谢同行者|携手相伴前行路,共筑开源创未来

开放原子开源基金会

开源

大咖云集,2023开放原子开发者大会助力开发者实现梦想

开放原子开源基金会

开源

边缘计算的深入学习之路

Geek-yan

深度盘点:除了BRC20外 这些公链潜力铭文也值得关注

石头财经

书写开源之魂|2023年活力开源贡献者、开源项目揭晓

开放原子开源基金会

开源

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