在域模型中处理二进制文件的最佳做法是什么?我经常必须将图像和其他文件与业务对象关联起来,即使对于最简单的情况,简单的字节[]也是不够的。
文件:
我们如何在域模型中(或更具体地说,在模型类中)表达此类文件?如果模型的其余部分通过DTO和WCF Web服务传输并在数据库中保留NHibernate,但文件不一定如此,如何使文件处理透明,整个事务的一部分在适用的情况下支持所有必要的它们不仅可以在Web应用程序中使用,还可以在普通桌面应用程序中使用。
对于WPF和ASP.NET,文件对象必须公开某种形式的Url属性,该属性可以数据绑定到WPF控件或用于IMG或HTML标记。上传文件要复杂得多。优选地,必须在那里维护适当的演示和内容实践,例如MVVM。
我真的迷失在这里,因为我对以前的任何解决方案都不满意。你有什么建议吗?
答案 0 :(得分:0)
你必须小心,不要试图在这里将过多的功能强加到单个类中,你的措辞听起来有点像你想要一个“文件”对象来完成所有事情,这不是一个好主意。
你需要有一个文件表示的概念,可以在你所识别的任何地方传递 - 但这只需要一个标识符和可能的名称 - 然后由各个组件决定如何他们对此进行处理,例如HTML页面可能使用File json对象并推断需要使用ftp://xxx/uploads/ {id}或其他东西检索jsFile.Id,同时为了显示WCF服务可能会收到的其他相关信息文件ID并在数据库中查找信息。
拥有一个FileAttributesDTO类或类似的东西可能是有意义的,只是为了区别于处理物理文件时。在真正开始之前,您需要考虑对问题的分离并确定尽可能多的用例。例如,您是否真的需要其他信息,或者围绕FTP服务的简单包装器可以为您提供所需的一切。