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

这篇具有很好参考价值的文章主要介绍了.NET 项目重构之DDD分层搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 目录

  • 1. 目录
  • 2. 背景
  • 3. 环境
  • 4. 项目搭建
  • 5. 结语

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. 结语

这样整个项目的基本层级关系就搭建完成了,接下来接入日志相关服务。文章来源地址https://www.toymoban.com/news/detail-601863.html

到了这里,关于.NET 项目重构之DDD分层搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过重构来加深理解——DDD

    上部分模型驱动设计的构造块为维护模型和实现之间的关系打下了基础。在开发过程中使用一系列成熟的基本构造块并运用一致的语言,能够使开发工作更加清晰而有条理。 我们面临的真正挑战是找到深层次的模型 ,这个模型不但能够捕捉到领域专家的微妙的关注点,还可

    2023年04月25日
    浏览(15)
  • .NET项目重构之日志服务(Serilog)

    1. 目录 2. 前言 2.1. 日志控件的选择 3. 日志配置 3.1. 控制台打印 3.2. 文件打印 4. 结语 定时任务中比较重要的一个环节就是日志记录,有了日志可以记录系统的操作过程,也可以在系统异常时方便排查错误原因。 比如定时任务经常要做的一个事情,同步其它异构系统数据到本

    2024年02月16日
    浏览(36)
  • DDD 架构分层,MQ消息要放到那一层处理?

    作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!😄 本文的宗旨在于通过简单干净实践的方式教会读者,使用 Docker 配置 RocketMQ 并在基于 DDD 分层结构的 SpringBoot 工程中使用 RocketMQ 技术。因为大部分 MQ 的发送都是基于特定业务场景的,所

    2024年02月12日
    浏览(73)
  • selenium 重构-----代码分层优化

    通过对上一篇文章中脚本的观察发现,上面的代码将函数和其他测试代码放在同一个文件中。随着自动化测试的深入,测试的内容和范围会逐步增加,这样的编码方式,不利于提高代码的可扩展性和可维护性。 上一篇文章:对selenium中元素定位方法进行重构再封装 为了更好的

    2024年01月19日
    浏览(35)
  • 图像处理-比特平面分层和重构

    像素是由比特组成的数字。例如在256级灰度图像中,每个像素的灰度是由8比特(一个字节)组成。如下图所示,一幅8比特图像由8个1比特平面组成,其中平面1包含图像中所有像素的最低阶比特,而平面8包含图像中所有像素的最高阶比特。 比特平面分层原理: 设图像矩阵为

    2024年02月13日
    浏览(42)
  • 【Linux】相关背景及环境搭建

    前言: 认识 Linux, 了解 Linux 的相关背景,学会如何使用云服务器,掌握使用远程终端工具 xshell 登陆 Linux 服务器 Linux 是一种开源的类 UNIX 操作系统内核,最早由芬兰的林纳斯·托瓦兹(Linus Torvalds)在1991年创建。而UNIX 是一种多用户、多任务操作系统,是操作系统领域的经典

    2024年01月22日
    浏览(38)
  • 【初识Linux】:背景介绍以及环境搭建

    朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux的基础知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏: C语言:从入门到精通 数据结构专栏: 数据结构 个  人  主  页 : stackY、 目录 1. Linux背景介绍    

    2024年02月06日
    浏览(33)
  • .net core 生成项目时.json配置文件没有复制到输出目录

    在程序运行时默认加载.exe文件同文件夹下的配置文件,而不是项目中的.json配置文件,所以需要把.json配置文件设置到自动生成目录,即下图所示:

    2023年04月13日
    浏览(55)
  • Maven环境搭建及Maven部分目录分析

    Maven 本身就是⼀套由 Java 开发的软件,所以 Maven 的运⾏需要依赖 JDK 环境。在安装 Maven 之前请 确认JDK 是否配置正确(主要依赖 JAVA_HOME 环境变量)。如果没有正确安装和配置 JDK ,则运⾏ Maven 时 会出现以下错误信息:          The JAVA_HOME environment variable is not defined correct

    2024年01月20日
    浏览(36)
  • C#/.NET6项目的搭建

    目录 一.下载Visual Studio: 二.下载.NET6的SDK文件: 三:下载Visual Studio Code: 四.新建一个项目  1.根据自己的需求选择项目类型  2.项目的启动​编辑 五.创建MVC项目   1.项目结构 1.文件配置信息: 2.根目录 存储着静态文件: 3.启动项:  4.MVC三层: Controllers appsettings.json Prog

    2024年02月04日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包