gpt4 book ai didi

c# - 是否可以通过一个连接在 .Net 中实现异步 Web 服务调用?

转载 作者:行者123 更新时间:2023-11-30 17:59:15 25 4
gpt4 key购买 nike

我有一个 .net Web 服务。它有一个方法执行一个需要 60 秒的任务,然后将字符串结果返回给客户端。

在某些网络中,尤其是低带宽网络中,我会在 40 秒内收到超时错误,然后 webservice 方法会在 60 秒内完成其任务。

现在我想实现 webservice 异步调用以支持低带宽网络。

在异步 webservice 调用中,一种方法是使用运行 webservice 方法并将 webservice 结果返回到主线程的线程,如下图所示。

enter image description here

但我的问题不会用这种方法解决,因为该线程使用一个连接。

我需要另一种方法。我的客户端调用 webservice 方法和方法中的一个线程开始其操作,当任务完成时,1) webservice 发送一条消息,表明您的响应已准备就绪,或者,2) 客户端检查 web 服务是否response is ready(我认为轮询机制)如下图。

enter image description here

如何在 .net 中实现第二种方法?可能吗?

谢谢。

最佳答案

在您的数据库上创建一个表来存储流程的状态。

UniqClientId, ProcessId, StartTime, EndTime and any other state if required.
  1. 客户端通过传递其唯一 ID 向服务器发送请求。
  2. 服务器将进程记录到上表并启动进程。
  3. 客户端立即联系服务器(2-3 秒或 15-20 秒,具体取决于您的应用程序)以检查流程是否完成。
  4. 如果客户端得到处理已经完成的响应,则它请求服务器发送响应。

在两者之间,服务器执行以下工作。

  1. 当进程完成时,将 EndTime 存储在上表中。
  2. 提供了一种通过检查上表来发送进程状态的方法。
  3. 提供发送响应的方法。

我不确定你的服务到底在做什么,但如果你的流程操作只是修改数据库上的某个表,那么实现起来并不难。

关于c# - 是否可以通过一个连接在 .Net 中实现异步 Web 服务调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11408945/

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