分享一個基於.NET6包含DDD,ES,CQRS等概念的開源專案

語言: CN / TW / HK

當你在學習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

若有收穫,就點個贊吧