gpt4 book ai didi

c# - WCF 异步服务器端处理

转载 作者:太空狗 更新时间:2023-10-29 23:47:43 24 4
gpt4 key购买 nike

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

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

所以,我的问题是关于在服务器端异步处理请求的可能性。所以交易流程一定是这样的:

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

谢谢!

最佳答案

您可以使用 WCF 异步模式来实现这一点。当您使用 async 属性标记您的 operationContract 时,WCF 使用 IO CompletionPort 线程来处理请求。

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

IO CompletionPort 线程要快得多,而且不会降低服务器的性能或资源。

看下面link获取更多信息。

关于c# - WCF 异步服务器端处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8194476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com