用 gRPC 完整指南:從配置到實(shí)踐)
簡(jiǎn)介Blazor WebAssembly與ASP.NET Core、gRPC結(jié)合的前后端示例工程面向希望借助gRPC提升通信效率并復(fù)用代碼的.NET開發(fā)人員。項(xiàng)目通過.proto文件統(tǒng)一定義接口契約自動(dòng)生成客戶端與服務(wù)端代碼降低手工維護(hù)成本其中WeatherService提供虛擬天氣數(shù)據(jù)Api層作為一元gRPC網(wǎng)關(guān)Web.Client與Web.Server分別承載Blazor客戶端和宿主服務(wù)。壓縮包共59個(gè)文件以.cs源碼、.json配置、.razor組件、.csproj工程文件為主體另含.proto契約、Dockerfile、docker-compose編排及證書、樣式等輔助文件包體約235KB整體結(jié)構(gòu)清晰適合按模塊對(duì)照學(xué)習(xí)。示例對(duì)應(yīng)較典型的gRPC-Web接入場(chǎng)景對(duì)理解Blazor調(diào)用gRPC后端、服務(wù)網(wǎng)關(guān)拆分以及容器化部署均有直接幫助已有306人學(xué)習(xí)瀏覽。雖然項(xiàng)目標(biāo)記為存檔但其代碼組織方式與proto優(yōu)先的開發(fā)流程仍有借鑒價(jià)值。 Blazor WebAssembly 這個(gè)技術(shù)棧從 .NET Core 3.0 時(shí)代我就開始關(guān)注前前后后也跟進(jìn)了好幾個(gè)版本直到 .NET 8 才算真正走到了“可以放心用于正式項(xiàng)目”的階段。最近在給團(tuán)隊(duì)內(nèi)部的一個(gè)管理系統(tǒng)做架構(gòu)調(diào)整后端接口想統(tǒng)一走 gRPC結(jié)果一調(diào)研就碰上了那個(gè)繞不開的問題瀏覽器端沒法直接跑原生 gRPC 協(xié)議必須用 gRPC-Web。折騰調(diào)研加落地最后沉淀出一個(gè) BlazorGrpc 示例項(xiàng)目把 Blazor WebAssembly 調(diào)用 gRPC 的完整鏈路跑通了包括服務(wù)端中間件配置、proto 契約共享、客戶端 Channel 構(gòu)建和頁(yè)面調(diào)用。這篇文章就把整個(gè)示例項(xiàng)目的核心內(nèi)容拆開講清楚為什么瀏覽器端不能用原生 gRPC、proto 契約要怎么定義和共享、服務(wù)端如何配置 gRPC-Web、Blazor WebAssembly 客戶端怎么對(duì)接以及我實(shí)際踩過的幾個(gè)典型坑。適合正在評(píng)估 Blazor WebAssembly 做內(nèi)部管理系統(tǒng)、或者想把現(xiàn)有 .NET 服務(wù)從 REST 遷移到 gRPC 接口的團(tuán)隊(duì)先跑通這個(gè)示例再?zèng)Q定要不要引入到正式項(xiàng)目里。1. 為什么瀏覽器端必須走 gRPC本文還有配套的精品資源點(diǎn)擊獲取