我们有一个WCF服务,它从SQL Server数据库返回一个字节数组。此字节数组通常表示报告,但将来可能是Word或Excel文档。目前,返回的文件大约是300K,但有些接近900K。未来的办公文档将属于类似的大小范围。
我们应该在什么时候考虑更改返回类型或者是一个byte []就好了?问题的第二部分是,如果我们应该改变它,我们应该把它变成什么?我们应该考虑流媒体还是不适合这种类型的文件?
答案 0 :(得分:1)
如果您使用此WCF服务将数据从服务器下载到客户端(如Web浏览器),则流式传输可能是一个好主意,因此链中的任何位置都不会立即在内存中分配整个数据块。 / p>
请参阅此处获取大量文档以及有关此主题的示例:How to: Enable Streaming
如果您已经从某些方法提供byte[]
作为回报,我还建议不要破坏ServiceContract,强制所有客户端都被重写不是一个好习惯,只需并排添加新方法,如果可能和方便。
答案 1 :(得分:1)
我会仔细查看您的WCF服务的性能,使用分析器或通过压力测试。我不会改变它,直到它变得必要,但你不是太远了。
要传输数据,您可以更改合同以返回Stream
(或实施新合同以避免破坏现有合同),并将传输模式设置为流式传输。有一个非常好的优点和缺点的记录,以及所有这些here的方法。