分享一个基于.NET6包含DDD,ES,CQRS等概念的开源项目

8122dc29901a54f511b534554d88b6fd.png

当你在学习DDD、CQRS或时间溯源时,除了大量的学习资源(比如书籍和文章)之外,你还接触到了许多概念,这些资源只是在讨论理论问题。这很好,我们知道他们在说什么,但我们如何在一个真正的项目中使用他们呢?我们如何实现这些目标呢?

当您试图获取一些代码示例时,通常会发现一些简单的示例通过在仅包含一个实体的域中移动来演示这些复杂的概念,而该域通常包含一个实体,而该实体通常是消费者。

这些都是很好的例子,但是如果我们想在一个实际的应用程序项目中遵循它们,许多问题会引起我们的困惑!因为现实世界的挑战!

  • 我们如何验证 X 以及在哪里验证?

  • 我们如何从多个实体收集复杂的数据?

  • X 在架构中的最佳位置在哪里?为什么?

还有许多其他问题,这些也是我的问题!

所以,如果你没有人问你的问题,也许你需要通过深入研究源代码来发现答案,它为你的挑战提供了一些解决方案。

但是没有多少开源项目可以让你深入研究,你会发现自己在为一个以上的源代码而挣扎,甚至会让你更加困惑。因为每个项目在某些概念上都有自己的方法。

所以,在克服了所有这些挑战之后,我决定制定一个独特的解决方案,现在我想谈谈TaskoMask!

什么是TaskoMask?

TaskoMask 是一个基于 .Net 的免费开源任务管理系统。你可以在 GitHub 上浏览它的源代码,每个人都可以作为团队成员或项目所有者使用它。但是这个项目的主要目标是展示我们如何通过以下方式清晰地实现软件技术和模式。因此,开发人员可以使用它来寻找具有真正挑战的真实示例项目。

源代码功能

这是项目涵盖的项目列表,我们尽量保持最新。

后端:

  • .Net 6

  • C#

  • ASP.NET Web API

  • ASP.NET MVC

  • MongoDB

  • Redis

  • MediatR

  • AutoMapper

  • FluentValidation

  • Swagger

  • Serilog

  • Seq

  • xUnit with FluenAssertion and Moq

  • MvcPagedList.Core

  • RedisCache.Core

前端 :

  • Blazor

    • Blazor Server

    • Cookie Authentication without ASP.NET Identity

    • Working with APIs protected by JWT

    • Comunication between components by messages

  • .HTML

  • CSS

  • Java Script

  • JQuery

  • Bootstrap

  • Jquery.noty

  • Chart.js

模式、方法论、方法:

  • Onion Architecture

  • Unit Testing

  • DDD

    • Rich Domain Model (for core domain)

    • Anemic Domain Model (for less important subdomains)

    • Aggregate

    • Value Object

    • Domain Event

    • Domain Service

    • Always Valid Domain Model

    • Invariants

    • Specification

    • Factory Method

    • Optimistic Concurrency

    • Separate Domain Model and Data Model

  • CQRS

    • Separate Read and Write Model

    • Separate Read Side DB and Write Side DB

  • Event Sourcing

  • Repository

  • Notification

一些技术特点:

  • 使用管道模式缓存行为

  • 使用管道模式进行验证( Fluent Validation 和 Data Annotation Validation)

  • 使用流水线模式存储事件

  • 域和应用程序异常处理程序

  • 内存总线

  • Cookie 身份验证

  • Jwt认证

  • 没有 ASP.NET 身份认证的的角色权限基础用户管理

  • 支持 JWT 的 Swagger UI

文档

该项目有一些好的文档更有用,它有助于更多地了解架构、管道、域等。您可以在 GitHub 上的wiki页面中看到它们:

  • 用户指南文档

  • 域文档

  • 建筑文档

  • REST API 文档

翻译自:https://medium.com/@hamed.shirbandi/real-world-open-source-project-based-on-ddd-es-cqrs-af261cc24353

若有收获,就点个赞吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React Native之通过createStackNavigator实现携带参数的页面与页面之间的跳转

1 实现的功能 在网上看React Native文档,我特码就想实现一个页面到另外一个页面的跳转,然后另外一个页面怎么获取参数,特么没找到一个说清楚的,要么太复杂,要么说了不理解,下面是我自己写的一个App.js文件,实现一个Home页面跳到另外Details页面,并且携带了参数怎么在Details页…

google浏览器插件 开发 获取页面指定数据_程序员必备的4款Chrome插件,编程神器...

一直有粉丝留言,想要大侠推荐几款程序员使用的插件,大侠特意去问了隔壁的程序员哥哥,终于被我问出了这4款编程神器!这4款插件不仅仅是提高效率那么简单哦,还可以让你的Chrome浏览器变得高端大气,一起来看看…

MATLAB多元非线性回归

解释变量:商品价格(x1)人均月收入(x2),被解释变量:商品需求量(y),进行二元回归分析,并进行检验 商品价格(元/件) 月收入(元) 需求(件) 89 …

.NET高级调试 | 通过JIT拦截无侵入调试 C# Emit 生成的动态代码

大家还记得上一篇的测试代码吗?我们用了:Console.WriteLine("Function Pointer: 0x{0:x16}", Marshal.GetFunctionPointerForDelegate(addDelegate).ToInt64());来获得 委托 的 函数指针 地址,通过这个突破口最终实现了 动态代码 的…

使用IAR开发CC2530遇到的两个问题

2019独角兽企业重金招聘Python工程师标准>>> 首先说明,IAR for 8051为7.51版本,操作系统为windows7 32位。 上手CC2530,在IDE的使用上就遇到了2个问题。 一个是用SmartRF Programmer Flash下载HEX文件不成功,提示说cou…

