目前还差最后一小步,就是在HandleAsync中,将CustomerCreatedEvent对象的数据序列化并保存到数据库中。当然这也不难,同样可以考虑使用Dapper,或者直接使用ADO.NET,甚至使用比较重量级的Entity Framework Core,都可以实现。那就在此将这个问题留给感兴趣的读者朋友自己搞定啦。
小结到这里基本上本文的内容也就告一段落了,回顾一下,本文一开始就提出了一种相对简单的消息系统和事件驱动型架构的设计模型,并实现了一个最简单的事件总线:PassThroughEventBus。随后,结合一个实际的ASP.NET Core Web API案例,了解了在RESTful API中实现事件消息派发和订阅的过程,并实现了在事件处理器中,对获得的事件消息进行处理。
然而,我们还有很多问题需要更深入地思考,比如:
如果事件处理器需要依赖基础结构层组件,依赖关系如何管理?组件生命周期如何管理?
如何实现基于RabbitMQ或者Azure Service Bus的事件总线?
如果在数据库更新成功后,事件发送失败怎么办?
如何保证事件处理的顺序?
等等。。。在接下来的文章中,我会尽力做更详细的介绍。
源代码的使用本系列文章的源代码在https://github.com/daxnet/edasample这个Github Repo里,通过不同的release tag来区分针对不同章节的源代码。本文的源代码请参考chapter_1这个tag,如下:
接下来还将会有chapter_2、chapter_3等这些tag,对应本系列文章的第二部分、第三部分等等。敬请期待。