引言
在Microsoft推出的《CQRS Journey》一书中提到了工具MIL(Messaging Intermediate Language),它采取消息驱动的方式,用于描述对象间的交互场景。
本文就其基本语法进行了简要整理(已根据个人习惯稍作更改)。
Command与Event
用?
标记Command。在Command及其Handler间总是一对一的关系,所以写在同一行上。
Command? => CommandHandler
用!
标记Event。在Event及其Handler间允许存在一对多的关系,所以每行对应一个Handler。
Event! =>
=> EventHandler_1
=> EventHandler_2
State
用$
标识State(原作者用的*
)
$State = newState
聚合根
用@
标识聚合根
@AggregateRoot
用范围符::
定义聚合根内产生新的事件
@AggregateRoot::Event! => .
@AggregateRoot:
:Event_1! => .
:Event_2! => .
其他
// 定义.
与::
操作符
Class.Property
Package::Class
当没有接收方时,用.
指代
Event! => .
当不需要经过消息中间件传递消息时,用->
替代=>
(原作者统一使用的->
)
@Aggregate::Event! =>
-> Router::RouteHandler