我有一个.net Webservice。它有一个方法,它执行一个需要60秒的任务,然后将字符串结果返回给客户端。
在某些网络中,特别是低带宽,我会在webservice方法在60秒内执行任务之前的40秒内收到超时错误。
现在我想实现webservice Async调用以支持低带宽网络。
在Async webservice调用中,一种方法是使用运行webservice方法的线程,并将webservice结果返回到主线程,如下图所示。
但是我的问题不会在这种方法中解决,因为该线程使用一个连接。
我需要另一种方法。我的客户端调用webservice方法和方法中的一个线程启动它的操作,当任务完成时, 1)webservice发送一条消息,表明你的响应已准备就绪,或者 2)客户端检查是否有webservice响应准备就绪(我认为是民意调查机制)如下图所示。
如何在.net中实现第二种方法?有可能吗?
感谢。
答案 0 :(得分:1)
在数据库上创建一个表来存储进程的状态。
UniqClientId, ProcessId, StartTime, EndTime and any other state if required.
在两者之间,服务器执行以下任务。
我不确定你的服务到底在做什么,但是如果你的进程的操作只是为了修改数据库上的某个表,那么实现它并不困难。