如何处理排队的WCF Web服务请求

时间:2011-03-01 00:43:27

标签: wcf

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

我想的方法如下 1创建Web服务方法以提交请求和排队请求。

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

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

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

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

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

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

由于

2 个答案:

答案 0 :(得分:1)

我会创建我的服务合同,以明确操作将排队。类似的东西:

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

[OperationContract]
bool IsRequestComplete(string requestId);

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

答案 1 :(得分:0)

您是否已使用jane,meat和potato平面方式对服务进行编码并对其进行分析以确定是否需要对请求进行排队?排队涉及开销。做一些测量是一个好主意,看看只是服务请求是否足够。

接近它的另一种方法是使用Microsoft Message Queue。这里甚至是message queues and WCF之间的一些紧密整合。我们的想法是,如果你确实需要一个队列,为什么不使用已经构建和测试过的东西。