前情提要
筆者這篇主要是以CleanArchitecture的template
架構,因template
產出之專案結構包含Identity Server
,還有前端頁面等不需要的專案,因此筆者想要仿照該template
架構,自己手動建立純API
架構,順便熟悉一下其Clean Architecture
的專案結構,才能知己知彼,百戰百勝阿。此篇就以筆者手動建立的過程,筆者懶得截圖,主要以指令碼的方式進行相關建置作業。
內容
筆者這邊使用指令的方式手動建立相關專案及相依性並安裝套件,並使用Visual Studio Code
撰寫其內容,一開始不免俗地放一張筆者參考的template
專案的架構圖
https://i0.wp.com/jasontaylor.dev/wp-content/uploads/2020/01/Figure-01-2.png?w=531&ssl=1
建立專案
跟著筆者一起建立相關專案吧
1 | mkdir Test.CleanArch |
方案檔設定
建立完專案及方案檔後,針對方案檔及專案設定對應,這樣之後想要使用Visual Studio
開起來,雖然筆者這邊示範使用Visual Studio Code
,筆者還是示範一下這個步驟
1 | dotnet sln Test.CleanArch.sln add Test.CleanArch.API\Test.CleanArch.API.csproj |
加入參考
接著要來設定專案之間的參考,這邊簡單解釋一下規則,以Clean Architecture
的洋蔥式架構來說,相依性是非常重要的,相依的順序有內而外
,因此最外層的API
專案參考Infrastructure
及Application
專案,以此類推
1 | # Test.CleanArch.API |
安裝套件
Domain專案
筆者這邊使用SqlSuage
當作ORM
,相較於原本的template
是使用EFCore
,宣告與引用上有所不同,Domain
這邊會宣告SqlSugar
對應的實體,會套上SqlSugarCore
特有的Attribute
,因此必須安裝SqlSugarCore
套件
1 | cd Test.CleanArch.Domain\ |
Application專案
Application
專案屬整個專案制定規格的地方,因此安裝套件有點多,筆者這邊除了SqlSugar
外,其他沿用template
預設標配的相關套件
- MediatR
- AutoMapper
- FluentValidation
因此需要安裝相關的套件
1 | cd Test.CleanArch.Application\ |
Infrastructure專案
Infrastructure
專案這邊,放置非Domain
相關的實作,類似像Excel相關的操作,會將定義放在Application專案中,實作則於此專案中實作,接著SqlSugar相關注入宣告也是在於此,因此必須要從appsettings中讀取相關的設定
1 | cd Test.CleanArch.Infrastructure\ |
檔案結構
按照筆者上述講的方式宣告、建置完成後,會長出以下檔案結構目錄,筆者為截圖方便,使用Visual Studio 2022
開啟後,看出專案相依性及安裝套件列表
結論
這篇就以建立專案,專案參考及安裝套件為主,下篇筆者以SqlSugarCore
為例,做一個以MediatR
的In-process messaging
方式完成商業邏輯的撰寫。
參考
- https://github.com/jasontaylordev/CleanArchitecture
- https://jasontaylor.dev/clean-architecture-getting-started/