gRPC on .NET 紀錄
gRPC 試用紀錄。包含: Unary, Server Streaming, Client Streaming, Duplex Streaming, Authentication with JWT, Logging with Interceptor.
參考文章
適用 ASP.NET Core 之 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 時,我們只建議使用一元方法和伺服器串流方法。
程式碼紀錄
(EOF)
Last updated