面向 ASP.NET Core 的 Clean Architecture 解决方案模板,划分 Core、用例、基础设施和 Web 等项目。
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,并未提供实现。
收录于专题
标签
常见问题
- 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 数据每日更新。
相关项目
基于 ASP.NET Core 的开源应用框架,提供领域驱动设计、模块化与多租户等企业级开发基础设施。
面向软件架构的文档工具,用于整理领域、服务、事件、消息和Schema,供团队与AI代理查阅。
一个用 Kotlin 编写的 Android 参考应用,展示 Clean Architecture、模块化功能设计与 Gradle 约定插件的实践。
基于 PlantUML 的 C4 模型宏库,用纯文本代码绘制软件架构图。
一个 AI 编程代理技能,让代理在改代码前把项目架构、约束和改动范围画成 HTML 图,经确认后再实施。