我正在努力坚持Web应用程序的服务器端代码的域驱动设计。此应用程序允许用户上载文件然后处理它们。然后,用户可以下载原始文件,进程的日志文件或包含错误记录的文件。
我有一个名为import的域模型,它具有FileName属性,并且该文件在物理上存在取决于用户ID等,即在动态构建的文件夹结构中。
显然,域模型不应该知道文件存储,因为它是基础架构,所以我正在考虑创建一个基础架构服务,它采用导入域模型并检索各种文件。
然后将文件存储与域模型分开但是阻止我向域模型询问其文件,即我本来想要让导入域模型给我它的错误文件或者它## 39; s原始文件等。
我是否正确使用基础结构服务,或者是否有更好的方法来使用域模型,即注入处理文件读取等的类或者是否有更好/更正确的方法?
此致 加里
答案 0 :(得分:1)
如果您希望文件本身成为域的一部分,而不是有关存储细节的知识,那么适当的方法就是依赖倒置原则:
定义一个域服务接口,该接口能够返回给定导入域对象的文件。确保以文件显然是聚合的一部分的方式设计聚合,即避免它们自由浮动。
现在,您可以在基础架构层中实现该接口,并将所有存储逻辑放在那里。通过DI机制将实现连接到接口。