Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net FTP与自动数据交换应用程序一起使用是否可靠?_.net_Web Services_Ftp_Data Exchange - Fatal编程技术网

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

.net FTP与自动数据交换应用程序一起使用是否可靠?,.net,web-services,ftp,data-exchange,.net,Web Services,Ftp,Data Exchange,我被要求设计一个批处理应用程序,定期从外部供应商那里检索数据(特别是事务的详细列表)。我们已经同意使用XML进行数据交换,但正在研究不同的方法/协议以促进实际的数据传输。供应商建议通过电子邮件或FTP传输数据,但出于物流和可靠性考虑,我们拒绝了第一种选择 至于第二个问题,FTP,我一直在犹豫是否在生产环境中使用FTP,因为可靠性是一个问题。供应商将文件发布到FTP并定期下拉的设计似乎不可靠且容易出错。我最初的反应是倾向于web服务(这个特定的供应商可能提供,也可能不提供,甚至不愿意提供),在特定

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

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

一般来说,在这种情况下,最好的方法是什么?FTP(或SFTP)通常被认为是一种可接受的选择,还是有更好的选择?对于这样一个简单的数据交换,web服务是不是有点过头了?还有其他我完全忽略的可行方案吗?

您可以使用

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


FTP是非常不安全的。不过,它应该是可靠的。

文件传输会带来许多复杂问题

我更喜欢webservice,或者只使用digest/basic auth对文件进行https访问,但对于非常大的文件,这可能对它们不实用

另一个答案可能是在AmazonS3上使用一个共享的bucket,在这里您拥有读访问权限,而他们拥有写访问权限。我曾多次将其用作穷人的安全文件传输

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

1) 使用像sftp这样的安全版本-ftp对于凭证或数据来说是不安全的

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

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


4) 使用哈希值检查传输是否成功。他们可以为文件提供md5散列,然后在完成复制后,您可以根据您的版本进行检查。我也经常使用md5文件作为信号量,以指示文件可用,并提供检查传输是否完整和正确的方法。

我来晚了,但值得一提的是,我实现了上述所有内容,到目前为止,2(使用mendelson)是最简单、最不容易出错的

我的意见:

  • 实现sftp/ftps是直截了当的,而且相当可靠,具有较低的进入门槛,但最终需要编写自己的轮询方法(如Andrew所述)
  • Web服务很棒,但前提是供应商正确地设计和记录它们。我发现,较小的合作伙伴倾向于将一个API组合在一起,而不是在根据其他客户请求添加功能或向传输中添加信息时将其破坏,但无法更新文档以反映新功能。在一个案例中,这促使我们转向sftp
  • AS2很好,因为它与门德尔森的安全性和相当低的维护。在服务器输出文件夹上添加一个目录监视程序,您将完成realtime1处理
当然,在一天结束时,您的供应商将决定他们愿意在多大程度上提供连接方法,您需要选择他们提供的最佳方法


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

你说的文件有多大?我不认为它们会很大。编码为XML的事务记录可能少于5000条,每个字段最多10个字符。那么,考虑到XML标记带来的20%的通货膨胀,可能是3M最大值?不过,总体而言,该解决方案需要具有可扩展性,以防交易量增加。您的回答提出了几个要点,并针对可能出现的陷阱提出了解决方案。虽然我同意web服务更可取,但我怀疑供应商是否愿意单独为我们的消费提供web服务。这也是我的经验。当供应商建议ftp时,这意味着他们不愿意进行任何真正的开发(比如api),而是会编写脚本为您将文件扔到某处。ftp是最低的公分母,并且经常被用于这类东西。有很多相对简单的HTTP(S)客户端可用于替换脚本中的
ftp
命令(我想到了cURL)。WebDAV后端也可能是一种解决方案,类似于webservice/HTTPS访问。HTTPS实际上甚至对于上传大文件(特别是通过HTTP
PUT
、普通或通过WebDAV)也是非常可行的。10秒的MBs不应该是问题,这取决于连接。