【问题标题】:Offline Processing of POST RequestPOST请求的离线处理
【发布时间】:2010-09-15 14:19:47
【问题描述】:

我正在开发一个向 .NET Web 服务提交 POST 请求的应用程序。

当前的实现是立即处理请求并给出响应。在实际部署中,需要处理的数据量非常大,需要离线处理。

有哪些策略可以完成任务

我应该实现 Windows 服务,还是调用应用程序来执行所需任务的计划任务。

【问题讨论】:

  • 如果您将其作为 Web 服务进行,您需要有某种立即响应,即使它只是验证请求是否已成功提交。之后,您是否希望服务持续运行以监视请求队列或定期执行以通过它的问题应该取决于您需要响应的速度以及批量处理请求是否有任何优势.
  • @ngroot:对于应用程序,最好不要批量处理请求。事实上,希望一次只处理一个请求。另一个问题是,处理完成时需要通过电子邮件通知用户。因此,以后可能需要更改的配置信息很少。

标签: c# windows-services scheduled-tasks offline


【解决方案1】:

这对于 MSMQ 来说可能是一个很好的案例。您的 Web 服务可以用传入的数据填充队列,而另一个进程可以读取这些消息并执行必要的处理。

下面是对 MSMQ 的一个很好的概述:

http://www.primaryobjects.com/CMS/Article77.aspx

【讨论】:

    【解决方案2】:

    如果您有太多无法实时处理的数据,我可能会设置服务来执行以下操作:

    ProcessRecordViaPost

    1. 在“队列”数据库中使用 UniqueID 和所有其他要处理的信息创建新记录
    2. 立即返回 UniqueID 给客户

    ReadRecordViaGet

    1. 检查队列,如果处理则返回数据,如果不返回状态码(在它之前的队列中的项目数?)

    我还会有一个 Windows 服务,它不断地从队列中抓取最旧的项目,并对其进行处理并移至下一个最旧的项目。

    【讨论】:

    • 由于服务会不断抓取数据,将请求保存在数据库中是不是很明智?那么,最好使用 MSMQ 来存储请求吗?
    • 如果它们只是被处理和删除,那么是的,数据库将是矫枉过正。但是,由于您不会立即将数据传回,当用户最终返回时,您的 Web 服务将如何返回数据?看来您至少需要在用户发出第二个请求之前存储队列,不是吗?
    • 兄弟:不会有第二个请求。将通过电子邮件通知用户。
    猜你喜欢
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 2016-11-15
    • 2016-04-13
    相关资源
    最近更新 更多