【问题标题】:How to process Queued WCF Web service requests如何处理排队的 WCF Web 服务请求
【发布时间】:2011-03-01 00:43:27
【问题描述】:

我需要对 Web 服务请求进行排队,然后根据优先级和请求时间处理每个请求。然后发回响应。

我想的方法如下 1 创建一个 Web 服务方法来提交请求并将请求加入队列。

2 创建两个队列(高优先级请求和低优先级请求)

3 创建一个 Processing 方法,一次处理一个请求(如果存在则先将高优先级队列出列)处理,然后存储响应

4 创建一个字典来存储相应请求的响应。 5 创建一个web服务方法来获取响应

我正在考虑在内存队列中使用,因为我预计一次排队的请求数量很少。

我遇到的问题在第 3 步。我希望只要队列中有请求,处理器方法就可以持续运行。

如何使用 WCF Web 服务完成第 3 步? 我正在使用 .NET 4.0 环境。 我真的很感激任何想法或建议。

谢谢

【问题讨论】:

    标签: wcf


    【解决方案1】:

    我将创建我的服务合同以明确操作将排队。比如:

    [OperationContract]
    string EnqueueRequest(int priority, RequestDetails details);
    
    [OperationContract]
    bool IsRequestComplete(string requestId);
    

    我会让 EnqueueRequest 将每个请求放入一个 MSMQ 队列。我会让 Windows 服务处理队列中的请求。该服务将是唯一可以访问 SDLC 设备的进程。

    【讨论】:

      【解决方案2】:

      您是否以简明扼要的方式对服务进行了编码,并进行了概要分析以查看是否有必要对请求进行排队?排队涉及开销。进行一些测量并查看仅服务请求是否足够是一个好主意。

      另一种方法是使用Microsoft Message Queue。这甚至是message queues and WCF 之间的一些紧密集成。想法是,如果您确实需要队列,为什么不使用已经构建和测试的东西。

      【讨论】:

      • 之所以要使用队列是因为请求的实际处理将由一次只处理一个请求的外部接口完成(它是SDLC点对点链接到IBM 3270显示)
      • 我将看看 MSMQ 和 WCF 的集成。那可以解决我的问题。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 2010-09-10
      • 2010-09-17
      • 1970-01-01
      • 2013-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多