1

基本上需要在wcf服务和java客户端之间传输大文件,有人可以指点吗?

基本上我需要创建一个 wcf 服务,该服务需要读取 blob内容(实际上是存储在 db 列中的文件内容)并将其传递给 java web 应用程序(作为 wcf 的客户端)。

文件大小可能从 1kb 到 20MB不等。到目前为止,我已经研究/检查了以下选项,但仍然无法最终确定我应该使用哪个,哪个可行,哪个不可行,请有人指导我。

  1. 将文件内容作为 byte[] 传递:我知道它会增加传递给客户端的数据大小,因为它将数据编码为 base 64 格式并将 base 64 编码嵌入到soap消息本身中,因此会使通信速度变慢并且存在性能问题。 但这肯定有效,但我不确定是否建议采用这种方法

  2. 共享客户端和 wcf 服务应用程序均可访问的 NetworkDrive/FTPFolder:客户端所需的此文件将首先由 wcf 存储在那里,然后客户端需要使用 java I/O 或 FTP 选项来读取它。从数据大小/带宽的角度来看,这看起来不错,但在服务端和客户端都有额外的处理(需要通过 NetworkShared/FTP 文件夹存储/读取)

  3. 式传输:我不确定这对于 Java 客户端是否可行,但我的理解是非 .net 客户端支持流式传输,但我不确定该怎么做???我了解流式传输我需要使用 basichttp 绑定,但我是否需要使用 DataContract 或 MessageContract 或任何会起作用,然后在 java 客户端要做什么,我不确定。
  4. 使用 MTOM 方法在soap 请求中传递大数据:这看起来实际上具有专门设计用于解决Web 服务调用中的大数据传输的支持,但必须对此进行进一步调查,目前我对此没有太多想法。你们中有人对此有什么建议吗?

我知道问题有点长,但我必须把我尝试过的所有 4 个选项和我的担忧/发现都放在每个选项中,以便你们都可以在这些选项中提出建议,或者可能是新选项,你也会知道我已经尝试过什么,所以可以更有效地指导我。

4

1 回答 1

0

我和你的处境相同,我可以根据经验表明选项 1 对于超过几 MB 的任何东西来说都是一个糟糕的选择。

在我自己的系统中,上传时间呈指数级增长,25MB 文件的上传时间超过 30 分钟。

我已经运行了一些时间,其中大部分是将文件从 .NET 客户端传输到 Java Web 服务。我们的 Web 服务是一组 3rd 方服务的外观;使用第 3 方提供的内置客户端(在业务环境中不可行)明显更快 - 25MB 文件不到 5 分钟。上传到我们的客户端应用程序也很快。

我们已经尝试过 MTOM,除非我们不正确地实现它,否则并没有看到巨大的改进(速度提升不到 10%)。

下一个调用端口将是选项 2 - 文件传输相对较快,因此通过将文件直接上传到其中一个 Web 服务主机,我希望这会显着加快速度 - 如果我得到一些有意义的结果,我会将它们添加到我的邮政。

于 2013-09-23T12:08:42.523 回答