2011-11-29 42 views
2

我有一个倡议,我需要在文档中将它们转换为WCF应用程序中的图像。当诸如word文档的文件通过流时,我会得到文档的多个图像,即文档中每个页面的一个图像。在WCF流中返回多个文件

当我想要返回这些多个图像回客户端。什么是通过流返回所有这些文件的好方法?我还需要告诉客户文件的名称和返回的文件数量,最好的方法是什么?

这是我第一次使用WCF/web服务。

我还需要考虑转换所花费的时间,如果花费太长时间或创建太多图片,我需要返回一个错误。使用SOAP错误是告诉客户端的好方法吗?

我只是做一个数组的拜拜,并返回数组到客户端?还是将所有图像合并为一个流并返回?如果流的大小太大(即超过2 MB),传输文件会不会有问题(缓慢)?

+1

如果您担心使用WCF传输的数据量,请查看以下有趣的文章:http://msdn.microsoft.com/en-us/library/ms733742.aspx – Kolky

+0

此外,什么是好的方法来使这个服务通用? Java和其他语言客户可以调用这个Web方法并接收相同的文件流吗? – user724535

回答

4

你可以传输任何大小的流,你可能会直接写流。要将多个文件合并到一个流中,我认为最简单的方法是创建一个包含所有内容并发送该文件的zip文件。

您的方法签名应该简单地返回一个WCF将直接发送到底层绑定的Stream。您可以使用哪些绑定有一些限制,但WebHttpBinding支持它。

+0

客户端如何将文件从一个流中分离出来?是否有可能没有压缩?我还需要让客户知道交易ID和文件的名称。 – user724535

+0

然后你应该写一些你自己的控制结构。您可以创建一个头文件,其中包含流中文件的数量以及每个流的名称和大小。为了避免纯粹的二进制格式,你也可以选择返回XML(仍在流中)并让文件内容以base64编码。对于大型文件来说,这可能会让人感到厌倦,您可能会选择分为两种方法,一种是返回控制数据,另一种是每个文件的内容。 – faester

+0

你是什么意思分裂成两种方法?所以客户需要调用两种方法?一个用于获取流,另一个用于获取XML信息?但是客户如何从流中分离出所有图像? – user724535