【问题标题】:How to abort the call to webservice at both client and server end?如何在客户端和服务器端中止对 web 服务的调用?
【发布时间】:2009-02-19 06:20:28
【问题描述】:

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

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

有什么方法我也可以在服务器上中止调用,即停止服务器正在处理的大型计算(并从数据库服务器中提取一些数据)?

【问题讨论】:

    标签: java .net wcf web-services soa


    【解决方案1】:

    如果您使用的是 ASMX Web 服务,那么肯定没有办法做到这一点。也许其他人可以谈谈 WCF 是否可行。

    一般来说,它会要求您编写服务以预期中断。大多数服务代码不是这样写的。

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

    【讨论】:

    • 我不希望它经常中止但是计算量很大;因此,如果用户决定做其他事情,即以某种方式想要忽略结果,那么我认为最好停止该服务器进程。
    【解决方案2】:

    既然你说的是一个简单的同步请求-响应,我不知道你会怎么做。

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

    你真正想要的行为听起来像:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-09-04
      • 1970-01-01
      • 2012-05-19
      • 2018-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      相关资源
      最近更新 更多