首先了解一下 MasaFramework 是什麼?
MasaFramework 是一個基於 .Net6.0 的後端框架,可以被用於開發 Web 應用程式、WPF 專案、主控台專案。
其實就是 MasaFramework 提供了很多功能的套件,很強大,對於 Dapr 的支援非常好,如果有想嘗試 Dapr 的可以試試 MasaFramework。
然後我們開始使用 MasaFramework,進入實戰
- 安裝 MasaFramework 專案範本
dotnet new install Masa.Template
這樣就安裝成功了:

- 建立專案
打開一個目錄,打開主控台進行建立範本專案,建立一個 mfDemo 的專案範本
dotnet new masafx --name mfDemo
這樣就建立完成了,打開解決方案

- 專案結構解析

我們可以看到打開解決方案以後的專案結構。
專案區分 src/ApiGateways,src/Contracts,src/Services,src/Web 四層,這個時候可能就會有很多人有疑惑了,為什麼跟傳統的 Abp 架構設計有些差異,其實這個就是 MasaFramework 的框架美妙之處。
src/ApiGateways 中包含對外使用的介面實作(站長註:用戶端介面呼叫的封裝),相當於我可以直接將 src/ApiGateways 給 src/Web 的前端專案使用,這樣的好處就是減少前端專案的依賴性,並且利於介面的快速對接。
src/Contracts 中包含了基本的模型,和一些共享的東西,src/Contracts 是純粹的,沒有任何依賴,所以 src/ApiGateways 和 src/Services 都會直接依賴 src/Contracts,用於共享 Model 或其他東西。
src/Services 中就是包含了具體業務和實作,並且包含 Host,在 Application 中包含業務處理或事件處理:

如果你並未使用 MiniApi 的話應該出現的就是 Controllers:

其實建議使用 MiniApi,因為兩個實作方式不一樣,導致 MiniApi 在效能上對比 Controllers 更好。
Infrastructure 中就是專案的基礎設施了,看圖我們發現 Entity 和 Middleware,Repository,DbContext 都在基礎設施中:

MasaFramework 的設計就是簡化專案複雜,將其揉合在一個專案中,如果你剛剛使用 MasaFramework,千萬千萬不要拆分,你拆分了和 MasaFramework 本身設計就不太相符合,但是如果你是熟練的大佬,當我沒說,剛剛入門 MasaFramework 請務必使用本身框架的設計。
src/Web 就是我們的實際的前端專案了。
建立的預設範本提供的是 Blazor Server 模式的專案,可以自行拆分成三層專案 mfDemo.Shared,mfDemo.Server,mfDemo.WebAssembly 三層專案架構。
mfDemo.Shared 可以理解成專案的所有實作和介面檔案組織等一切功能。
mfDemo.Server 其實就是個 Blazor Server 的殼,用於託管 mfDemo.Shared 專案。
mfDemo.WebAssembly 其實也是個 Blazor WebAssembly 的殼,用於託管 mfDemo.Shared 專案。
這樣我們的專案就可以支援 Blazor Server 和 Blazor WebAssembly 兩種模式了,
結尾
透過上文我們可以基本將 MasaFramework 的專案結構瞭解清楚,也知道 MasaFramework 的設計了。
當前是 MasaFramework 的第一篇入門,我會繼續學習 MasaFramework 並且分享給大家。
來自 token 的分享
學習交流:737776595