.NET 项目重构之DDD分层搭建

  • .NET 项目重构之DDD分层搭建已关闭评论
  • 211 次浏览
  • A+
所属分类:.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. 结语

这样整个项目的基本层级关系就搭建完成了,接下来接入日志相关服务。