好的,从一个完全不同的软件开发领域进入,我遇到了一个问题,这与我的经验有点不同。我会在没有透露机密细节的情况下尽可能明白地说明:
我想在同一网络上的客户端请求时创建一个“做东西”的服务器。客户端很可能是内容管理系统的后端。
请求包含一些参数,输入文件和多个输出文件。
文件非常大,从10MB到100MB的数据必须处理(可能更多)。客户端可以指定输出文件的目的地。
客户端需要能够找出请求的状态 - 例如队列中的位置,完成百分比。显然,何时何地获取输出。
所以,我的问题是 - 客户端和服务器进行通信的好方法是什么?客户端是否应该轮询服务器,或以某种方式提供“回调”以进行状态更新?
此时,实现平台是完全开放的 - 从C到脚本语言(如Ruby)都可以使用(在任何一端),我的主要问题是如何进行通信。
答案 0 :(得分:4)
首先想到的是,在机器之间设置一些web服务。但是对于大文件来说,webservices不会太友好或高效。
简单的方法:
稍微复杂的方法,没有投票。
为了获得额外的弹性,你可以保留GetProcessStatus以防万一在以太网中丢失...
答案 1 :(得分:2)
对于Web服务而言,高达100MB的文件不是一个好的选择,因为在完成处理之前,您可能会遇到HTTP会话超时的风险。
使用Web服务来检查这些作业的状态会更理想。通过FTP或您选择的任何文件传输方法处理文件传输,并轮询Web服务以获取状态更新。完成此过程后,您可能会返回一个可以下载的输出文件URL。