我有一个ASP.NET Web服务,它可以进行一些繁重的工作,例如一些文件操作,或者从一堆水晶报表中生成Excel Sheets。我不想被调用此Web服务而被阻止,所以我想使Web服务调用异步。另外,我想从网页上调用此Web服务,并希望有一种机制可以让我不断轮询服务器,以便我可以在屏幕上显示一些进度指示器,例如文件的数量。已处理。请注意,我不希望在完成Web方法调用时收到通知,而是希望获得实时进度状态。我该怎么办?
在服务器上编写一个单独的方法,您可以通过传递已调度的作业的ID进行查询,该方法返回的近似值介于0到100(或0.0到1.0,或其他)之间。
例如,以REST风格,您可以发出GET请求http://yourserver.com/app/jobstatus/4133/,并返回一个简单的“ 52” text/plain。然后,您只需要每隔一秒(秒?两秒?十秒?)查询一次,以查看距离有多远。
http://yourserver.com/app/jobstatus/4133/
text/plain
在后端上实际完成监视的方式在很大程度上取决于您的过程及其工作方式。