跳转到内容

MiCake 简介

MiCake 是一个基于 .NET 开发的轻量级领域驱动设计(DDD)工具。它旨在帮助开发者快速将现有项目转换为 DDD 风格,同时保持代码的简洁性和灵活性。

MiCake 不是一个传统意义上的”框架”,而是一个便利的”工具”。它提供了实践 DDD 所需的各种组件和工具,但不会强制改变你的开发习惯。

快速将您的项目转换为 DDD 风格,让您更专注于领域代码的编写,而不是框架的配置。通过简单的配置和少量代码,即可将现有项目升级为 DDD 架构。

实现了 DDD 战术模式提出的几乎所有核心部件:

  • 实体(Entity):具有唯一标识的领域对象
  • 值对象(Value Object):通过属性值进行比较的不可变对象
  • 聚合根(Aggregate Root):聚合的根实体,作为外部访问的入口
  • 仓储(Repository):提供聚合根的持久化操作
  • 领域事件(Domain Event):捕获领域中发生的重要事件
  • 领域服务(Domain Service):封装不属于实体或值对象的领域逻辑
  • 工作单元(Unit of Work):管理业务事务和数据一致性

提供项目开发常用的基础功能:

  • 全局异常处理:统一的异常捕获和处理机制
  • 统一数据返回格式:标准化的 API 响应结构
  • 自动审计功能:自动记录实体的创建和修改时间
  • 软删除支持:逻辑删除实体而非物理删除
  • 依赖注入增强:简化服务注册和生命周期管理
  • 丰富的工具集:缓存、转换器、查询、弹性等实用工具

“轻柔”是 MiCake 的核心设计理念:

  • 非侵入式:无感融入现有项目,不改变你的编程习惯
  • 低耦合:框架代码与业务代码清晰分离
  • 可选使用:不强制使用 DDD,可以逐步引入
  • 几乎无感:当你不使用 DDD 特性时,甚至感觉不到它的存在

MiCake 在设计之初就被定位为 “很薄的一层”

设计理念 描述
非侵入式 MiCake 包裹你的 .NET 项目但并不干扰。你仍然可以使用原有的编程习惯、熟悉的类库和工具。它不会强制你采用特定的编码风格或架构模式。
自由无约束 MiCake 不会约束你的开发风格。它只是提供工具和组件,让你可以选择性地使用。你可以部分使用 MiCake 的功能,也可以与其他框架和库自由组合。
不是 DDD MiCake 本身不是 DDD,它只是让你更好地践行 DDD。DDD 是一套方法论,而 MiCake 是实践这套方法论的工具。你需要理解 DDD 的概念才能更好地使用 MiCake。
渐进式采用 你可以从最简单的功能开始,逐步引入更多的 DDD 特性:
1. 首先使用模块系统和依赖注入
2. 然后引入实体和仓储
3. 接着逐渐完善你的领域模型

MiCake 特别适合以下场景:

适用场景 特点
新项目开发 - 希望使用 DDD 方法构建新的 .NET 应用
- 需要快速搭建具有清晰架构的项目
- 团队熟悉或希望学习 DDD
现有项目重构 - 希望将现有项目逐步重构为 DDD 风格
- 需要改善代码的可维护性和可测试性
- 想要引入更好的业务逻辑组织方式
中小型企业应用 - 复杂度适中的业务系统
- 需要良好的架构但不想引入重量级框架
- 希望保持技术栈的灵活性
学习和实践 DDD - 学习领域驱动设计的概念和实践
- 需要一个轻量级的 DDD 参考实现
- 希望在实际项目中应用 DDD
  • .NET Core 10.0 及以上版本
  • Visual Studio Code(推荐)
  • Visual Studio 2026 及以上版本

MiCake 作为一个轻量级工具包,对性能的影响微乎其微:

  • 最小运行时开销:核心抽象基于接口,JIT 优化效果好
  • 按需加载:模块化设计,只加载使用的功能
  • 无反射滥用:关键路径避免使用反射
  • 内存友好:合理的对象生命周期管理
  • 问题反馈:通过 GitHub Issues 提交 Bug 或功能建议
  • 讨论交流:GitHub Discussions 讨论使用问题
  • 技术博客:关注作者博客了解最新进展

我们欢迎社区贡献!你可以:

  • 提交 Pull Request 改进代码
  • 完善文档和示例
  • 分享使用经验和最佳实践
  • 帮助回答其他用户的问题

MiCake 遵循语义化版本规范(SemVer):

  • 主版本号:不兼容的 API 变更
  • 次版本号:向下兼容的功能新增
  • 修订号:向下兼容的问题修复

当前版本支持 .NET 10.0+,未来将持续跟进 .NET 新版本。