.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 服务。

(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 所创造的东西!

原文链接

       https://devblogs.microsoft.com/aspnet/grpc-web-for-net-now-available/?utm_source=vs_developer_news&utm_medium=referral

【译】gRPC-Web for .NET now available的更多相关文章

  1. Blazor WebAssembly + Grpc Web = 未来?

    Blazor WebAssembly是什么 首先来说说WebAssembly是什么,WebAssembly是一个可以使C#,Java,Golang等静态强类型编程语言,运行在浏览器中的标准,浏览器厂商 ...

  2. [译] 在Web API 2 中实现带JSON的Patch请求

    原文链接:The Patch Verb in Web API 2 with JSON 我想在.NET4.6 Web API 2 项目中使用Patch更新一个大对象中的某个字断,这才意识到我以前都没有用 ...

  3. Entity Framework 6 Recipes 2nd Edition(9-1)译->用Web Api更新单独分离的实体

    第九章 在N层结构的应用程序中使用EF 不是所有的应用都能完全地写入到一个单个的过程中(就是驻留在一个单一的物理层中),实际上,在当今不断发展的网络世界,大量的应用程序的结构包含经典的表现层,应用程, ...

  4. [译] 在Web Forms 中使用ASP.NET Routing

    本文将以最少的代码想你展示一下的效果: 自定义RUL而不依赖于物理文件名. 使用标记或者代码产生基于route 参数的URL . 如何获得标记或者代码路由过来的参数. 创建Routes void Ap ...

  5. (译)Web是如何工作的(3):HTTP&REST

    原文地址:https://medium.freecodecamp.org/how-the-web-works-part-iii-http-rest-e61bc50fa0a   我们在第一篇文章中介绍了 ...

  6. (译)Web是如何工作的(2):客户端-服务器模型,以及Web应用程序的结构

    原文地址:https://medium.freecodecamp.org/how-the-web-works-part-ii-client-server-model-the-structure-of- ...

  7. (译)Web是如何工作的:给Web开发新手的初级读物

    原文地址:https://medium.freecodecamp.org/how-the-web-works-a-primer-for-newcomers-to-web-development-or- ...

  8. 进行API开发选gRPC还是HTTP APIs?

    上一篇文章我带着大家体验了一把<ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)>,如果有兴趣的可以点击链接进行查看,相信跟着做的你,也是可以跑起来的.这篇文章我们将一 ...

  9. Visual Studio 2013 Web开发新特性

    微软正式发布Visual Studio 2013 RTM版,微软还发布了Visual Studio 2013的最终版本..NET 4.5.1以及Team Foundation Server 2013. ...

  10. WEB安全:SQL注入

    SQL注入是站点和web应用程序中最常见的安全漏洞. 这样的恶意技术有非常多应用场景, 但(SQL注入)一般是指在数据输入的地方注入代码以利用数据库应用程序中的安全漏洞. SQL注入在接收用户输入的接 ...

随机推荐

  1. DEX文件解析--3、dex文件字符串解析

    一.前言    前两篇文章链接:     1.DEX文件头解析     2.DEX文件校验和解析    PS:前几天检查文件夹的时候发现DEX文件解析还只写了开头,正好找点事情来做,就去接着解析DEX ...

  2. DEBUG ArrayList

    1,ArrayList面试必问 说说ArrayList和LinkedList的区别? ArrayList基于数组实现,LinkedList基于链表实现,不同的数据结构决定了ArrayList查询效率比 ...

  3. 干货分享丨玩转物联网IoTDA服务系列四-智能网关

    摘要:该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,用户可以在控制台产品详情中自定义Topic,通过应用侧接口或控制台创建数据转发规则,把设备上报的消息转发给其他华为云服务,供应用侧 ...

  4. jsp课堂笔记1

    http协议:规范浏览器和服务器交互或通信的规则 https:基于http实现,比http更加安全,提供了身份验证和通信内容加密  服务器:1.配置比较高的电脑  2.他就是一个应用 http1.0: ...

  5. umount 报错

    在umount时报错: [root@node1 ~]# umount /usbumount: /usb: target is busy. (In some cases useful info abou ...

  6. redis,rabbitmq,SqlAlchemy

    redis发布和订阅

  7. IDEA 修改快捷键和Myeclipse 快捷键一致

    介绍 我们知道IDEA这款开发工具功能很强大,为了简化开发步骤,提高开发效率,使用快捷键很显然是必不可少的,那么怎么才能使得IDEA快捷键和MyEclipse快捷键 保持相同呢? 第一种方法,一个快捷 ...

  8. CentOS6下yum搭建LNMP环境

    1.关闭防火墙[root@CentOS ~]# chkconfig iptables off 2.关闭selinuxvi /etc/sysconfig/selinux //将SELINUX=enfor ...

  9. 将HTML5封装成android应用APK

    借鉴了网上很多的教程终于是把整个过程走通了,最主要的还是墙的问题.... 先是要搭建环境(每一步都要检查,确保安装正确): 1.安装 nodejs 淘宝镜像: npm install -g cnpm ...

  10. plantuml 基本语法(转摘)

    <div id="topics"> <div class="post"> <h1 class="postTitle&qu ...