假设我有一个插图实体,它是一个聚合根。该实体包含有关艺术品的一些数据,并保留在 SQL 数据库中,而艺术品本身则保留在 Amazon S3 上。此外,我想保存一些按比例缩小或缩略图版本的艺术品,因此我引入了一个与插图具有多对一关系的Blob实体,用于表示各种版本的艺术品的二进制数据。
现在我想知道我应该如何设计 Blob 的持久性。Amazon S3 是一种数据库(请不要在这里点燃什么是真正的数据库;)),与 SQL 不同,我认为它应该像这样抽象,这意味着通过Repository。所以我会有一个 BlobRepository 来存储艺术品数据。另一方面——在这个域中,Blob 绝对不是聚合根——它总是被用作插图聚合的一部分。所以它不应该有自己的存储库。
所以也许 Amazon S3 不应该被视为一种持久性技术,而应该被视为一种通用的外部服务,仅次于 EmailSender、CurrencyConverter 等?如果是这样,我应该在哪里注入此服务?进到插图实体方法、插图存储库、应用服务层?