api:存放的是对外暴露的接口 dto.domainmodel:用来做数据传输的轻量级领域对象。 to.domainevent: 用来做数据传输的领域事件。
service:接口实现的facade,没有业务逻辑,可以包含对不同终端的adapter。 eventhandler:处理领域事件,包括本域的和外域的。 executor:用来处理命令(Command)和查询(Query),对复杂业务,可以包含Phase和Step。 interceptor: COLA提供的对所有请求的AOP处理机制。 validator:用来对传入的命令进行参数校验。
domain:领域实体。 domainservice: 领域服务,用来提供更粗粒度的领域能力。 gateway:对外依赖的网关接口,包括存储、RPC、Search等,可以认为是对infrastructure的依赖反转。
config:配置信息相关 message:消息处理相关。 repository:存储相关,是gateway的特化,主要用来做本域的数据CRUD操作。 gateway:对外依赖的网关接口(demo-domain里的gateway)的实现。
在COLA中,比如我们想创建一个User,一套完整的调用链大概如下图所示:
以上是一个经过简化版的调用链,实际的调用链还要更复杂,调用过程中可能还包含了多个不同的扩展点(Extension)。