【问题标题】:Does SOAP support canceling a call?SOAP 是否支持取消呼叫?
【发布时间】:2010-02-04 15:24:11
【问题描述】:

使用 SOAP 协议时,是否可以使用 SOAP 取消挂起的远程函数调用?

我看到了三种不同的情况:

  • A) 向需要很长时间才能完成的服务发出请求。例如,当复制包含大量文件的目录时,可以取消文件复制循环吗?

  • B) 发出返回长列表的请求。例如,当查询一个很大的内存用户名列表时,可以取消这个列表响应的传输吗?

  • C) 取消仍在内部呼叫队列中的呼叫;换句话说,在服务器开始处理它之前。在短时间内发出大量异步调用时,可能会发生这种情况。

【问题讨论】:

    标签: soap request-cancelling


    【解决方案1】:

    从客户端的角度来看,取消同步(请求-响应)SOAP 调用与任何其他 HTTP 调用相同 - 只需断开连接并停止侦听响应即可。编写良好的服务器会在进行冗长的操作之前检查客户端是否仍然连接(例如,在 .NET 中,服务器会检查 IsClientConnected),如果没有,则应取消操作。

    但是,无法以这种方式取消单向调用,因为您已经发送了有效负载并断开了连接。取消单向调用需要显式调用 SOAP 服务上的某种取消方法,它必须显式支持。

    【讨论】:

    • 感谢您的回复。因此,您假设每次呼叫都会建立一个新连接。这不会严重影响性能吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多