微软正式推出gRPC-Webfor.NET

  今年一月份的时候,微软曾宣布对gRPC-Webfor.NET的实验性支持,现在它已正式发布。

  gRPC是谷歌开源的高性能、通用RPC框架,支持包括.NET在内的多种编程语言。它面向移动和基于HTTP/2标准设计,但当前,浏览器中无法实现gRPCHTTP/2规范,因为没有浏览器API能够对请求进行足够的细粒度控制。gRPC-Web是解决此问题并使gRPC在浏览器中可用的标准化协议。

  gRPC-Web即gRPCforWebClients。它是一个JavaScript库,使Web应用程序能够直接与后端gRPC服务通信,不需要HTTP服务器充当中介。它旨在使gRPC在更多情况下可用,包括但不限于:

  从浏览器调用ASP.NETCoregRPC应用程序

  JavaScriptSPAs

  .NETBlazorWebAssemblyapps

  在IIS和AzureAppService中托管ASP.NETCoregRPC应用程序

  从非.NETCore平台调用gRPC——在所有.NET平台上,HttpClient均不支持HTTP/2,而gRPC-Web可用于从Blazor和Xamarin调用gRPC服务

  微软表示正在与Blazor团队合作,使gRPC-Web在BlazorWebAssembly应用程序中使用时为端到端开发人员提供更好的体验。

  根据微软的说法,gRPC与JSON相比具有明显的性能优势。以Blazor的默认模板为例,相比JSON,使用gRPC时,在提取数据页面上传输的数据减半,数据大小也从627字节减少到309字节。

  目前,.NET版gRPC-Web现已在NuGet上发布:

  Grpc.AspNetCore.Web——将gRPC-Web支持添加到ASP.NETCoregRPC服务

  Grpc.Net.Client.Web——从.NET调用gRPC-Web端点

  有关gRPC-Web的更多信息,可查看文档,或尝试使用gRPC-Web的示例应用程序。