2011-03-01 109 views
0

我有一个要求排队Web服务请求,然后根据优先级和请求时间处理每个请求。然后发送回应。如何处理排队的WCF Web服务请求

我在考虑的方法如下 1创建一个Web服务方法来提交请求和入队请求。

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

3创建的处理方法来处理在同一时间每个请求一个(出列的高优先级队列第一,如果它存在的话)处理,然后存储该响应

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

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

我遇到的问题是在第3步。我希望处理器方法能够在队列中存在请求的情况下持续运行。

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

感谢

回答

0

你有没有在一个平面简,肉和土豆的方式编码的服务及异形,看是否有必要请求排队?排队涉及开销。做一些测量并查看是否仅仅提供服务就足够了。

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

+0

我想要使用队列的原因是因为实际的请求处理将由外部接口完成,该接口每次只处理一个请求(这是SDLC点对点链接到IBM 3270显示) – Yared 2011-03-01 01:15:42

+0

我会带一个看看MSMQ和WCF的整合。这可以解决我的问题。谢谢。 – Yared 2011-03-01 01:24:44

1

我会创建我的服务合同,以明确操作将排队。像这样:

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

[OperationContract] 
bool IsRequestComplete(string requestId); 

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

相关问题