在域模型中处理二进制文件的最佳做法是什么?我经常必须将图像和其他文件与业务对象相关联,即使对于最简单的情况,简单字节[]也是不够的。域模型中的文件
的文件:
- 不具有固定的大小,并且可以是相当大从而:
- 不得不被流传输或缓冲,优选以异步方式;
- 必须缓存在服务器和客户端上,以避免冗余传输;
- 在不可靠的连接上,数据传输可能很容易中断,必须重新启动 - 因此传输可能不是从文件的开头开始,而是从任意位置开始。
- 比其余数据处理方式不同:
- 在Web应用程序是不是网页内容的一部分,但通过浏览器单独下载;
- 可能是由第三方软件处理的黑盒子;
- 由于性能原因,甚至可能不会存储在数据库中。
我们如何去域模型表达这样的文件(或更具体地说,在模型类)?如果模型的其余部分通过DTO和WCF Web服务传输并在数据库中坚持使用NHibernate,但文件不一定如此,如何使文件处理变得透明,在适用的情况下如何使整个事务成为支持所有必需的部分不仅可以在Web应用程序中使用它们,还可以在普通的桌面应用程序中使用它们。
对于WPF和ASP.NET,文件对象必须公开某种形式的Url属性,这些属性可以数据绑定到WPF控件或用于IMG或HTML标记。上传文件要复杂得多。优选地,适当的表示和内容实践例如MVVM必须在那里维护。
我真的迷失在这里,因为我不满意我以前的任何解决方案。你会建议什么?
我不知道有任何组件或最佳做法提供这样的事情。您很可能只需按照指定的要求对您的需求进行完全自定义实施。可能有一些文件传输组件/代码可用,它们可以帮助您分开,但这可能不会节省太多时间。 – 2009-10-28 17:42:08