Blazor App 試用手札 (2021/06/18)
筆記 .NET5 Blazor 開發過程。
從結論講起
綜合來說:整體框架簡潔有力。
.NET5 Blazor Server網站框架特徵像
WebFrom。除了Web UI 其它面向完勝
WebForm。通訊方式是
SignalR自動執行,像是呼叫函式一樣。
.NET5 Blazor WASM。網站框架特徵像
React App。綜合成熟度遠遠落後
React App。通訊方式是 HTTP。
但是…前端UI預設只有傳統
CGI介面。已知有數套CSS-Framework支援Blazor:
MatBlazor- 發行日期:2018/10/25SKCLUSIVE-UI- 發行日期:2019/12/23 - 收費。MudBlazor- 發行日期:2020/09Radzen Blazor Components- 發行日期:2020年末
三大類Blazor App
※官方分成二類,不過本人分成三類。
Blazor Server
both server and client
似 WebForm。
Blazor WASM
client only
似 React App,最大差別在底層不是node.js 而是 WebAssembly。
Blazor WASM hosting (裝載)
client + server
似 React App 與 Web API 裝載在一起。
在開發程序上這三類有些微差異。
前端開發
仍要學HTML5, CSS3。
以C#取代JavaScript。
需學
Razor syntax指令,讓前後端『融合』。此版Razor有支援Two-way bindding,有
AngularJS的味道。
CSS分隔是預設能力之一。
全程強型別,沒有前、後端轉型的〝額外工作〞。
Blazor Server 後端與通訊
用所謂的 services
@inject。非Web API。前、後端以
SignalR繫結,訊息會自動傳遞像WebForm一樣。從外面角度來看前後端似是融合成一體,更精確的形容是前、後端『塑合』成一體。
其中
SignalR通訊封包在此全是binary格式,安全性高效率也高。
Blazor WASM 後端與通訊
預設用
Web API。HTTP封包。
試作環境
IDE: Visual Studio 2019
.NET 5
前端UI仍不足
前端UI預設只有傳統CGI介面
官方採用 Bootstrap 4 加強前端UI
應該可以使用jQuery。(未試用)
若要用 Bootstrap 的話,建議用 Bootstrap 5。Bootstrap 5已不需要jQuery了。
下面四套為Blazor設計的CSS-Framework,皆為 Open Source 需自行再安裝整合,也有其他收費的版本。
SKCLUSIVE-UI(已評估,尚不試用)Blazor components for faster and easier web development with Material Design.
MatBlazor(已評估,可考慮試用)Material Design components for Blazor
MudBlazor(已試用可以)Blazor components For faster and easier web development
Radzen Blazor Components(已評估,尚不試用)Radzen Blazor Components is a free and open source set of 60+ native Blazor UI controls.
C# 與 JS 有限度互通
在前端C#可用
IJSRuntime指令呼叫JS。(有機會用到)JsRuntime只能引用 global 層的 JavaScript 資源。
在前端JS可用
JSInvokable標籤屬性呼叫C#。(應該沒必要用到,也不建議採用)
客製化的第三方元件資源成熟度
現在肯定比較少,不過有信心接下來會快速累積。 現況遠遠落後 React App。
其它能力未測試
安全性部份? 如 SSL, Auth Token 等保護機制?
Blazor Server App建議用Cookie base auth.--- 已測okBlaozr WASM App建議用JWT token base auth.
上傳檔案?
產生PDF檔?
產生Excel檔
ClosedXML套件--- 已測ok
檔案下載模組
BlazorDownloadFile--- 已測ok
圖表繪製相關?
尚未發現直接支援且是 open source 的版本
ChartJs.Blazor 這套是 wrapping
Chart.Js 2.9.4。 --- 已測ok或自行 wrapping Chart.js v3.4.1。
可否引用 React 元件?
已知可以有限度的整合 golbal 層的 React 資源。
實務上就是『不行』。
mobile web (老問題仍存在)
mobile app (未試)
(先這樣)
Last updated