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