首页 文章

WCF或Web API最适合使用Windows服务中的流(大文件)进行文件上载(自主机,而不是IIS)

提问于
浏览
1

我需要实现一个文件上传服务,其中可能包含一些较大的文件 . 我最初使用WCF服务并使用非流式传输(即我发送了一个byte []),但是会出现内存不足异常(将文件读入客户端的byte []) .

然后我尝试在WCF中使用Streams . 这似乎适用于大型文件,但是巨大的限制是你似乎只需要自己发送Stream . 我似乎也无法发送文件元数据(例如文件名,时间戳等)

此服务可能上传了许多客户端应用程序,因此我无法真正了解如何将单独调用中发送的文件元数据与仅没有其他信息的流进行匹配 .

我想知道Web API是否可能是更好的方法 . 我还没有尝试过,但在我看到的一些示例中,您似乎能够将其他数据与流一起发送 .

如果使用Web API,它将自托管(不运行,在IIS中,它将在Windows服务中运行) .

那么,对我而言,Web API可能会成为更好的选择吗?或者有没有办法在WCF中使用文件流发送元数据?

提前感谢任何想法!

1 回答

  • 1

    您可以通过在数据协定或消息协定对象中包装必要的元数据来使用WCF实现它 . 您可以参考以下实现:http://www.codeproject.com/Articles/166763/WCF-Streaming-Upload-Download-Files-Over-HTTP

    如果您的客户更喜欢使用JSON / XML进行通信,并且您不想担心WCF中JSON / XML的序列化/反序列化,那么Web API是另一种选择 . 您的客户端可以发送带有 multipart/form-data 内容类型的HTTP POST请求,以使用Web API上载文件 .

相关问题