50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

评论

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

软件工程笔记:什么是软件工程

风翱

软件工程 3月日更

2021最新分享字节四面成功拿Offer!

比伯

Java 编程 架构 面试 计算机

火币矿池pro系统开发介绍案例丨火币矿池pro源码功能

系统开发咨询1357O98O718

国内唯一,阿里云挺进 Forrester 全球云数据仓库卓越表现者象限

阿里云大数据AI技术

云计算 大数据 阿里云 数据仓库 Forrester Wave

3.1 Go语言从入门到精通:包

xcbeyond

3月日更 Go 语言

ARTS-Week-1

绝影

ARTS 打卡计划 ARTS活动

简单数据结构总结

我是程序员小贱

3月日更

2020年京东161亿研发费用,钱怎么花的?

吴俊宇

投资 数字化 京东

python 国际化实践

walker12138

Python flask i18n

微软在比特币区块链上推出身份认证平台

CECBC

比特币

MySQL-MVCC与锁机制

insight

3月日更

Photoshop CC 2019 の 安装

空城机

PhotoShop ps p图 adobe

Golang :后端开发中的万能药吗?

华为云开发者联盟

后端 开发 分布式系统 Go 语言

如何阅读 Java 字节码(Byte Code)

Kori Lin

Java JVM bytecode 字节码

常考面试题之css篇

yumibgt

百位优质创作者签约计划|声网签约权益

InfoQ写作社区官方

签约计划 热门活动

用 19 张思维导图描述Spring Cloud的概念和主要组件,建议收藏

北游学Java

Java 面试 Spring Cloud

设计模式简介

happlyfox

学习 设计模式 3月日更

如何减少期望值差异

石云升

绩效 28天写作 职场经验 管理经验 3月日更

《经济学人》2021年3月27日刊精彩文章导读及资源免费下载

wbliu85

百位优质创作者签约计划|InfoQ 签约权益

InfoQ写作社区官方

签约计划 热门活动

【OpenPyXL】对Excel单元格的操作

IT蜗壳-Tango

办公自动化 3月日更 IT蜗壳教学

来云智技术论坛,带你认识 云智一体!

百度大脑

国内首个自主可控区块链技术发布!已在北京冷链追溯中显威

CECBC

区块链

寻找被遗忘的勇气(二十六)

Changing Lin

3月日更

由浅入深了解Nirvana NAC公链的两面性NA公链

区块链第一资讯

区块链 公链 挖矿

PaddleWeekly | 飞桨开源项目每周推

百度大脑

【得物技术】出价组DDD分层模型总结

得物技术

技术 总结 DDD 模型 出价

马特系统开发流程丨马特量化机器人系统开发案例

系统开发咨询1357O98O718

HUBDEX交易所系统开发源码案例

系统开发咨询1357O98O718

Wireshark数据包分析学习笔记Day23

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

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