use*_*816 3 domain-driven-design ddd-repositories
我有一个包含根实体(文档)和 VO(文档)的聚合。文档与文件(pdf、图像、office文档等)相关联,因此我必须将聚合保存在数据库中,将文件保存在ftp服务器中(由于空间文件太大,无法将文件保存在数据库中)。我的数据库存储库类实现了一个接口,其中包含 FindXXX、AddDocument、RemoveDocument 等方法。如何实现 ftp 持久性?我的数据库存储库是否应该连接到 AddDocument 和 RemoveDocument 中的 ftp setver?或者我应该创建一个实现该接口的 ftp 存储库类。如果是这样,像 FindXXX 这样的方法就没有意义了。据我对 DDD 的了解,每个聚合只有一个接口存储库来代表如何持久化。它可以有多种“持久模式”(在数据库、FTP、文件等中),但接口应该相同。
据我对 DDD 的了解,每个聚合只有一个接口存储库来代表如何持久化。
这基本上是正确的;人们通常认为整个聚合将存储在一个地方。当您将聚合状态分布在多个存储单元上时,您的故障模式需要非常仔细地关注。
因此需要考虑的一件事是,单独存储的文档是否是聚合的一部分,或者是聚合引用的内容。
如果它们被聚合引用,那么您将它们视为对另一个聚合的任何其他引用。文档聚合存储文档的标识符/引用/提示,并在需要时利用域服务来访问文档。
如果它们是聚合的一部分,那么通常的答案是“存储库”将是复杂基础设施前面的一个外观,掩盖了文档和文档是分开存储的事实。
换句话说,基础设施层将尝试编排加载和存储操作,而系统的其余部分不需要了解细节。
| 归档时间: |
|
| 查看次数: |
1574 次 |
| 最近记录: |