基本上需要在wcf服务和java客户端之间传输大文件, 有人可以给出指示吗?
基本上我需要创建wcf服务 需要读取blob 内容(实际上是存储在db列中的文件内容)并且将它传递给java网络应用程序(作为wcf的客户)。
文件大小可能从1kb到20MB 不等。 到目前为止,我已经研究/检查了下面的选项,但仍然无法确定我应该选择哪一个,哪个是可行的,哪个不是, 有人可以指导我。
将文件内容传递为byte [] : 据我所知,它会增加传递给客户端的数据大小,因为它会将数据编码为base 64格式,并将base 64编码嵌入soap消息本身,从而使通信速度变慢并出现性能问题。 但这肯定有效,但我不确定采用这种方法是否明智。
共享可供客户端和wcf服务应用访问的NetworkDrive / FTPFolder: 根据此客户端所需的文件将首先通过wcf存储在那里,然后客户端需要使用java I / O或FTP选项来读取它。 从数据大小/带宽的角度来看,这看起来很好,但在服务和客户端都有额外的处理(需要通过NetworkShared / FTP文件夹存储/读取)
我明白问题有点长但是我必须把我尝试过的所有4个选项和我的关注/调查结果放在每个选项中,这样你们都可以在这些或新选项中提出建议,也可以你会知道我已经尝试过的东西,所以可以更有效地指导我。
答案 0 :(得分:0)
我与你自己处于相同的位置,我可以从经验中说明,选项1对于任何超过几MB的任何东西都是一个糟糕的选择。
在我自己的系统中,上传时间呈指数增长,25MB文件上传时间超过30分钟。
我已经运行了一些时间,其中大部分时间是将文件从.NET客户端传输到Java Web Service。我们的网络服务是一套第三方服务的外观;使用第三方提供的内置客户端(在业务环境中不可行)明显更快 - 对于25MB文件不到5分钟。上传到我们的客户端应用程序也很快。
我们尝试过MTOM,除非我们错误地实施,否则没有看到巨大的改进(速度增加不到10%)。
下一个调用端口将是选项2 - 文件传输速度相对较快,因此将文件直接上传到其中一个Web服务主机我希望这会大大加快速度 - 如果我得到一些有意义的结果,我会添加他们到我的岗位。