需要将大文件内容从wcf服务传输到java客户端(java web app)

时间:2013-09-06 12:21:36

标签: wcf streaming soap-client mtom large-data

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

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

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

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

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

  3. : 这个我不确定是否可以使用Java客户端,但我的理解是Non .net客户端支持流式传输,但如何解决它我不确定??? 我理解为流媒体我需要使用basichttp绑定,但是我需要使用DataContract或MessageContract或任何工作,然后在java客户端做什么,我不确定。
  4. 使用MTOM方法在soap请求中传递大数据: 这看起来实际上具有专门用于解决Web服务调用中的大数据传输的支持,但是必须对此进行进一步调查,截至目前我对此并不太了解。你们中有人对此有什么建议吗?
  5. 我明白问题有点长但是我必须把我尝试过的所有4个选项和我的关注/调查结果放在每个选项中,这样你们都可以在这些或新选项中提出建议,也可以你会知道我已经尝试过的东西,所以可以更有效地指导我。

1 个答案:

答案 0 :(得分:0)

我与你自己处于相同的位置,我可以从经验中说明,选项1对于任何超过几MB的任何东西都是一个糟糕的选择。

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

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

我们尝试过MTOM,除非我们错误地实施,否则没有看到巨大的改进(速度增加不到10%)。

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