我在哪里为包含文件的域模型实现文件存储

时间:2016-05-10 07:57:10

标签: domain-driven-design

我正在努力坚持Web应用程序的服务器端代码的域驱动设计。此应用程序允许用户上载文件然后处理它们。然后,用户可以下载原始文件,进程的日志文件或包含错误记录的文件。

我有一个名为import的域模型,它具有FileName属性,并且该文件在物理上存在取决于用户ID等,即在动态构建的文件夹结构中。

显然,域模型不应该知道文件存储,因为它是基础架构,所以我正在考虑创建一个基础架构服务,它采用导入域模型并检索各种文件。

然后将文件存储与域模型分开但是阻止我向域模型询问其文件,即我本来想要让导入域模型给我它的错误文件或者它## 39; s原始文件等。

我是否正确使用基础结构服务,或者是否有更好的方法来使用域模型,即注入处理文件读取等的类或者是否有更好/更正确的方法?

此致 加里

1 个答案:

答案 0 :(得分:1)

如果您希望文件本身成为域的一部分,而不是有关存储细节的知识,那么适当的方法就是依赖倒置原则:

定义一个域服务接口,该接口能够返回给定导入域对象的文件。确保以文件显然是聚合的一部分的方式设计聚合,即避免它们自由浮动。

现在,您可以在基础架构层中实现该接口,并将所有存储逻辑放在那里。通过DI机制将实现连接到接口。