Asp.net-Core

Razor 組件與 Blazor

  • September 24, 2020

我很困惑 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 可以說處於更好的位置。路由引擎仍然有限,表單和驗證才剛剛發布,還有很多工作要做。

要記住的另一件事是可以很容易地在模型之間進行交換。所以無論你做出什麼決定,你都不會被束縛。在某些時候甚至會在框架中內置一種方法,因此您現在所做的任何事情都不會浪費。

有任何問題,請提出。但我希望這會有所幫助。

引用自:https://stackoverflow.com/questions/55086914