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