当文件句柄不应用无处不在的语言时,我似乎无法找到任何关于对代表文件的事物进行建模的示例或博客。是否可以在系统中包含文件句柄的实体(如图像或文档),或者我是否会出错。请帮忙
答案 0 :(得分:2)
这取决于。如果图片或文件是您网域的一部分(假设您正在构建一些照片应用),则可以在您的域中表示它们。但是,如果文件只是您正在使用的某种存储机制,那么应将其从域中抽象出来。
没有明确的答案,因为这在很大程度上取决于您的域名。
我最近遇到了与电子邮件相同的问题。假设您有以下规则:
在注册时向用户发送电子邮件
假设您还决定将电子邮件队列存储在与您的域相同的数据库中。将电子邮件的概念作为您域的一部分似乎很好。但你必须问自己以下问题。
在这两种情况下,您都必须直接更改域名。
更好的方法是添加基础架构层。在您的域中,您将拥有类似IUserNotifier
的界面,然后您将在基础架构层中实施此界面。 Sudo域代码可能如下所示:
IUserNotifier.NotifyOfRegistration(newUser)
现在,您可以轻松实现通知程序,以发送电子邮件,文本或致电第三方服务等。您的域名不是更明智的,不需要更改。
我知道我的例子没有直接回答你的问题,而是给你一些关于如何思考问题的指导。
这是关于域驱动设计的事情。它完全以域名为中心,因此每个案例都是独一无二的。
答案 1 :(得分:1)
文件句柄通常不会成为大多数域的一部分,因为它们位于基础架构级别。如果您正在构建与基础架构级别相关的内容,那么它将非常好。
如果您有Image
或Document
这样的业务概念,那么可能包含文件句柄或路径,如果您与基础架构绑定在一起。不过,您也可以选择更通用的内容,例如Descriptor
或Uri
。也许某些文档是基于文件的,而其他文档存储在内容引擎中。你可以这样:
file://c:/somewhere/some-file.txt
content://my-server/some-content-id
然后,例如,要获得Stream
以返回真实的物理内容,您可以根据方案/描述符获取一些服务以获取流。
但是根据你的喜好,会有一些选择。 :)