写点什么

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

评论

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

教育创新聚焦技术前沿-全国高校软件测试峰会开幕

测试人

人工智能 软件测试 自动化测试 测试开发 高校

了解海外云手机的多种功能

Ogcloud

云手机 海外云手机

手把手教你通过bitget钱包交互solana空投项目Jupiter

加密眼界

面向智算服务,构建可观测体系最佳实践

阿里巴巴云原生

阿里云 云原生 可观测

萨尔瓦多「比特币总统」连任,Web3 的又一「胜地」?

TechubNews

听GPT 讲Rust Tokio源代码(7)

fliter

手把手教你通过bitget钱包交互solana空投项目Jupiter

石头财经

手把手教你通过bitget钱包交互solana空投项目Jupiter

BlockChain先知

Linux平台下构建TigerVNC项目教程

百度搜索:蓝易云

云计算 Linux 运维 云服务器 TigerVNC

手把手教你通过bitget钱包交互solana空投项目Jupiter

大瞿科技

MySQL的行锁、表锁触发教程

百度搜索:蓝易云

MySQL 云计算 运维 云服务器 云计算,

深入理解 Java 循环结构:while、do while、for 和 for-each 循环

小万哥

Java 程序人生 编程语言 软件工程 后端开发

解析Sermant热插拔能力:服务运行时动态挂载JavaAgent和插件

华为云开发者联盟

开发 华为云 javaagent 华为云开发者联盟 sermant

阿里云参编业内首个代码大模型标准丨云原生 2024 年 1 月产品技术动态

阿里巴巴云原生

阿里云 云原生

听GPT 讲Rust Tokio源代码(6)

fliter

热搜第一!登上人民日报、新华社,“鸿蒙”为何是游戏圈年度热词?

最新动态

OpenMLDB 作为中国唯一的特征平台产品入选 2023 Gartner 研究报告

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

听GPT 讲Rust Tokio源代码(4)

fliter

请查收,你的2023京东零售技术年度好文

京东零售技术

前端 后端 京东零售

手把手教你通过bitget钱包交互solana空投项目Jupiter

加密眼界

战略规划的重要性及撰写步骤

爱吃小舅的鱼

战略规划 PingCode

华为视频AiMax影视品鉴会:独家揭秘《鲁豫有约一日行》的坚守与创新

最新动态

docker启动报错:Cannot connect to the Docker daemon

百度搜索:蓝易云

Docker 云计算 容器 运维 云服务器

【Netty技术专题】「原理分析系列」Netty强大特性之Native transports扩展开发实战

洛神灬殇

Java Netty nio epoll 2024年第三十五篇文章

Gossip,流言蜚语传播协议

乐只

分布式 后端 分布式协议

海外云手机——平台引流的重要媒介

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机

ICP完全攻略科普,一文教你用bitget钱包深度交互

股市老人

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