• Stars
    star
    677
  • Rank 66,694 (Top 2 %)
  • Language
    C#
  • License
    MIT License
  • Created about 6 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🙌 ASP.NET Core 3.1 应用, 包含 DDD、CQRS、EDA 和ES事件回溯

一个基于 DDD 领域驱动设计 + CQRS 命令查询职责分离 的 .net core 框架,完全开源,并且有博客教程,地址在下边。 本项目我是借鉴了 https://github.com/EduardoPires/EquinoxProject 来讲解的,请支持原作者!因为他没有文档,所以我就写了这个系列。


给个星星! ⭐️

如果你喜欢这个项目或者它帮助你, 请给 Star~(辛苦星咯)

Tips

连接字符串统一在web层下的appsettings.json,
DefaultConnection_file文件里的内容,就是DefaultConnection字符串。

  /*
    * mysql和sqlserver的迁移操作步骤一致,不过本项目的迁移文件已经迁移好,在Data文件夹下:
    * msql使用MigrationsMySql文件夹下的迁移记录,卸载/删除另一个Migrations文件夹
    * sqlserver使用Migrations文件夹下的迁移记录,卸载/删除另一个MigrationsMySql文件夹
    * 
    * 当然你也可以都删掉,自己重新做迁移。
    * 
    一、迁移项目1(一定要切换到 Christ3D.Infrastruct 项目下,使用 Package Manager Console):
      1、add-migration InitStudentDbMysql -Context StudyContext  -o MigrationsMySql
      2、add-migration InitEventStoreDbMysql -Context EventStoreSQLContext -o MigrationsMySql/EventStore
      3、update-database -Context StudyContext
      4、update-database -Context EventStoreSQLContext
    二、迁移项目2【弃用,因为现在是使用IdentityServer4】(一定要切换到 Christ3D.Infrastruct.Identity 项目下,使用 Package Manager Console):
      1、add-migration InitIdentityDbMysql -Context ApplicationDbContext -o Data/MigrationsMySql/ 
      2、update-database -Context ApplicationDbContext

   */

知识点

1、概念篇

实体对象:具有唯一标识,能单独存在且可变化的对象
值对象:不能单独存在或在逻辑层面单独存在无意义,且不可变化的对象
聚合:多个对象的集合,对外是一个整体
聚合根:聚合中可代表整个业务操作的实体对象,通过它提供对外访问操作,它维护聚合内部的数据一致性,它是聚合中对象的管理者

2、结构篇

(图片来源于网络)

三大平台同步直播

博客园:https://www.cnblogs.com/laozhang-is-phi/p/9806335.html

简 书:https://www.jianshu.com/c/fe7dd7fc5372

码云:https://gitee.com/laozhangIsPhi/ChristDDD


目录:


主要的流程图,在下边的图中可以体现:

流程图1

流程图2

流程图3

系统环境

  windows 10、SQL server 2012、Visual Studio 2017、Windows Server 2008 R2、Linux Ubuntu、

开发环境

  Visual Studio 15.3+、.NET Core SDK 2.0+、

1、知识点(补充中)

    ASP.NET Core 2.1.2  👉基本框架
    ASP.NET MVC Core  👉实现mvc web页面
    ASP.NET WebApi Core  👉实现 api 接口
    ASP.NET Identity Core  👉身份验证
    Entity Framework Core 2.0  👉实现ORM数据持久化
    Dapper (待定)
    .NET Core 原生 DI  👉实现依赖注入
    AOP  👉面向切面
    Autofact(待定)IoC
    AutoMapper  👉实现Dtos
    FluentValidator验证
    Swagger UI  👉实现接口文档展示
    MediatR  👉基于内存级别的消息发布订阅
    Azure  👉云服务发布

