翼度科技»论坛 编程开发 .net 查看内容

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

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
1. 目录

2. 背景

好久没有做国内项目了,也好久没有重构项目了。正好手里有一个定时服务需要重构, 就想着正好趁这个机会学一点点新的知识。比如DDD。
3. 环境

Windows 11 、Visual Studio 2022 、.NET 7 、SqlServer2022
4. 项目搭建

在项目文件夹中依次执行这些命令,或者放在PowerShell脚本里执行。
这里需要说明一下第一个项目创建的是MVC项目,选择MVC的原因有两个:
第一,可以加入SwaggerUI 跳过定时任务直接调试代码。
第二,可以在图形页面中查看该项目的异常信息。
  1. mkdir 01-Presentation
  2. mkdir 02-Application
  3. mkdir 03-Domain
  4. mkdir 04-Infrastructure
  5. dotnet new mvc -n QuartzServices.Web -o ./01-Presentation/QuartzServices.Web
  6. dotnet new classlib -n QuartzServices.Application -o ./02-Application/QuartzServices.Application
  7. dotnet new classlib -n QuartzServices.Domain -o ./03-Domain/QuartzServices.Domain
  8. dotnet new classlib -n QuartzServices.Domain.Core -o ./03-Domain/QuartzServices.Domain.Core
  9. dotnet new classlib -n QuartzServices.Infrastructure -o ./04-Infrastructure/QuartzServices.Infrastructure
  10. dotnet new sln -n QuartzServices
  11. dotnet sln add ./01-Presentation/QuartzServices.Web/QuartzServices.Web.csproj
  12. dotnet sln add ./02-Application/QuartzServices.Application/QuartzServices.Application.csproj
  13. dotnet sln add ./03-Domain/QuartzServices.Domain/QuartzServices.Domain.csproj
  14. dotnet sln add ./03-Domain/QuartzServices.Domain.Core/QuartzServices.Domain.Core.csproj
  15. dotnet sln add ./04-Infrastructure/QuartzServices.Infrastructure/QuartzServices.Infrastructure.csproj
