筆者接觸軟體行業的時間不長,先後接觸三種架構,分別為 ASP.NET MVC、ASP.NET Core & Blazor、ASP.NET Core & Angular,由於 ASP.NET MVC 是筆者初入軟體行業的新人時期,迷迷糊糊地就在前輩的帶領下完成了專案,所以沒什麼感悟,只是大概了解前後端的差別,前端以 HTTP Request 發送向後端取資料,後端回傳資料,前端再將結果呈現在頁面上。
等到專案收尾,在主管力推轉型之下改用 ASP.NET Core & Blazor 並指派筆者做出模板,筆者搜尋網路資源東拼西湊摸索出了一套堪用的架構,當時只覺得 Blazor 跟 ASP.NET MVC 差距甚大,前端不需要弱型別的 JavaScript,前後端都是強型別的世界,對筆者的懶人個性起到莫大幫助,可惜接下來由於客戶需求,只能改用 ASP.NET Core & Angular,沒辦法深入研究 Blazor。
不過有失必有得,在新專案的高壓強度及同事的指導下,筆者大致理解了 Angular 的 Module, Component 分層架構、Observable 類似 Ajax 的概念,雖然仍是一知半解,但筆者也對 Angular 大致熟悉了,發現 Component 的概念跟 Blazor 的相似,可說是殊途同歸。
由於筆者參加鐵人賽的目的在於紀錄心得,因此有些地方的描述會較為繁瑣,另外筆者從事軟體行業經驗並不豐富,若筆者文章內容有誤,也請各位不吝賜教。
筆者這次鐵人賽想要用 Blazor 完成一個可以供使用者輸入日誌的網站,預計涵蓋的項目大概會有:
- Blazor 簡介
- Blazor Server, Blazor WebAssembly 2 種 Hosting 模式及專案結構
- Component 元件介紹、事件處理
- ASP.NET Core
- EF Core
- 登入、授權
Blazor 使用 C# 編寫,雖然也可以用 VB、F# 編寫,但筆者只熟習 C#,C# 屬於 .NET 框架,.NET 框架在 Visual Studio 開發較為方便,因此筆者會使用 Visual Studio 開發,版本為 .NET 5。關於 ASP.NET, .NET Framework, NET Core 的差別,筆者此前看到有人詳述,覺得非常有幫助,若時間允許,筆者會再分享出來。另外筆者過程會使用 git 作為版本控制工具,最終程式碼會放在 github 上。
註:本文程式碼透過 .NET 6 + Visual Studio 2022 重構,可點擊原文連結與重構後程式碼比較學習,謝謝閱讀,支援原作者