分享一个基于.NET6包含DDD,ES,CQRS等概念的开源项目
當你在學習DDD、CQRS或時間溯源時,除了大量的學習資源(比如書籍和文章)之外,你還接觸到了許多概念,這些資源只是在討論理論問題。這很好,我們知道他們在說什么,但我們?nèi)绾卧谝粋€真正的項目中使用他們呢?我們?nèi)绾螌崿F(xiàn)這些目標呢?
當您試圖獲取一些代碼示例時,通常會發(fā)現(xiàn)一些簡單的示例通過在僅包含一個實體的域中移動來演示這些復雜的概念,而該域通常包含一個實體,而該實體通常是消費者。
這些都是很好的例子,但是如果我們想在一個實際的應用程序項目中遵循它們,許多問題會引起我們的困惑!因為現(xiàn)實世界的挑戰(zhàn)!
我們?nèi)绾悟炞C X 以及在哪里驗證?
我們?nèi)绾螐亩鄠€實體收集復雜的數(shù)據(jù)?
X 在架構中的最佳位置在哪里?為什么?
還有許多其他問題,這些也是我的問題!
所以,如果你沒有人問你的問題,也許你需要通過深入研究源代碼來發(fā)現(xiàn)答案,它為你的挑戰(zhàn)提供了一些解決方案。
但是沒有多少開源項目可以讓你深入研究,你會發(fā)現(xiàn)自己在為一個以上的源代碼而掙扎,甚至會讓你更加困惑。因為每個項目在某些概念上都有自己的方法。
所以,在克服了所有這些挑戰(zhàn)之后,我決定制定一個獨特的解決方案,現(xiàn)在我想談談TaskoMask!
什么是TaskoMask?
TaskoMask 是一個基于 .Net 的免費開源任務管理系統(tǒng)。你可以在 GitHub 上瀏覽它的源代碼,每個人都可以作為團隊成員或項目所有者使用它。但是這個項目的主要目標是展示我們?nèi)绾瓮ㄟ^以下方式清晰地實現(xiàn)軟件技術和模式。因此,開發(fā)人員可以使用它來尋找具有真正挑戰(zhàn)的真實示例項目。
源代碼功能
這是項目涵蓋的項目列表,我們盡量保持最新。
后端:
.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)
使用流水線模式存儲事件
域和應用程序異常處理程序
內(nèi)存總線
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
若有收獲,就點個贊吧
總結
以上是生活随笔為你收集整理的分享一个基于.NET6包含DDD,ES,CQRS等概念的开源项目的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Task.Factory.StartNe
- 下一篇: asp.net ajax控件工具集 Au