一個適用于 .NET 的開源整潔架構(gòu)項目模板
項目架構(gòu)模式在軟件開發(fā)中扮演著至關(guān)重要的角色,它們?yōu)殚_發(fā)者提供了一套組織和管理代碼的指導(dǎo)原則,以提高軟件的可維護性、可擴展性、可重用性和可測試性。今天大姚給大家分享一個適用于 .NET 的開源整潔架構(gòu)項目模板。
整潔架構(gòu)
整潔架構(gòu)(Clean Architecture)是一種軟件架構(gòu)設(shè)計原則,由羅伯特·C·馬丁(Robert C. Martin)提出,它旨在使軟件系統(tǒng)更加靈活、可維護和可測試,其核心目標是構(gòu)建一種簡潔、靈活且易于維護的系統(tǒng)結(jié)構(gòu)。
分層職責(zé)
- 實體層(Entities):實體層代表了系統(tǒng)中的核心業(yè)務(wù)概念和對象。這一層包含了那些在整個系統(tǒng)的生命周期中持續(xù)存在且具有明確業(yè)務(wù)含義的實體。
- 用例層(Use Cases):用例層包含了系統(tǒng)的具體業(yè)務(wù)邏輯和用例。它協(xié)調(diào)實體層和其他層之間的交互,以實現(xiàn)特定的業(yè)務(wù)功能。
- 接口適配器層(Interface Adapters):接口適配器層將用例層與外部系統(tǒng)(如數(shù)據(jù)庫、用戶界面、外部服務(wù)等)進行連接。它將外部系統(tǒng)的接口轉(zhuǎn)換為用例層可以理解的形式,并將用例層的輸出轉(zhuǎn)換為適合外部系統(tǒng)的格式。
- 框架與驅(qū)動層(Frameworks and Drivers):框架與驅(qū)動層包含了外部的框架和工具,如數(shù)據(jù)庫、Web 框架、消息隊列等。這一層通常是由具體的技術(shù)實現(xiàn)組成,為上層提供基礎(chǔ)設(shè)施支持。
.NET 整潔架構(gòu)模板
CleanArchitecture是一個適用于 .NET 的開源整潔架構(gòu)項目模板,此模板的目標是利用 Clean Architecture 和 ASP.NET Core 的強大功能,為企業(yè)應(yīng)用程序開發(fā)提供一種簡單而有效的方法。使用此模板,您可以毫不費力地使用 ASP.NET Core 和 Angular 或 React 創(chuàng)建單頁應(yīng)用程序 (SPA),同時遵守 Clean Architecture 的原則。入門非常簡單,只需安裝 .NET 模板。
項目源代碼
環(huán)境準備
(1) .NET 9.0 SDK
https://dotnet.microsoft.com/zh-cn/download/dotnet/9.0
(2) Node.js
https://nodejs.org
.NET 整潔架構(gòu)模板安裝
Clean.Architecture.Solution.Template:
https://www.nuget.org/packages/Clean.Architecture.Solution.Template
dotnet new install Clean.Architecture.Solution.Template::9.0.8
整潔架構(gòu)模板安裝后,使用模板創(chuàng)建新的解決方案。您可以選擇使用 Angular、React 或創(chuàng)建僅限 Web API 的解決方案。使用 -cf 或 --client-framework 選項指定客戶端框架,并提供將在其中創(chuàng)建項目的輸出目錄。以下是一些示例:
要使用 Angular 和 ASP.NET Core 創(chuàng)建單頁應(yīng)用程序 (SPA):
dotnet new ca-sln --client-framework Angular --output YourProjectName
要使用 React 和 ASP.NET Core 創(chuàng)建 SPA,請執(zhí)行以下操作:
dotnet new ca-sln -cf React -o YourProjectName
若要創(chuàng)建僅限 ASP.NET Core Web API 的解決方案,請執(zhí)行以下操作:
dotnet new ca-sln -cf None -o YourProjectName
啟動應(yīng)用程序:
cd src/Web
dotnet run
項目源碼地址
更多項目實用功能和特性歡迎前往項目開源地址查看??,別忘了給項目一個Star支持??。
GitHub開源地址:https://github.com/jasontaylordev/CleanArchitecture