Repolode
evolutionary-architecture

evolutionary-architecture/evolutionary-architecture-by-example

一个基于 .NET 9 的分步示例项目,演示健身房系统如何从单体逐步演进为模块化单体、微服务并应用战术 DDD。

Star
3,576
Fork
551
未关闭 Issue
15
最近提交
12天前

这是什么?

Evolutionary Architecture by Example 是一个面向 .NET 软件架构的教学仓库。它以虚构的健身房应用 Fitnet 为主线,分为四个章节:从一个结构清晰的单项目开始,将模块拆分为各自合适的项目,抽取第一个微服务并引入真正的消息队列,最后应用战术领域驱动设计,包括值对象、聚合和领域事件。

仓库同时涵盖战略层面的内容,例如借助 Event Storming 和 Domain Storytelling 将领域拆分为子域、定义限界上下文,并判断每个模块需要多少架构复杂度。每个章节都附有独立说明和交互式图表,架构决策记录在决策日志中。

代码使用 C# 与 .NET 9 编写,采用 Minimal API,并使用 MediatR、Dapper、Entity Framework、FluentValidation、.NET Aspire 和 Testcontainers 等库。前端选型、日志和契约测试则留给读者自行决定。

核心功能

  • 01通过四个章节,将同一代码库从单项目逐步演进为微服务架构
  • 02按模块复杂度拆分项目,而不是在所有地方套用同一种架构
  • 03涵盖基于 Event Storming 的领域拆分与限界上下文设计
  • 04演示值对象、聚合、领域事件等战术 DDD 概念
  • 05使用 C# 与 .NET 9,采用 Minimal API 和 MediatR

适用场景

  • 学习何时从单体演进到模块化单体或微服务
  • 研究如何在现有 .NET 项目中逐步引入 DDD
  • 为架构讨论准备一个具体且持续演进的示例
  • 探索如何在模块之间引入消息队列

使用前须知

  • 不包含前端,README 将前端技术选型留给读者。
  • 日志和契约测试需要读者自行实现,README 仅建议使用 Serilog 和 Pact Net,并未提供实现。

收录于专题

标签

#software-architecture#domain-driven-design#modular-monolith#microservices#dotnet#csharp#clean-architecture#architecture#architecture-components#architecture-decision-records

常见问题

evolutionary-architecture-by-example 是什么?
一个基于 .NET 9 的分步示例项目,演示健身房系统如何从单体逐步演进为模块化单体、微服务并应用战术 DDD。 Evolutionary Architecture by Example 是一个面向 .NET 软件架构的教学仓库。它以虚构的健身房应用 Fitnet 为主线,分为四个章节:从一个结构清晰的单项目开始,将模块拆分为各自合适的项目,抽取第一个微服务并引入真正的消息队列,最后应用战术领域驱动设计,包括值对象、聚合和领域事件。
evolutionary-architecture-by-example 可以免费使用吗?用的什么许可证?
evolutionary-architecture-by-example 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
evolutionary-architecture-by-example 还在维护吗?
活跃维护中。evolutionary-architecture-by-example 最近一次提交是在 2026年10月26日。
evolutionary-architecture-by-example 适合用来做什么?
学习何时从单体演进到模块化单体或微服务 研究如何在现有 .NET 项目中逐步引入 DDD 为架构讨论准备一个具体且持续演进的示例 探索如何在模块之间引入消息队列
在哪里获取 evolutionary-architecture-by-example?
源代码和安装说明在 GitHub 上:https://github.com/evolutionary-architecture/evolutionary-architecture-by-example

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目