# 1. 目錄 - [1. 目錄](#1-目錄) - [2. 背景](#2-背景) - [3. 環境](#3-環境) - [4. 項目搭建](#4-項目搭建) - [5. 結語](#5-結語) # 2. 背景 好久沒有做國內項目了,也好久沒有重構項目了。正好手裡有一個定時服務需要重構, 就想著正好趁 ...
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/