Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理排队的WCF Web服务请求_Wcf - Fatal编程技术网

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

如何处理排队的WCF Web服务请求,wcf,Wcf,我需要将web服务请求排队,然后根据优先级和请求时间处理每个请求。然后将响应发送回 我想的方法如下 1创建一个web服务方法来提交请求和排队请求 2创建两个队列(高优先级请求和低优先级请求) 3创建一种处理方法,一次处理一个请求(如果存在高优先级队列,则首先将其出列),然后存储响应 4创建一个字典来存储相应请求的响应。 5创建web服务方法以获取响应 我正在考虑使用内存队列,因为我希望一次排队的请求数量很少 我遇到的问题在步骤3中。只要队列中有请求,我就希望processor方法持续运行 如何使

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

我想的方法如下 1创建一个web服务方法来提交请求和排队请求

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

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

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

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

我遇到的问题在步骤3中。只要队列中有请求,我就希望processor方法持续运行

如何使用WCF web服务完成步骤3? 我正在使用.NET4.0环境。 我真的很感激任何想法或建议


谢谢

您是否用“简、肉、土豆”的方式对服务进行了编码,并对其进行了分析,以确定是否有必要对请求进行排队?排队过程中涉及到开销。最好进行一些测量,看看仅仅为请求提供服务是否足够


另一种方法是使用。这甚至是两者之间的紧密结合。其思想是,如果您确实需要一个队列,为什么不使用已经构建和测试的东西呢。

我会创建我的服务契约,以明确操作将排队。比如:

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

[OperationContract]
bool IsRequestComplete(string requestId);

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

我之所以要使用队列,是因为请求的实际处理将由一次只处理一个请求的外部接口完成(它是指向IBM 3270 diplay的SDLC点对点链接)。我将看一看MSMQ和WCF集成。那可以解决我的问题。谢谢