从以数据库为中心的应用程序迁移到基于 DDD 的应用程序

问题描述 投票:0回答:1

我有一个正在努力解决的问题。问题是我想将现有应用程序迁移到具有适当域层的应用程序中。

现有的应用程序实际上只是数据库查询的大集合,因为所有业务逻辑都是通过触发器、过程和函数在数据库内实现的。应用程序所做的就是查询一些数据,在贫乏的域模型中操作数据并将结果存储回数据库,以便数据库可以应用业务逻辑、验证等。

数据库内部的业务逻辑实际上只是与其他所有内容交织在一起,真正将其一点点分开。
到目前为止,我提出的唯一解决方案是使用适当的适配器将全新的域层与现有的数据访问层连接起来。主要是领域模型<->数据库实体转换器的形式。但如果我这样做,我就不能只使用域模型的域逻辑并将最终结果存储回数据库,因为这会违反数据库内实现的业务逻辑和验证。因此,任何复杂的事务仍然必须将其中间结果存储回数据库,因此我仍然坚持贫乏的域模型。

有人知道如何解决这种情况并逐渐迁移到丰富的领域模型吗?

database domain-driven-design migrate domain-model anemic-domain-model
1个回答
0
投票

我遇到了同样的问题,我得到了这个解决方案。我希望这有用。

  • 在同一接口中收集所有相关的 SP 调用。
  • 在我们的案例中,不可能直接从面向 SP 的设计转向领域模型模式。所以我们用事务脚本模式来实现它。对于每个SP我们制定了一个应用服务方法。我们将 SP 逻辑转换为 ORM 生成的查询,并在我们的方法中操作数据。
  • 处理完所有触发器和其他依赖项后删除 SP。
  • 经过上述步骤后,您将拥有一个准确反映 SP 的应用层。
  • 下一步将从事务脚本模式重构为领域模型模式。
© www.soinside.com 2019 - 2024. All rights reserved.