SOAP是否支持取消呼叫?

时间:2010-02-04 15:24:11

标签: soap request-cancelling

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

我看到三种不同的情况:

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

  • B)发出返回长列表的请求。例如,在查询大内存用户名列表时,是否可以取消此列表响应的传输?

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

1 个答案:

答案 0 :(得分:3)

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

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