1. 程式人生 > 程式設計 >[Asp.Net Core] 淺談Blazor Server Side

[Asp.Net Core] 淺談Blazor Server Side

在2016年,本人就開始了一個內部專案,其特點就是用C#構建DOM樹,然後把DOM同步到瀏覽器中顯示. 並且在一些小工程中使用.

3年下來,效果很不錯,但因為是使用C#來構建控制元件樹,在沒有特定語法的情況下,程式碼風格不是那麼好.

典型的風格大概是這樣的:

[Asp.Net Core] 淺談Blazor Server Side

這個模式挺好的,有點嫌棄C#程式碼佔比太高,HTML程式碼靠字串來完成,在介面的設計上,比較吃力.

在2019年秋,Asp.Net 3.0出來了,Blazor Server Side 也正式公佈,可以在VS2019中使用.

當時我就去嚐嚐鮮,發現這東西,和我的框架很接近. 不同的是,

Blaozr Server Side 是基於 MVVM 的,而我的框架是基於傳統控制元件樹的.

Blazor畢竟有微軟做爸爸,在VS上的支援是直接的,由Razor檔案來負責 HTML+C# 的程式碼模式,完全支援智慧提示.

天呀,這不是就是我夢寐以求的開發方式嗎? 於是,在疫情期間,我把以前的框架,和Blazor直接整合在一起. 開始做一些小工程做驗證.

現在這個整合大部分需求與問題都得到了解決. 還需要提供更多的控制元件用以提高工程的開發速度.

先上圖,看看 Blazor 的程式碼是長什麼樣子的.

(Razor語法,和MVC有點接近. 但是MVC是輸出靜態HTML的,Blazor元件是生成伺服器樹狀結構的)

[Asp.Net Core] 淺談Blazor Server Side

與 MVC 的 Razor語法是接近的,然而最大不同時,MVC 的最終目標是生成字串發給瀏覽器. 而Blazor生成了模型之後,依然是"活動"的,隨時準備好響應客戶端的事件.

[Asp.Net Core] 淺談Blazor Server Side

對於 Blazor 架構的一些特點,畫了一些圖.

首先,我把這種模式成為 "伺服器UI對映",後面都會陸續使用這個概念.

個人看法,通常的情況,僅供參考

[Asp.Net Core] 淺談Blazor Server Side

[Asp.Net Core] 淺談Blazor Server Side

Blazor 因為在伺服器上把程式碼執行狀態駐留在記憶體,

所以程式執行的上下文得以儲存,而關聯的事件也會繫結到上下文中.

事件處理函式被呼叫時,相關的物件和資料會全部可用.

具體的細節無法說太多,畢竟這是新事物,我自己也是一邊使用一邊積累心得.

我以後會陸陸續續放上各種例子,提供給感興趣的網友們,用節省時間的方式去迅速掌握Blazor的開發流程.

最後,放上一個對照表,以供參考:

伺服器UI對映 C/S B/S B+C混合
簡單概述 活在伺服器
投影到客戶端
活在客戶端
與伺服器通訊
伺服器生成HTML
客戶端展示與回發
伺服器先生成HTML
客戶端深化介面功能
典型方案 Blazor Server Side
at server hosted
平臺:Windows/Android/iOS GUI框架
網頁:JS控制元件類/React/Argular/Vue..
Blazor WebAssembly
Blazor ServerSideat client hosted
各種WEB伺服器方案:
ASP/ASP.NET WebForms,MVC
PHP/Java/Node.js/..
各種框架混合使用
典型應用 無,適合: 微信公眾號應用,
網站後臺,手機嵌入頁面
小程式webview嵌入頁面
各種Desktop/Mobile客戶端
遊戲客戶端,網站SPA,微信小程式,
各種入門級展示型網站 各種複雜點的網站
讀寫資料 直接,方便 需通過伺服器代勞 直接,方便 混合
通訊方式 已在伺服器執行 HTTP/Socket/WebSocket等等
由各平臺/框架提供
HTTP GET/POST為主 混合
通訊程式碼 無需額外編寫(優點) 基於XML/JSON/Query/Form/自定格式
程式設計師指定具體的名稱與值
伺服器與客戶端都要編寫大量程式碼(缺點)
關乎許可權的話要保證安全性,工作量會很大
主要是Query/Form
程式設計師指定具體的名稱與值
只適合簡單的程式
混合
服務重啟
熱更新
丟失未儲存的狀態(缺點)
對正使用的使用者造成影響
未儲存狀態在客戶端儲存
只要重試便可
狀態在瀏覽器儲存
只要重試便可
狀態在瀏覽器儲存
只要重試便可
伺服器負荷 最重,(缺點)
每線上使用者會佔用伺服器記憶體
只適合少量線上使用者場合
最少(優點)
伺服器基本上只處理業務邏輯
每個請求會很快釋放,負擔很小
不多 較少
適合場景 資金少的企業定製應用
使用者量較少的小功能
以快速開發為目標
通用開發模式
適合絕大部分情況
比較適合內容展示網站
或比較簡單的業務系統
混合
程式碼部署 純伺服器,更保密 客戶端,沒那麼保密(缺點)
通訊機制可能會被濫用攻擊
伺服器為主,較為保密 混合情況
首次啟動 極快 100KB下載量起 慢,看框架和程式整體大小 極快,看內容多少 混合
版本更新 直接覆蓋 客戶端需下載或重新載入 直接覆蓋 混合情況
搜尋引擎 可被收錄
被惡意
收集資料
目前較安全 通過通訊協議收集 通過爬蟲收集 混合

以上就是[Asp.Net Core] 淺談Blazor Server Side 的詳細內容,更多關於Blazor Server Side 的資料請關注我們其它相關文章!