inf*_*rno 7 rest domain-driven-design cqrs
REST具有统一的接口约束,以非常压缩的基于意见的格式进行以下操作.
根据我的理解,带有CQRS(或没有它)的DDD非常相似.
是否可以将REST统一接口映射到由命令和查询以及域事件定义的域接口?(因此,REST服务代码将自动生成.)
是否可以将链接数据语义映射到无处不在的语言?(所以你不需要定义非常相似的术语,只需找到并重用现有的词汇.)
请在答案中添加一个非常简单的映射示例,为什么不是,为什么不呢!
我不认为这是可能的.我认为有一个术语描述了这个问题,它被称为本体对齐.
在这种情况下,至少有3个本体:
所以我们至少有2个路线:
我们的问题与UL:ASO对齐有关,所以我们来谈谈这些本体.
UL是面向对象的,因为我们讨论的是DDD和域模型.所以大多数域对象的entities,value objects是真实的对象,而不是数据结构.它的非面向对象部分是DTO command+domainEvent,query+result并且error在域模型的界面上.
相比之下,ASO是严格程序性的,我们使用一组标准方法(程序)来操纵资源(数据结构).
所以从我的角度来看,我们讨论的是两个非常不同的东西,我们得到了以下选项:
所以从我的角度来看,我们可以做以下事情:
我们可以通过复杂的域模型手动将命令映射到操作
POST transaction {...}可以导致一个SendMoneyCommand{...}GET orders/123/total可以导致一个OrderTotalQuery{...} 我们不能通过复杂的域模型将实体映射到资源,因为我们必须定义新的资源来描述新的服务或新的实体方法,例如
POST transaction {...}可能会导致account.sendMoney(anotherAccount, ...) GET orders/123/total可以导致读取数据库上的SQL查询,而不会触及单个实体我认为在DDD + CQRS和REST之间进行这种本体对齐是不可能的,但我不是这个主题的专家.我认为我们可以做的是创建一个具有资源类,属性和操作的特定于应用程序的词汇表,并将操作映射到命令/查询以及将属性映射到命令/查询属性.
| 归档时间: |
|
| 查看次数: |
4483 次 |
| 最近记录: |