WCF处理大文件,具有WS-I互操作性

问题描述:

在处理WCF和大文件的*上有很多帖子,但一般建议是使用流式处理。这似乎不是一个非常可互操作的解决方案。WCF处理大文件,具有WS-I互操作性

如何处理WCF中的大文件并仍然保持互操作性?

老实说,流媒体是如此流行的解决方案的原因是,它运作良好。 .net处理WS-I风格请求的正常方式对于大型文件来说是非常可怕的。这并不意味着传输大型文件,如果你真的尝试这么做,那么你会发现很难扩展到任何显着的流量。

最好的答案是避免它。如果需要,可以添加一个服务请求,它可以通过您的服务“设置”文件传输,然后使用cookie正常获取HTTP请求以实际获取文件。

如果您确实必须通过WS-I服务发送文件,您所能做的就是启用MTOM,并希望您一次无法获得足够的请求来从RAM中运行服务器,以处理那些真正大的XML消息。

+0

你能否解释“最好的答案就是避免它,如果你需要添加一个服务请求,它可以”设置“你的服务上的文件传输,然后使用一个cookie来实现正常的HTTP请求,文件。”另外,你有任何参考,所以我可以读? – Fireworks 2011-04-05 13:50:14

+0

这就是说如果你在文件传输之前必须做任何工作,你可以做一个服务调用来做这些事情并且准备好一切,当客户端接下来尝试进行文件传输时,文件对他们是“准备好”的。如果你只是在没有太多额外工作的情况下发送大文件,这是没有必要的。我没有在内部项目中上传大文件。用户调用创建文件记录和条目的正常服务,并检查权限。如果获得批准,它会发回一个“令牌”值(当然,通过SSL)。 – Tridus 2011-04-05 13:55:09

+0

(续)然后,客户端使用该令牌将该文件作为请求的一部分进行流式处理,以便服务器知道它是谁。必须这样做,因为WCF流不支持身份验证。我不知道你想要做什么,所以你可能不必担心。 (并没有好的参考,但我不得不自己想出很多:) :) – Tridus 2011-04-05 13:55:56