gRPC on .NET 紀錄

gRPC 試用紀錄。包含: Unary, Server Streaming, Client Streaming, Duplex Streaming, Authentication with JWT, Logging with Interceptor.

參考文章

gRPC Tutorial 完整教學 - 共5篇

gRPC - Scalar Value Types

適用 ASP.NET Core 之 gRPC 中的驗證和授權

.NET 上的 gRPC 攔截器

gRPC 的效能最佳做法

ASP.NET Core gRPC 應用程式中的 gRPC-Web

gRPC 的關鍵知識

  • gRPC 的通訊協定:HTTP/2, 封包為 Binary。

  • 可以雙向串流。

  • 共支援四種通訊模式

    • Unary - 一元通訊。

    • Server Streaming - 伺服器端串流。

    • Client Streaming - 客戶端串流。

    • Duplex Streaming - 雙工/雙向串流。

gRPC-Web 的關鍵知識

為 gRPC 的特殊模組,把原本 gRPC HTTP/2 得封包轉成 HTTP/1.1 的封包。 是的就是把 gRPC 的能力降維。為什麼要把 gRPC 降維?因為到現在為止(2023年12月) 各家 Browser 都不支援 HTTP/2 封包!只要在 Browser 上跑就不支援 HTTP/2。

  • gRPC-Web 的通訊協定:HTTP/1.1, 封包為 Text。

  • 基本上不支援串流,然依各 Browser 或許支援 Server Steraming。

  • 共支援二種通訊模式

    • Unary - 一元通訊。

    • Server Streaming - 伺服器端串流(看各 Browser 支援與否)。

個人評價: 也就是說 gRPC-Web 與 Web API 的能力水平是一樣的。gRPC-Web 沒有實務上的價值,因為 Web API 己極度成熟跟本沒必要回頭用這套不成熟的方案。

要用就用 gRPC 這個支援 HTTP/2 的方案。

透過 HTTP/2 的傳統 gRPC 支援用戶端、伺服器和雙向串流。 gRPC-Web 提供有限的串流支援:

  • gRPC-Web 瀏覽器用戶端不支援呼叫用戶端串流和雙向串流方法。

  • gRPC-Web .NET 用戶端不支援透過 HTTP/1.1 呼叫用戶端串流和雙向串流方法。

  • Azure App Service 和 IIS 上裝載的 ASP.NET Core gRPC 服務不支援雙向串流。

使用 gRPC-Web 時,我們只建議使用一元方法和伺服器串流方法。

程式碼紀錄

gRPC in .NET5
gRPC in .NET6

(EOF)

Last updated