【译】gRPC-Web for .NET now available
.NET 的 gRPC-Web 现在正式发布了。我们在一月份发布了实验版,从那时起,我们就根据早期的用户反馈进行着改进。
有了这个版本,gRPC-Web 就变成了 grpc-dotnet 项目的一个完全受支持的组件,它已经准备就绪。现在可以通过 gRPC-Web 和 .NET 在浏览器中使用 gRPC。
开始吧
刚接触 gRPC 的开发者,应该学习下微软的《教程:在 ASP.NET Core 中创建 gRPC 客户端和服务器》,该教程介绍如何使用 .NET 创建一个 gRPC client 和 server。
如果你已经有一个 gRPC 应用,那么《在浏览器应用中使用 gRPC》将展示如何将 gRPC-Web 添加到 .NET gRPC server。
gRPC 和 gRPC-Web 是什么
gRPC 是一个现代的高性能 RPC(Remote Procedure Call)框架。gRPC 基于 HTTP/2、Protocol Buffers 和其他基于标准的现代技术。gRPC 是一种开放标准,受到许多编程语言的支持,包括 .NET。
目前在浏览器中实现 gRPC HTTP/2 规范是不可能的,因为没有对请求进行足够细粒度控制的浏览器API。gRPC-Web 是一个标准化的协议,它解决了这个问题,并使 gRPC 在浏览器中可用。 gRPC-Web 为现代浏览器应用程序带来了许多 gRPC 的优秀特性,比如较小的二进制消息和 contract-first 的 API。
gRPC-Web的新机遇
gRPC-Web 旨在使 gRPC 在更多的场景中可用,包括:
-
-
- 从浏览器调用 ASP.NET Core gRPC 应用——浏览器 API 不能调用gRPC HTTP/2。gRPC-Web 提供了一个兼容的替代方案。
-
- JavaScript SPAs
- .NET Blazor Web Assembly 应用
-
- 在 IIS 和 Azure App Service 中的 Host ASP.NET Core gRPC 应用——一些服务器,如 IIS 和 Azure App Service,目前不能托管 gRPC 服务。虽然这方面的工作正在积极进行,但 gRPC-Web 提供了一个有趣的替代方案,可以在当今的每个环境中工作。
- 从非 .NET Core 平台调用 gRPC——HttpClient 在所有 .NET 平台上不支持 HTTP/2。gRPC-Web 可以用来调用 Blazor 和 Xamarin 的 gRPC 服务。
- 从浏览器调用 ASP.NET Core gRPC 应用——浏览器 API 不能调用gRPC HTTP/2。gRPC-Web 提供了一个兼容的替代方案。
-
(gRPC 是 Linux 基金会的注册商标。Blazor 兼容 gRPC-WEB。)
我们已经与 Blazor 团队合作,使 gRPC-Web 在 Blazor WebAssembly 应用程序中使用时具有良好的端到端开发体验。gRPC 工具不仅会自动生成强类型的客户端,让你从 Blazor 应用程序中调用 gRPC 服务,而且 gRPC 比 JSON 提供了显著的性能优势。
性能优势的一个很好的例子就是 Blazor 的默认模板应用程序。使用 gRPC 代替 JSON 时,获取数据页面上传输的数据减少了一半。数据大小从627字节减少到309字节。
这里的性能提高来自于 gRPC 比传统的基于文本的 JSON 高效的二进制序列化。gRPC-Web 是改进基于浏览器的富应用程序的一个令人兴奋的机遇。
尝试下
有关 gRPC-Web 的更多信息,请查看文档,或尝试使用 gRPC-Web 的示例应用程序。
.NET 的 gRPC-Web 已经在 NuGet 上发布了:
-
-
-
Grpc.AspNetCore.Web ——添加 gRPC-Web 支持到一个 ASP.NET Core gRPC 服务。
-
Grpc.Net.Client.Web ——从 .NET 调用 gRPC-Web 终结点
-
-
我们期待看到你用 .NET、gRPC 和现在的 gRPC-Web 所创造的东西!
原文链接
作者:MeteorSeed
我希望您喜欢这篇博文,并一如既往地感谢您阅读并与朋友和同事分享我的博文。
转载请注明出处。