【发布时间】:2012-07-10 07:57:11
【问题描述】:
我有一个 .net 网络服务。它有一个方法可以完成一个需要 60 秒的任务,然后将字符串结果返回给客户端。
在某些网络特别是低带宽中,我在 40 秒内收到超时错误,然后 webservice 方法在 60 秒内完成其任务。
现在我想实现 web 服务异步调用以支持低带宽网络。
在异步webservice调用中,一种方法是使用一个线程来运行webservice方法并将webservice结果返回给主线程,如下图所示。
但我的问题不会在这种方法中得到解决,因为该线程使用一个连接。
我需要另一种方法。我的客户端调用 webservice 方法和方法中的一个线程开始其操作,当任务完成时,1) webservice 发送一条消息,表明您的响应已准备好,或者,2) 客户端检查 webservice 是否响应已准备好(我认为是轮询机制) 如下图。
如何在 .net 中实现第二种方法?有可能吗?
谢谢。
【问题讨论】:
-
webservice有做数据库相关的操作吗?可能是使用
MS-Sql并且客户端可以直接访问它? -
是的,它是一个存储过程。
-
我认为 wsDualHttpBinding 不是一个选项,因为客户端没有公共 URI。
标签: c# .net web-services asynchronous long-polling