- “快捷” —— 快速将您的项目转换为DDD风格,让您更专注于您的领域代码。
- “规范” —— 实现了DDD战术模式提出的几乎所有部件,便于使用领域驱动思想来规范项目。
- “方便” —— 提供项目常用的基础功能(全局异常处理,数据格式化等),便于快速构建项目。
- “灵活” —— 通过模块进行解耦,您可以根据自身需求使用特定的MiCake模块。
- “轻柔” —— 无感的融入现有的项目,甚至感觉不到它的存在。
MiCake
(中文名我更喜欢叫它为“米蛋糕”😜)是基于 .Net Standard
所开发的领域驱动设计(DDD)工具包。
您只需要通过 NuGet
包安装它,并且编写非常少量的代码就能快速使您的项目转变为DDD风格。
它提供了DDD战术模式中的大部分部件,比如聚合根、实体、值对象、领域服务等等,通过这些部件建立您的“领域对象”,将开发重心放在领域层中,其它大部分的交互逻辑都将由MiCake
来帮您完成。
“轻柔”的“组件”? MiCake
在设计之初就被定位为“很薄的一层”,它包裹 .NET
项目但并不干扰,您仍然可以使用原有的编程习惯进行开发。
当不使用DDD
风格时,您甚至都感觉不到它的存在。它很轻,轻到可以忽略;它不是一个“框架”,不会约束您的开发风格;它不是DDD
,它只是让您更好的践行DDD
。
MiCake
的核心是提供领域驱动设计(DDD)的功能,但同时还提供了其它的扩展功能便于您更快速的构建出应用程序:比如依赖注入、自动审计、全局异常处理等等功能。
- .NET Core 3.0及以上版本
- Visual Studio 2019
在您的Asp Net Core
项目中通过NuGet
安装MiCake.AspNetCore.Start
:
Install-Package MiCake.AspNetCore.Start
新增一个叫做MyEntryModule.cs
的文件,该类的作用是告诉MiCake
该从哪个程序集启动:
public class MyEntryModule : MiCakeModule
{
}
将您的DbContext继承自MiCakeDbContext
:
public class MyDbContext : MiCakeDbContext
{
public MyDbContext(DbContextOptions options) : base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
//不要删除该行代码
base.OnModelCreating(modelBuilder);
}
}
在Startup.cs
中添加MiCake
服务:
public void ConfigureServices(IServiceCollection services)
{
………………
//添加该代码 用于配置MiCake
services.AddMiCakeWithDefault<MyDbContext, MyEntryModule>()
.Build();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
…………
//添加该代码 用于启动MiCake。确保该代码位于UseEndpoints之前
app.StartMiCake();
app.UseEndpoints(…………);
}
是的,就是如此简单。AddMiCakeWithDefault
是MiCake
所提供的基础使用方案,您可以通过查阅文档来获取更丰富的使用方法。
文档中心提供了一篇《Wiki - 搭建起步程序》来介绍如何使用MiCake
,也许您可以从中获取一些帮助。
点击跳转至:文档中心。
您可能会对大量的文字教程而感到枯燥,因此我们提供了以下的几个演示项目供您参考:
- 预约星 (Coming Soon)
- 旅人帐 (Coming Soon)
MiCake.Samples
仓库中放置了一些MiCake
所公开的示例项目和实验性项目,您可以跳转至该仓库进行查阅.
更多:请跳转至NuGet官网,进行查阅。
如果您有什么好的想法和观点,欢迎通过 Pull Request 进行贡献,或通过 提交 issues 来反馈您在使用过程中所发现的BUG。( 期待得到您的反馈~ 🌻🌻)
如果您喜欢关于 .NET
方面的内容,或者对领域驱动很感兴趣,欢迎您关注我的博客:句幽的博客。您可以通过博客园内的站内短消息来与我沟通有关编程方面的问题。
如果您愿意与我沟通一些其它方面(非编程方向)的事情,欢迎添加QQ好友。🌻🌻
备战 .NET 5
。冲鸭!! 🐣