.NET 项目重构之DDD分层搭建
1. 目录
2. 背景
好久没有做国内项目了,也好久没有重构项目了。正好手里有一个定时服务需要重构, 就想着正好趁这个机会学一点点新的知识。比如DDD。
3. 环境
Windows 11 、Visual Studio 2022 、.NET 7 、SqlServer2022
4. 项目搭建
在项目文件夹中依次执行这些命令,或者放在PowerShell脚本里执行。
这里需要说明一下第一个项目创建的是MVC项目,选择MVC的原因有两个:
第一,可以加入SwaggerUI 跳过定时任务直接调试代码。
第二,可以在图形页面中查看该项目的异常信息。
mkdir 01-Presentation
mkdir 02-Application
mkdir 03-Domain
mkdir 04-Infrastructure
dotnet new mvc -n QuartzServices.Web -o ./01-Presentation/QuartzServices.Web
dotnet new classlib -n QuartzServices.Application -o ./02-Application/QuartzServices.Application
dotnet new classlib -n QuartzServices.Domain -o ./03-Domain/QuartzServices.Domain
dotnet new classlib -n QuartzServices.Domain.Core -o ./03-Domain/QuartzServices.Domain.Core
dotnet new classlib -n QuartzServices.Infrastructure -o ./04-Infrastructure/QuartzServices.Infrastructure
dotnet new sln -n QuartzServices
dotnet sln add ./01-Presentation/QuartzServices.Web/QuartzServices.Web.csproj
dotnet sln add ./02-Application/QuartzServices.Application/QuartzServices.Application.csproj
dotnet sln add ./03-Domain/QuartzServices.Domain/QuartzServices.Domain.csproj
dotnet sln add ./03-Domain/QuartzServices.Domain.Core/QuartzServices.Domain.Core.csproj
dotnet sln add ./04-Infrastructure/QuartzServices.Infrastructure/QuartzServices.Infrastructure.csproj
创建完, 目录结构如下:
├─01-Presentation
│ └─QuartzServices.Web
│ │ appsettings.Development.json
│ │ appsettings.json
│ │ Program.cs
│ │ QuartzServices.Web.csproj
│ │ QuartzServices.Web.csproj.user
│ │
│ ├─Controllers
│ │ HomeController.cs
│ │
│ ├─Models
│ │ ErrorViewModel.cs
│ │
│ ├─Properties
│ │ launchSettings.json
│ │
│ ├─Views
│ │ │ _ViewImports.cshtml
│ │ │ _ViewStart.cshtml
│ │ │
│ │ ├─Home
│ │ │ Index.cshtml
│ │ │ Privacy.cshtml
│ │ │
│ │ └─Shared
│ │ Error.cshtml
│ │ _Layout.cshtml
│ │ _Layout.cshtml.css
│ │ _ValidationScriptsPartial.cshtml
│ │
│ └─wwwroot
│ │ favicon.ico
│ │
│ ├─css
│ │ site.css
│ │
│ ├─js
│ │ site.js
│ │
│ └─lib
│ ├─bootstrap
│ │ │ LICENSE
│ │ │
│ │ └─dist
│ │ ├─css
│ │ │ bootstrap-grid.css
│ │ │ bootstrap-grid.css.map
│ │ │ bootstrap-grid.min.css
│ │ │ bootstrap-grid.min.css.map
│ │ │ bootstrap-grid.rtl.css
│ │ │ bootstrap-grid.rtl.css.map
│ │ │ bootstrap-grid.rtl.min.css
│ │ │ bootstrap-grid.rtl.min.css.map
│ │ │ bootstrap-reboot.css
│ │ │ bootstrap-reboot.css.map
│ │ │ bootstrap-reboot.min.css
│ │ │ bootstrap-reboot.min.css.map
│ │ │ bootstrap-reboot.rtl.css
│ │ │ bootstrap-reboot.rtl.css.map
│ │ │ bootstrap-reboot.rtl.min.css
│ │ │ bootstrap-reboot.rtl.min.css.map
│ │ │ bootstrap-utilities.css
│ │ │ bootstrap-utilities.css.map
│ │ │ bootstrap-utilities.min.css
│ │ │ bootstrap-utilities.min.css.map
│ │ │ bootstrap-utilities.rtl.css
│ │ │ bootstrap-utilities.rtl.css.map
│ │ │ bootstrap-utilities.rtl.min.css
│ │ │ bootstrap-utilities.rtl.min.css.map
│ │ │ bootstrap.css
│ │ │ bootstrap.css.map
│ │ │ bootstrap.min.css
│ │ │ bootstrap.min.css.map
│ │ │ bootstrap.rtl.css
│ │ │ bootstrap.rtl.css.map
│ │ │ bootstrap.rtl.min.css
│ │ │ bootstrap.rtl.min.css.map
│ │ │
│ │ └─js
│ │ bootstrap.bundle.js
│ │ bootstrap.bundle.js.map
│ │ bootstrap.bundle.min.js
│ │ bootstrap.bundle.min.js.map
│ │ bootstrap.esm.js
│ │ bootstrap.esm.js.map
│ │ bootstrap.esm.min.js
│ │ bootstrap.esm.min.js.map
│ │ bootstrap.js
│ │ bootstrap.js.map
│ │ bootstrap.min.js
│ │ bootstrap.min.js.map
│ │
│ ├─jquery
│ │ │ LICENSE.txt
│ │ │
│ │ └─dist
│ │ jquery.js
│ │ jquery.min.js
│ │ jquery.min.map
│ │
│ ├─jquery-validation
│ │ │ LICENSE.md
│ │ │
│ │ └─dist
│ │ additional-methods.js
│ │ additional-methods.min.js
│ │ jquery.validate.js
│ │ jquery.validate.min.js
│ │
│ └─jquery-validation-unobtrusive
│ jquery.validate.unobtrusive.js
│ jquery.validate.unobtrusive.min.js
│ LICENSE.txt
│
├─02-Application
│ └─QuartzServices.Application
│ Class1.cs
│ QuartzServices.Application.csproj
│
├─03-Domain
│ ├─QuartzServices.Domain
│ │ Class1.cs
│ │ QuartzServices.Domain.csproj
│ └─QuartzServices.Domain.Core
│ Class1.cs
│ QuartzServices.Domain.Core.csproj
│
└─04-Infrastructure
└─QuartzServices.Infrastructure
Class1.cs
QuartzServices.Infrastructure.csproj
5. 结语
这样整个项目的基本层级关系就搭建完成了,接下来接入日志相关服务。
本文原创自博客园,欢迎关注我的博客HOYU_Z
https://www.cnblogs.com/hoyu/