复制代码
创建完, 目录结构如下:
  1. ├─01-Presentation
  2. │  └─QuartzServices.Web
  3. │      │  appsettings.Development.json
  4. │      │  appsettings.json
  5. │      │  Program.cs
  6. │      │  QuartzServices.Web.csproj
  7. │      │  QuartzServices.Web.csproj.user
  8. │      │
  9. │      ├─Controllers
  10. │      │      HomeController.cs
  11. │      │
  12. │      ├─Models
  13. │      │      ErrorViewModel.cs
  14. │      │
  15. │      ├─Properties
  16. │      │      launchSettings.json
  17. │      │
  18. │      ├─Views
  19. │      │  │  _ViewImports.cshtml
  20. │      │  │  _ViewStart.cshtml
  21. │      │  │
  22. │      │  ├─Home
  23. │      │  │      Index.cshtml
  24. │      │  │      Privacy.cshtml
  25. │      │  │
  26. │      │  └─Shared
  27. │      │          Error.cshtml
  28. │      │          _Layout.cshtml
  29. │      │          _Layout.cshtml.css
  30. │      │          _ValidationScriptsPartial.cshtml
  31. │      │
  32. │      └─wwwroot
  33. │          │  favicon.ico
  34. │          │
  35. │          ├─css
  36. │          │      site.css
  37. │          │
  38. │          ├─js
  39. │          │      site.js
  40. │          │
  41. │          └─lib
  42. │              ├─bootstrap
  43. │              │  │  LICENSE
  44. │              │  │
  45. │              │  └─dist
  46. │              │      ├─css
  47. │              │      │      bootstrap-grid.css
  48. │              │      │      bootstrap-grid.css.map
  49. │              │      │      bootstrap-grid.min.css
  50. │              │      │      bootstrap-grid.min.css.map
  51. │              │      │      bootstrap-grid.rtl.css
  52. │              │      │      bootstrap-grid.rtl.css.map
  53. │              │      │      bootstrap-grid.rtl.min.css
  54. │              │      │      bootstrap-grid.rtl.min.css.map
  55. │              │      │      bootstrap-reboot.css
  56. │              │      │      bootstrap-reboot.css.map
  57. │              │      │      bootstrap-reboot.min.css
  58. │              │      │      bootstrap-reboot.min.css.map
  59. │              │      │      bootstrap-reboot.rtl.css
  60. │              │      │      bootstrap-reboot.rtl.css.map
  61. │              │      │      bootstrap-reboot.rtl.min.css
  62. │              │      │      bootstrap-reboot.rtl.min.css.map
  63. │              │      │      bootstrap-utilities.css
  64. │              │      │      bootstrap-utilities.css.map
  65. │              │      │      bootstrap-utilities.min.css
  66. │              │      │      bootstrap-utilities.min.css.map
  67. │              │      │      bootstrap-utilities.rtl.css
  68. │              │      │      bootstrap-utilities.rtl.css.map
  69. │              │      │      bootstrap-utilities.rtl.min.css
  70. │              │      │      bootstrap-utilities.rtl.min.css.map
  71. │              │      │      bootstrap.css
  72. │              │      │      bootstrap.css.map
  73. │              │      │      bootstrap.min.css
  74. │              │      │      bootstrap.min.css.map
  75. │              │      │      bootstrap.rtl.css
  76. │              │      │      bootstrap.rtl.css.map
  77. │              │      │      bootstrap.rtl.min.css
  78. │              │      │      bootstrap.rtl.min.css.map
  79. │              │      │
  80. │              │      └─js
  81. │              │              bootstrap.bundle.js
  82. │              │              bootstrap.bundle.js.map
  83. │              │              bootstrap.bundle.min.js
  84. │              │              bootstrap.bundle.min.js.map
  85. │              │              bootstrap.esm.js
  86. │              │              bootstrap.esm.js.map
  87. │              │              bootstrap.esm.min.js
  88. │              │              bootstrap.esm.min.js.map
  89. │              │              bootstrap.js
  90. │              │              bootstrap.js.map
  91. │              │              bootstrap.min.js
  92. │              │              bootstrap.min.js.map
  93. │              │
  94. │              ├─jquery
  95. │              │  │  LICENSE.txt
  96. │              │  │
  97. │              │  └─dist
  98. │              │          jquery.js
  99. │              │          jquery.min.js
  100. │              │          jquery.min.map
  101. │              │
  102. │              ├─jquery-validation
  103. │              │  │  LICENSE.md
  104. │              │  │
  105. │              │  └─dist
  106. │              │          additional-methods.js
  107. │              │          additional-methods.min.js
  108. │              │          jquery.validate.js
  109. │              │          jquery.validate.min.js
  110. │              │
  111. │              └─jquery-validation-unobtrusive
  112. │                      jquery.validate.unobtrusive.js
  113. │                      jquery.validate.unobtrusive.min.js
  114. │                      LICENSE.txt
  115. ├─02-Application
  116. │  └─QuartzServices.Application
  117. │        Class1.cs
  118. │        QuartzServices.Application.csproj
  119. │      
  120. ├─03-Domain
  121. │  ├─QuartzServices.Domain
  122. │  │    Class1.cs
  123. │  │    QuartzServices.Domain.csproj
  124. │  └─QuartzServices.Domain.Core
  125. │       Class1.cs
  126. │       QuartzServices.Domain.Core.csproj
  127. │      
  128. └─04-Infrastructure
  129.     └─QuartzServices.Infrastructure
  130.         Class1.cs
  131.         QuartzServices.Infrastructure.csproj
  132.         
复制代码
5. 结语

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

来源:https://www.cnblogs.com/hoyu/archive/2023/07/25/17579025.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具