openssh登陆时提示服务器拒绝了密码

升级openssh7.5后,登陆报错按照网上的说法是不允许root用户登陆但是,/etc/ssh/sshd_config 已经写入PermitRootLogin yes解决方法:设置/etc/sysconfig/selinux 中的SELINUXdisabled然后重启就OK了转载于:https://blog.51cto.com/adamcrab/194…

Blazor University (10)组件 — 捕获意外参数

原文链接&#xff1a;https://blazor-university.com/components/capturing-unexpected-parameters/捕获意外参数源代码[1]之前我们已经看到了如何使用特定名称声明参数和级联参数。例如&#xff0c;一个将 <img> 元素包装在一些自定义 HTML 中的自定义组件。<div cla…

React Native之最构建对象通过构造方法传递值然后再获取值

1 问题 在一个文件构建一个对象,然后在另外一个文件里面new这个对象,通过构造方法传递参数,然后再获取这个参数 2 测试代码 Student.js文件如下 use strict;import React from reactimport {NativeModules, NativeEventEmitter, DeviceEventEmitter,Alert} from react-nativ…

.NET点滴:SpanT

昨天小桂问了一个问题&#xff0c;把一个数组的全部元素加1&#xff0c;有什么好办法&#xff0c;于是有了下面的分析&#xff1a;var arr new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; //方法一 foreach (var i in arr) {i; } //方法二 for (var i 0; i < arr.Length; i) {…

React Native之通过DeviceEventEmitter发送和接收事件

1 怎么实现发送和接收事件 理论上封装了Android原生广播的代码,需要注册和反注册,这里用DeviceEventEmitter实现 //增加监听 DeviceEventEmitter.addListener //取消监听 //this.emitter.remove(); 这里可也可以通过安卓原生向页面js发送消息,可以参考我的这篇博客 React Nat…

navicat循环执行上下两行相减sql语句_SQL太难?你离完全理解SQL就差这10步!

- 点击上方“中国统计网”设置⭐星标不迷路&#xff01;-很多程序员视 SQL 为洪水猛兽。SQL 是一种为数不多的声明性语言&#xff0c;它的运行方式完全不同于我们所熟知的命令行语言、面向对象的程序语言、甚至是函数语言(尽管有些人认为 SQL 语言也是一种函数式语言)。我们每天…

mysql游标书写_mysql中光标如何书写

mysql中光标书写的方法&#xff1a;首先声明光标&#xff1b;然后开启光标&#xff0c;代码为【OPEN cursor_name】&#xff1b;接着捕获光标&#xff1b;最后关闭光标&#xff0c;代码为【CLOSE cursor_name】。本教程操作环境&#xff1a;windows7系统、mysql5.8版&#xff0…

上海女白领吃火锅碰瓷,支付宝口碑居然真的要赔?

昨天中午&#xff0c;新闻晨报在微博上发出一条新闻&#xff1a;上海一位汪小姐吃火锅的时候&#xff0c;因用支付宝口碑扫码中了一个999元大红包&#xff0c;结果因为太激动手机不小心掉进油汤里&#xff0c;捞出来以后开不了机了。关键是这位小姐觉得这是口碑和商家活动导致的…

ASP.NETCore统一处理404错误都有哪些方式?

当未找到网页并且应用程序返回 404 错误时&#xff0c;ASP.NET Core MVC 仅呈现通用浏览器错误页面&#xff0c;如下图所示这不是很优雅&#xff0c;是吗&#xff1f;我们平时看到的404页面一般是这样的还有这样的试了下京东&#xff0c;地址不存在的时候是会重定向到首页下面就…

React Native之组件(Component)生命周期学习笔记

1、Component介绍 一般Component需要被其它类进行继承&#xff0c;Component和Android一样&#xff0c;也有生命周期 英文图片如下 2 具体说明 1)、挂载阶段 constructor() //构造函数,声明之前先调用super(props) componentWillMount()//因为它发生在render()方法前&…

基于junit4的关于个人所得税计算的等价类与边界值_《边界值分析》-有这篇就够了...

目录&#xff1a;定义&#xff08;What&#xff09;为什么使用该方法&#xff1f;&#xff08;Why&#xff09;如何选定边界值&#xff1f;&#xff08;How&#xff09;设计测试用例根据测试用例的完整性划分边界的分类使用场景实战演练边界值分析的优缺点特殊值测试边界值分析…

【Envi风暴】ENVI中求两幅遥感影像的相关性(相关系数)

相关性,是指两个变量的关联程度。一般地,从散点图上可以观察到两个变量有以下三种关系之一:两变量正相关、负相关、不相关。如果一个变量高的值对应于另一个变量高的值,相似地,低的值对应低的值,那么这两个变量正相关。在土壤中,孔隙率和渗透度就具有典型的正相关。反之…

(三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录

. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录 (四) 一起学 Unix 环境高级编程 (APUE) 之 系统数据文件和信息 (五) 一起学 Unix 环境高级编程 (APUE)…

C# StreamReader类和StreamWriter类

先看看 StreamReader&#xff0c;将前面的示例转换为读取文件以使用 StreamReader。它现在看起来容易得多。StreamReader 的构造函数接收FileStream。使用 EndOfStream 属性可以检查文件的末尾&#xff0c;使用ReadLine 方法读取文本行&#xff1a;public static void ReadFile…

DIV+CSS列表式布局(同意图片的应用)

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">2 <html xmlns"http://www.w3.org/1999/xhtml">3 <head>4 <!--gbk,gb2312 中文-->5 &…