2、特性(补充中)

    领域驱动设计(Domain Driven Design (Layers and Domain Model Pattern)
    命令查询职责分离(CQRS:Command Query Responsibility Segregation)
    领域通知 (Domain Notification)
    领域驱动 (Domain Events)
    事件驱动架构 (EDA)
    事件回溯 (Event Sourcing)
    最终一致性 (Eventually Consistent)
    工作单元模式 (Unit of Work )
    泛型仓储 (Repository and Generic Repository)

编者按: 1、本项目我是借鉴了 https://github.com/EduardoPires/EquinoxProject 来讲解的,请支持原作者!因为他没有文档,所以我就写了这个系列。 2、可能你会说我是抄袭,但是我自己写的时候,结构不是这样的,我当时是按照下边写的(如果你和我下边的分层一样,那就证明我不是瞎说的了):

应用层:除了Service和IService、DTO、还有使用 CQRS 方法的查询、接受的命令,事件驱动的通信(集成事件),但是没有业务规则;

领域(模型)层:这里主要放的是领域实体、值对象、聚合和事件模型、Bus等主要都是模型,非贫血;

基础层:就是ORM的持久化相关;

U I 层:显示页面;

不过我写的时候感觉各层之间凌乱,不适合初学者学习,所以就想着要改变一下,找一个清晰明了的,对比了Git上的各种大神结构,偶然发现了EduardoPires的代码,感觉很清晰,就按照他这个来了。 说白了,就是把CQRS读写分离和事件驱动全部放到领域层了,然后又提炼出来一个领域核心Doman.Core层。

More Repositories

1

Blog.Core

💖 ASP.NET Core 8.0 全家桶教程,前后端分离后端接口,vue教程姊妹篇,官方文档:
C#
4,983
star
2

Blog.Admin

✨ 基于vue 的管理后台,配合Blog.Core与Blog.Vue等多个项目使用
Vue
707
star
3

Blog.Vue

☘ 一个vue的个人博客项目,配合.net core api教程,打造前后端分离
Vue
484
star
4

Blog.IdentityServer

🥗 打造一个功能强大的通用型Ids4用户认证授权服务中心,配合之前的所有开源项目
C#
479
star
5

Student.Achieve.Manager

🎨学生教学教务管理系统:NetCore 3.1 + Vue + EleUI,(star100+,优化多表联查+录制视频+)
C#
406
star
6

BlogArti

这里是将 NetCore 后端项目Blog.Core 进行拆分的多个子Demo,方便各个击破
C#
110
star
7

Blog.Data.Share

必要使用的数据分享
105
star
8

BCVP.Net8

ASP.NET8.0入口与实战系列视频教程 配合代码
C#
101
star
9

Nuxt.tBug

🍓 一个Nuxt.js 的项目,收集前后端分离中出现的各种Bug,方便大众
Vue
80
star
10

ancba

⛳【多模块微服务脚手架平台——Ancba】前后端分离架构SpringBoot 2.x、SpringCloud、SpringAdmin、Spring Security、Mybatis-plus、(Shiro)、JWT、Feign、Nacos、Knif4j、Zipkin、Sleuth等。
Java
43
star
11

Blog.MVP.Blazor

一个基于Blazor的案例项目,配套blog.idp认证,与blog.core微服务
HTML
37
star
12

EgtDemo

视频地址:https://www.bilibili.com/video/BV1vC4y1p7Za
C#
31
star
13

eShopOnContainersAs

❤该项目是微软的微服务架构eShopOnContainers代码,我这里汉化了下,并配套视频讲解,源地址是:https://github.com/dotnet-architecture/eShopOnContainers
C#
26
star
14

NetCore-Sugar-Demo

一个NetCore的数据库操作微小Demo;支持Seed数据库,支持表的CURD;
C#
25
star
15

DesignPattern

23种设计模式相关资料代码,同步文章更新中
C#
22
star
16

Blog-EFCore-Sqlite

基于 EFCore + Sqlite 的NetCore仓储项目,可以快速进行简单开发
C#
19
star
17

BlogCoreTempl

Batchfile
17
star
18

Blog.Admin.Pro

Blog.Admin的高级版,使用Andv开发框架
Vue
15
star
19

Video2_Demo

视频讲解相关代码
C#
12
star
20

Blog.Live

直播教学中的代码
C#
12
star
21

Blog.Core.Teach

Blog.Core框架视频讲解,随堂代码
HTML
12
star
22

Blog.Vue.Nuxt

基于 nuxt.js 框架开发的个人博客(SSR服务端渲染)
Vue
10
star
23

Blog.SplRepository.Demo

一个基于NetCore + SqlSugar 的简单仓储框架,CURD + DI + Seed等等
C#
8
star
24

blog-spring

Java
7
star
25

Blog.Core2.0

ASP.NET Core 2.0版本,停止维护 应用,前后端分离 后端接口
C#
7
star
26

blogspring

搭建blog授权认证下的springboot示例项目
Java
4
star
27

anjoy8

4
star
28

DjHelss

使用python之django框架搭建微服务子服务
Python
3
star
29

SparrowPlatform

一个使用Azure的小NetCore平台 —— 麻雀
C#
3
star
30

AZLinli.com

C#
3
star
31

Blog.Core.E-Book

BlogCore官方文档电子书库
2
star
32

MVC-Vue

MVC 下 使用 vue 的 Demo —— todolist
C#
2
star
33

Blog.Admin.Ant

基于T Design升级Blog.Admin项目
2
star
34

SpringFarSoft

SpringFarSoft
1
star
35

leetcode

Java
1
star