当你在学习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
若有收获,就点个赞吧