应用程序服务中的数据库事务,由域驱动设计定义

时间:2014-06-19 16:32:27

标签: design-patterns architecture domain-driven-design

在书中,#34;实施领域驱动设计"作者Vaughn Vernon在第120页上说

  

应用程序服务驻留在应用程序层中。 [...]。他们可以控制持久性交易[...]"。

enter image description here

  1. 现在,MVC应用程序中的Controller是一个应用程序服务,对吗?
  2. 如果是,是否意味着控制器可以提交或回滚数据库事务(直接或间接,但通过控制器可以管理的机制)?

1 个答案:

答案 0 :(得分:4)

您可以将控制器视为应用程序服务,尤其是在简单应用程序中,但为这些服务提供专用对象可能更好,因为:

  • Controller是一个UI概念。您可能想要更改或添加UI图层,并且仍然保持应用场景的完整性而不重写它们。

  • 编排对存储库,域实体和服务的调用以及执行应用程序事务可能对负责处理View数据和View导航的Controller负有太大责任。请参阅Fat Controller反模式。