MiCake 简介
什么是 MiCake?
Section titled “什么是 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 仓库:https://github.com/MiCake/MiCake
- 官方网站:https://micake.github.io/
- NuGet 包:搜索 “MiCake” 查看所有可用包
- 问题反馈:通过 GitHub Issues 提交 Bug 或功能建议
- 讨论交流:GitHub Discussions 讨论使用问题
- 技术博客:关注作者博客了解最新进展
我们欢迎社区贡献!你可以:
- 提交 Pull Request 改进代码
- 完善文档和示例
- 分享使用经验和最佳实践
- 帮助回答其他用户的问题
MiCake 遵循语义化版本规范(SemVer):
- 主版本号:不兼容的 API 变更
- 次版本号:向下兼容的功能新增
- 修订号:向下兼容的问题修复
当前版本支持 .NET 10.0+,未来将持续跟进 .NET 新版本。