WCF异步服务器端处理

Ani*_*sta 5 .net c# wcf asynchronous

我需要创建一个接受客户端请求的WCF服务,并在内部连接到远程计算机来完成这项工作.远程机器具有非常好的处理能力但不具有良好的处理速度.这意味着可以处理例如每秒1000个事务,但每个事务可能需要1秒,因此唯一的方法是在同一秒内运行1.000个并发事务.

远程机器很好地处理这种情况,但是我担心WCF,如果每个事务都在内部(我不关心客户端模型(同步或异步))等待并阻塞服务器内的线程1或2秒这可能代表一个1.000工作线程,这可能是非常危险的,或者WCF可能使用线程池,只是将其他请求置于等待状态,这也很糟糕.

所以,我的问题是关于在服务器端异步处理请求的可能性.所以事务流程必须是这样的:

  1. Cliente初始化请求(在他身边是同步请求)
  2. 服务器重新接收请求并将此请求放入事务队列并释放该线程
  3. 任务完成后,服务器完成向客户端发送HTTP 200和结果的请求.

谢谢!

Raj*_*esh 1

您可以使用 WCF 异步模式来实现此目的。当您使用 async 属性标记操作契约时,WCF 使用 IO CompletionPort 线程来处理请求。

所以它的工作方式如下。您的请求由 IIS 中的一个线程处理,一旦到达 WCF,它就会进入睡眠状态,然后 IO CompletionPort 线程接受请求并对其进行处理,然后将响应发送回 IIS 线程,该线程将响应返回给客户端。

IO CompletionPort 线程速度更快,并且不会在性能或资源方面降低服务器的速度。

请查看以下链接以获取更多信息。