写点什么

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

评论

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

「智造」第10期:浅谈工业互联网加速企业服务化转型

用友BIP

智能制造

谷歌推广怎么做?

九凌网络

低代码开发可以解决哪些问题?

代码生成器研究

次世代建模纹理贴图怎么做?

3D建模设计

3D渲染 材质贴图 模型纹理

JavaScript中的异步处理方法,

互联网工科生

JavaScript 异步处理

如何使用1688店铺所有商品API接口

Noah

通过1688店铺所有商品API接口一键获取店铺所有商品信息

Noah

Java 实现 MySQL 数据锁定策略

秃头小帅oi

基于Java开发的支持全文检索,知识图谱,工作流审批的知识库管理系统

金陵老街

Vue 工作流 neo4j 知识图谱 spring-boot

亚马逊云科技宣布推出Amazon Q重塑未来工作方式

财见

为什么说前端代码的复用率低?

代码生成器研究

开源大模型驱动的编程能力测试

百度开发者中心

#人工智能 LLM

3d模型的中心原点有偏移怎么办?

3D建模设计

3d建模 模型原点设置

香港VPS配置与应用:专家级建议与实践指南

一只扑棱蛾子

香港VPS

2023-11-29:用go语言,给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。 需保证 返回结果的字典序最小。 要求不能打乱其他字符的相对位置)。 输入:s = “cba

福大大架构师每日一题

福大大架构师每日一题

即时通讯技术文集(第25期):实时音视频基础入门 [共20篇]

JackJiang

网络编程 即时通讯 IM

uniapp上架app store详细攻略

LLM模型参数助力多模态大模型高效训练

百度开发者中心

大模型 #人工智能 LLM

基于神经网络的大模型在自然语言处理中的应用前景展望

百度开发者中心

nlp 大模型 #人工智能

软件工程师必备的10个Git命令(先码住)

伤感汤姆布利柏

git GitHub

创意性LED电子大屏幕推动LED显示屏行业融合

Dylan

功能 显示器 LED显示屏 全彩LED显示屏 led显示屏厂家

亚马逊云科技联合Clarity AI共同推动大规模可持续性投资

财见

3D场景建模工具

3D建模设计

在线工具 3D场景建模 数字孪生场景

Footprint 的批量下载方案使交易回测更轻松

Footprint Analytics

区块链 回测

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