Razor 組件與 Blazor
我很困惑 Razor 組件和 Blazor 之間有什麼不同,哪個更好,在最後一個版本 .NET Core 3.0 Preview 3 中將這些添加到 Razor 組件
Razor 組件改進:
- 單個項目模板
- 新的 .razor 副檔名
- 端點路由集成
- 預渲染
- Razor 類庫中的 Razor 組件
- 改進的事件處理
- 表格和驗證
基本上有3個部分需要理解。
剃須刀組件
這是 2018 年 7 月為伺服器端 Blazor 的第一個版本創建的核心、程序外組件模型的名稱。
Razor Components 是框架的核心,包含以下所有內容。
- 參數
- 事件處理
- 數據綁定
- 路由
- 依賴注入
- 佈局
- 模板
- 級聯值
伺服器端 Blazor
這是在 ASP.NET Core 上執行的 Razor 組件的伺服器端託管模型。此版本在伺服器上託管 Razor 組件模型。它使用小型執行時將 UI 事件從瀏覽器發送到伺服器。一旦被 Razor 組件處理,任何 UI 更新都會從伺服器發送回瀏覽器,並且執行時會處理更新 DOM。所有這些通信都是通過 SignalR 連接處理的。甚至 JS 互操作呼叫也是以這種方式處理的。
客戶端 Blazor
這是 Razor 組件的客戶端託管模型。
在此模型中,所有內容都託管在瀏覽器中。編譯為 WebAssembly 的 Mono 是 .NET 執行時。在此之上是 Razor 組件,最後是應用程序。
這種架構的偉大之處在於,添加到 Razor 組件的任何功能理論上都應該可用於兩種託管模型。儘管在現實中,情況並非總是如此。
什麼更好?
這在很大程度上取決於你想做什麼。
客戶端 Blazors 最大的缺點是它的下載大小。對於許多開發人員來說,僅此一項就可以排除它。下載很容易進入多個 MB,如果有人試圖在連接速度較慢的移動設備上查看您的應用程序,他們將不會有很好的體驗。但是,值得注意的是,在第一次下載後,很多內容都被記憶體了,因此後續載入可能只有 100kb。
客戶端 Blazors 的調試體驗現在也非常原始。這意味著作為開發人員從事它有時可能具有挑戰性。
伺服器端 Blazor 在調試方面具有更好的開發人員體驗。該應用程序的下載速度要快得多,並且在進行任何記憶體之前只有幾個 100kb 的大小。
缺點是潛在的可擴展性。但這在很大程度上取決於您期望的並髮使用者數量。由於此模型使用 SignalR,因此您的應用程序將有並發連接的上限。但是,您可以通過插入 Azure SignalR 來管理這一點,以允許與您的應用建立更多連接。
最終,Razor Components 的兩種託管模型都有很長的路要走。兩者的身份驗證故事都處於早期階段,儘管客戶端 Blazor 可以說處於更好的位置。路由引擎仍然有限,表單和驗證才剛剛發布,還有很多工作要做。
要記住的另一件事是可以很容易地在模型之間進行交換。所以無論你做出什麼決定,你都不會被束縛。在某些時候甚至會在框架中內置一種方法,因此您現在所做的任何事情都不會浪費。
有任何問題,請提出。但我希望這會有所幫助。