如何在客户端和服务器端中止对webservice的调用?

时间:2009-02-19 06:20:28

标签: java .net wcf web-services soa

我可以通过调用Web服务代理的ABORT方法中止来自客户端的Web服务调用。

但是,在托管Web服务的服务器上,调用仅在完成处理时结束。由于服务器在处理时不期望与已调用的Web方法相关的任何其他输入,因此我无法从客户端关闭它。

有什么方法可以中断服务器上的调用,即停止大型计算(并从数据库服务器中提取一些数据)服务器正在进行哪些工作?

2 个答案:

答案 0 :(得分:2)

如果您使用ASMX Web服务,肯定无法做到这一点。也许其他人可以谈论是否可以使用WCF。

通常,它会要求您编写服务以期望中断。大多数服务代码都不是那样编写的。

您是否希望经常中止请求?如果没有,那么最好不要在服务器上什么也不做。

答案 1 :(得分:1)

由于您正在谈论一个简单的同步请求 - 响应,我不知道您将如何做到这一点。

方法调用通常需要多长时间?

您想要的行为听起来像是:

  • 启动一系列执行操作的操作(处理某些数据),获取cookie
  • 当流程完成(轮询/获得通知)时,使用cookie
  • 获取结果
  • 使用cookie
  • 传递控制指令,例如中止

这听起来像是将处理建模为工作流,而不是函数调用。

如果您发现切换到这种做事模式有很大好处,那么是的,您有选择权。否则,仅仅吃掉(不经常)浪费的计算成本可能会更简单。