2010-02-04 101 views
2

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

我看到三个不同的情况:

  • A)制作到需要很长的时间来完成一个服务的请求。例如,当复制包含大量文件的目录时,文件复制循环是否可以取消? B)做出一个返回长列表的请求。例如,当查询内存大的用户名列表时,该列表响应的传输是否可以取消?

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

回答

3

从视客户端的点,取消同步(请求响应)SOAP呼叫是一样的任何其他HTTP调用 - 只是断开并停止监听响应。一个写得很好的服务器将在继续进行冗长的操作之前检查客户端是否仍然连接(例如,在.NET中,服务器将检查IsClientConnected),如果不是,则应该取消操作。

然而,单向通话不能以这种方式取消,因为您已经发送了有效载荷并断开连接。取消单向调用将需要在SOAP服务上显式调用某种取消方法,它必须明确支持。

+0

感谢您的回复。所以你做了一个假设,每个电话都会有一个新的连接。这不会严重伤害表现吗? – 2010-02-05 09:20:09