【发布时间】:2013-09-10 13:17:56
【问题描述】:
基本上需要在wcf服务和java客户端之间传输大文件, 请问有人可以指路吗?
基本上我需要创建一个 wcf 服务,它需要读取 blob 内容(实际上是存储在 db 列中的文件内容)并 将其传递给 java Web 应用程序(作为 wcf 的客户端)。
文件大小可能从 1kb 到 20MB 不等。 到目前为止,我已经研究/检查了以下选项,但仍然无法最终确定我应该选择哪个,哪个可行,哪个不可行, 请有人指导我。
将文件内容作为字节[]传递: 我知道它会增加传递给客户端的数据大小,因为它将数据编码为 base 64 格式并将 base 64 编码嵌入到肥皂消息本身中,因此会使通信变慢并出现性能问题。 但这确实有效,但我不确定是否建议采用这种方法。
共享一个可供客户端和 wcf 服务应用程序访问的 NetworkDrive/FTPFolder: 每个客户端所需的文件将首先由 wcf 存储在那里,然后客户端需要使用 java I/O 或 FTP 选项来读取它。 从数据大小/带宽的角度来看,这看起来不错,但在服务端和客户端都有额外的处理(需要通过 NetworkShared/FTP 文件夹存储/读取)
- 流式传输: 我不确定这对 Java 客户端是否可行,但我的理解是非 .net 客户端支持流式传输,但我不确定该怎么做??? 我了解流式传输我需要使用 basichttp 绑定,但我是否需要使用 DataContract 或 MessageContract 或任何会工作,然后在 java 客户端要做什么,我不确定。
- 在soap请求中使用MTOM方法传递大数据: 这看起来实际上具有专门设计用于解决 Web 服务调用中的大数据传输的支持,但必须对此进行进一步调查,目前我对此没有太多想法。你们中有人对此有什么建议吗?
我知道问题有点冗长,但我必须将我尝试过的所有 4 个选项以及我的疑虑/发现都放在每个选项中,以便你们都可以在这些选项中提出建议,或者也可能是新选项你会知道我已经尝试过什么,因此可以更有效地指导我。
【问题讨论】:
标签: wcf streaming soap-client mtom large-data