目录
需求目标原理与思路CQRS模式中介者Mediator模式MediatR实现引入MediatR实现Post请求验证创建TodoList验证创建TodoItem验证总结参考资料需求
需求很简单:如何创建新的TodoList和TodoItem并持久化。
初学者按照教程去实现的话,应该分成以下几步:创建Controller并实现POST方法;实用传入的请求参数new一个数据库实体对象;调用IRepository<T>完成数据库的写入,最多会在中间加一层Service。这个做法本身没有问题,也是需要从初学阶段开始扎实地掌握开发技能的必经之路,有助于帮助理解逻辑调用的过程。
对于稍微正式一些的项目,.NET工程上习惯的实现是通过使用一些比较成熟的类库框架,有效地对业务逻辑进行分类管理、消除冗余代码,以达到业务逻辑职责清晰简洁的目的。在这个阶段我们经常使用的两个类库分别是AutoMapper和MediatR,本文结合POST请求,先介绍关于MediatR部分,下一篇关于GET请求,会涉及AutoMapper的部分。
目标
合理组织并使用MediatR,完成POST请求。
原理与思路
首先来简单地介绍一下这个类库。
关于CQRS模式、中介者模式和MediatR
CQRS模式
CQRS模式全称是“Command Query Responsibility Segregation”,正如字面意思,CQRS模式的目的在于将读取操作和写入操作的指责区分开,并使用不同的Model去表示。从CRUD的角度来说,就是把R和CUD区分开来对待。如下图所示:
eturn createdTodoItem.Id; }}
验证
运行Api项目,通过Hoppscotch发送对应接口请求aJBVamn:
创建TodoList验证
请求

返回

数据库

第一条数据是种子数据,第二条是我们刚才创建的。
创建TodoItem验证
继续拿刚才创建的这个TodoList的Id来创建新的TodoItem:
请求

返回

数据库

最后一条是我们新创建的,其余是种子数据。
总结
我们已经通过演示在POST请求中实现MediatR库带来的CQRS模式,在这篇文章里我留了一个坑。就是领域事件的Handler并没有任何演示,只是创建了一个文件夹,结合在这篇文章中留下来的发布领域事件的坑,会在DELETE的文章中填完。
看起来使用CQRS模式使得我们的代码结构变得更加复杂了,但是对于一些再复杂一些的实际项目中,正确使用CQRS模式有助于你分析和整理业务需求,并将相关的业务需求以及相关模型梳理到统一的位置进行管理,包括在后续的文章里我们会陆续向其中加入诸如入参校验、出参类型转换等逻辑。认真思考并运用习惯之后,大家可以自行体会这样做的“权衡”。
参考资料
MediatR
Mediator
以上就是.NET 6开发TodoList应用之使用MediatR实现POST请求的详细内容,更多关于.NET 6 MediatR实现POST请求的资料请关注我们其它相关文章!








