.net - FTP 与自动数据交换应用程序一起使用是否可靠?

标签 .net web-services ftp data-exchange

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

关于第二个FTP,我一直很犹豫在关注可靠性的生产环境中是否使用FTP。供应商将文件发布到 FTP 并定期下载的设计似乎不可靠且容易出错。我最初的 react 是倾向于网络服务之类的东西(这个特定的供应商可能或可能不能够或愿意提供),可以根据需要在特定时间段内查询数据。

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

最佳答案

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

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

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

我已经以这种方式使用了 FTP 的风格,如果您这样做的话,这里有一些提示:

  1. 使用安全版本,如 SFTP - FTP 对于凭证或数据来说并不安全。

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

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

  4. 使用哈希值检查传输是否成功。他们可以提供 MD5文件的哈希值,然后您可以在完成复制后根据您的版本检查它。我也经常使用 MD5 文件作为信号量,以指示文件可用,并提供一种方法来检查传输是否完整且正确。

关于.net - FTP 与自动数据交换应用程序一起使用是否可靠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8661239/

相关文章:

macos - 在 Mac 上比较本地和远程 (FTP/SFTP) 文件

.net - Windows 身份验证提示两次

java - 通过 Java axis webservice 客户端代码访问硬编码的响应 xml

java - Java 有没有办法返回 ResultSet?

c# - 连接失败后 FtpWebRequest 不继续

javascript - Node js、PromiseFtp。如何下载目录中的所有文件然后从ftp中删除它们

.net - Autofac 和 Automapper 的新 API - ConfigurationStore 消失了

c# - C# 中的 Async 和 Await 以及问题

c# - 在 C# 中计算图像的 MD5 校验和

web-services - SOA和ROA有什么区别