3

我被要求设计一个批处理应用程序,它会定期从外部供应商那里检索数据(特别是交易的详细列表)。我们已同意使用 XML 进行数据交换,但我们正在研究不同的方法/协议以促进实际数据传输。供应商建议使用电子邮件或 FTP 作为传输数据的方式,但出于物流和可靠性方面的考虑,我们直接拒绝了第一个选项。

至于第二个,FTP,我一直对在需要可靠性的生产环境中使用 FTP 犹豫不决。供应商将文件发布到 FTP 以定期下拉的设计似乎不可靠且容易出错。我最初的反应是倾向于像 Web 服务这样的东西(这个特定的供应商可能甚至可能不能够或不愿意提供),可以根据需要在特定时间段内查询数据。

一般来说,在这种情况下使用的最佳方法是什么?FTP(或 SFTP)通常被认为是可接受的选择,还是有更好的选择?对于如此简单的数据交换,Web 服务是否过大?还有其他我完全忽略的可行选择吗?

4

3 回答 3

3

文件传输带来了许多复杂性。

我更喜欢网络服务,或者只是通过摘要/基本身份验证对文件进行 HTTPS 访问,但对于非常大的文件,这对他们来说可能不实用。

另一个答案可能是在Amazon S3上使用共享存储桶,您可以在其中读取访问权限,并且他们具有写入访问权限。我曾多次使用它作为穷人的安全文件传输。

我以这种方式使用过各种 FTP,如果你这样做,这里有一些提示:

  1. 使用像SFTP这样的安全版本- FTP 对凭据或数据不安全。

  2. 使用信号量文件来指示最新文件何时完整且可用,或者确保当他们将文件写入 FTP 目录时,他们会整体移动它,这样您就不会访问不完整的文件。

  3. 确保每个文件都有一个唯一的文件名(时间戳、序列号等),这样您就可以跟踪哪些已处理,哪些尚未处理。不要重复使用文件名,因为您不知道何时已经处理,并且可能会在您访问文件时更新文件的竞争条件。

  4. 使用哈希值检查是否成功传输。他们可以为该文件提供一个MD5哈希,然后您可以在完成复制后对照您的版本进行检查。我也经常使用 MD5 文件作为信号量,既指示文件可用,又提供检查传输是否完整和正确的方法。

于 2011-12-28T21:08:36.467 回答
1

您可以使用AS2

然而,这是一种推动机制。as2 mendelson将是一个免费的网关软件。您将设置一个“通道”,所有内容都将在没有任何编码的情况下传输给您。如果出现一些问题,您应该会收到通知。

FTP非常不安全。不过应该是靠谱的。

于 2011-12-28T21:04:23.033 回答
0

我已经实现了之前答案中的所有解决方案,到目前为止,AS2(使用mendelson)是最简单且最不容易出错的。

我的观察:

  • 实现 SFTP/ FTPS很简单,而且相当可靠,进入门槛低,但最终需要编写自己的轮询方法(如 Andrew 所述)
  • Web 服务很棒,但前提是供应商正确设计和记录它们。我发现较小的合作伙伴倾向于将 API 组合在一起,然后在添加功能或根据其他客户请求向传输添加信息时破坏它,但未能更新文档以反映新功能。在一种情况下,这促使我们转向 SFTP。
  • AS2 很好,因为它很安全,而且门德尔森的维护成本很低。在服务器输出文件夹上添加一个目录观察程序,您最终会得到实时1处理。

当然,归根结底,您的供应商将决定他们愿意在多大程度上提供连接方法,您需要选择他们提供的最佳方法。

1实时处理实际上并不是实时处理,而是管理可接受的近似值。你的经理可能与我的不同。

于 2013-05-21T19:11:12.280 回答