gRPC真要取代WebApi了,你还学得过来吗?
今年1月份微軟曾宣布要實驗性的對.NET支持 gRPC-Web,然后在6月份已經正式發布了。這些天嘗試了下,真的很強大,不負責任的預言下,RESTful的時代即將過去,而gRPC要成為革命者!先別急眼,下面我來詳細說說。
gRPC是什么
可以用官網的一句話來概括:
A high-performance, open-source universal RPC framework
??????所謂RPC(remote procedure call 遠程過程調用)框架實際是提供了一套機制,使得應用程序之間可以進行通信,而且也遵從server/client模型。使用的時候客戶端調用server端提供的接口就像是調用本地的函數一樣。如下圖所示就是一個典型的RPC結構圖。
劃重點:開源、高性能、通用。
gRPC是由google開源的,當下社區一片火爆,各種資源層出不窮,未來可期;高性能是其核心殺手锏,其強大的壓縮傳輸通常能省下50%的帶寬,是當下移動互聯網最追逐的特性,而通用帶來了無門檻,這個是之前RESTful依賴的Json最大的法寶。
介紹完gRPC的特性,下面要分析下為什么gRPC能革命當下最火的RESTful!如果還不熟悉gRPC怎么用的小伙伴兒,可以掃碼領取下.NET Core下gRPC實戰視頻集。
技術革新 勢不可擋
經歷過從WebService和WCF,升級到WebApi過程的開發者心里都清楚,RESTful風格是重要原因,但是能流行起來的根本,還是Json的通用性和輕便性。而這些看家本領在gRPC面前不堪一擊。
1
gRPC可以通過protobuf來定義接口,不僅跨語言通用,而且還能嚴格的接口約束。
2
通過protobuf可以將數據序列化為二進制編碼,大幅減少數據傳輸,從而大幅提高性能。
3
gRPC可以方便地支持流式通信,依賴于Http2.0,為其所不能為。
除了以上優勢,gRPC還有個致命的缺陷,限制了其應用場景,就是瀏覽器不能直接調用gRPC。然而這個問題現在被gRPC-Web解決了(備注:還有一些限制,如雙向流不能支持等)!
gRPC-Web for .NET
gRPC-Web 即 gRPC for Web Clients。它是一個 JavaScript 庫,使 Web 應用程序能夠直接與后端 gRPC 服務通信,不需要 HTTP 服務器充當中介。它旨在使 gRPC 在更多情況下可用,包括但不限于一下幾種:
1.???從瀏覽器調用 ASP.NET Core gRPC 應用程序
2.???JavaScript SPAs
3.???.NET Blazor Web Assembly apps
4.???在 IIS 和 Azure App Service 中托管 ASP.NET Core gRPC 應用程序
5.???從非 .NET Core 平臺調用 gRPC —— 在所有 .NET 平臺上,HttpClient 均不支持 HTTP/2,而 gRPC-Web 可用于從 Blazor 和 Xamarin 調用 gRPC 服務
根據微軟的說法,gRPC 與 JSON 相比具有明顯的性能優勢。以 Blazor 的默認模板為例,相比 JSON,使用 gRPC 時,在提取數據頁面上傳輸的數據減半,數據大小也從 627 字節減少到 309 字節。
目前,.NET 版 gRPC-Web 現已在 NuGet 上發布:
Grpc.AspNetCore.Web?——? 將 gRPC-Web 支持添加到 ASP.NET Core gRPC 服務
Grpc.Net.Client.Web?——? 從 .NET 調用 gRPC-Web 端點
繼續學習吧
新的時代即將來臨,熟悉gRPC是必須的了。然而,gRPC的學習資料,尤其是當下最新版本的,包括gRPC-Web的幾乎沒有。這里,給大家推薦下由資深架構師Clay老師直播講解的gRPC集訓課,將從gRPC的實戰、原理、調優為大家逐一講解,一站式搞定gRPC占據先機!課程為期3天,7月6日~8日晚上八點至九點半直播教學,這會兒掃碼進學習群一律免費學習,群里還有微軟MVP和多位架構師大佬為大家答疑解惑,限200名額!
Day1:gRPC實戰
1.1 . gRPC服務端+Asp.Net Core調用
1.2 ?4種流式API應用
1.3 ?基于gRPC建立分布式架構
Day2:gRPC原理深入
2.1 Http2協議剖析,特性解讀?
2.2 流式處理實現原理
2.3 gRPC-Web實戰和解析
Day3:gRCP調優
3.1 gRPC集群和負載均衡
3.2鑒權授權和gRPCs
3.3 微服務架構下gRPC
最后再給大家送一波福利,一組《互聯網開發核心技能》視頻代碼資料分享,請掃碼領取!
掃描下方二維碼,這些資料全部帶走
獲取本文全套學習資料
掃碼添加
領取人數較多,添加以下號碼也可免費領取哦!
微信號:18672997769
微軟MVP組建的.Net社區
你加入了嗎?
微軟MVP:Eleven組建
國內首屈一指的.Net活躍社區
完整配套的學習資料
最新最熱的技術文章
社區內優質崗位直推
全部免費奉送給大家
優質內容持續更新中
戳以下文章立即獲取
????????????
禁止外傳!社區內部VIP干貨資料自取
(課程視頻+面試題+技術專刊+崗位內推)
總結
以上是生活随笔為你收集整理的gRPC真要取代WebApi了,你还学得过来吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 开源项目 StreamJson
- 下一篇: 优化 Azure 成本,实现财务目标