long-运行 异步操作是否有任何(广泛实施的)WS-* 标准?
Is there any (widely implemented) WS-* standard for long-running asyncronous operations?
我正在实施一个 Web 服务,客户可以在其中提交可能很长的 运行 任务,之后他们会收到一个异步完成令牌(在我的例子中是一个 GUID)。令牌可用于轮询操作状态,可能检索计算结果或计算期间发生的错误。此外,操作可能随时被取消。目前,客户端需要在完成后取消操作以释放存储的结果,但是,我预计还需要某种形式的结果垃圾收集。
这个设置对客户端来说很重要:它需要存储 GUID 令牌,定期轮询,如果不再需要记得取消操作,处理异步故障等。如果需要身份验证(WS-Security, WS-Trust),情况会更复杂,例如必须禁止访问另一个用户启动的操作的状态。
对于这种异步操作是否有广泛可用的、可互操作的 WS-* 标准?我希望至少能够从 WCF 和 JAX-WS 调用服务器客户端,并可能将异步作业与其他 WS-* 标准结合使用。滚动我自己的轮询解决方案不是什么大问题,但是,我不想重新发明轮子。
不太确定 WS-* 标准。最近我们的团队使用 Hangfire 实现了一些与您的类似的功能。
由于您可以使用代码轻松集成 Hangfire,因此您可以将作业提交公开为一个接口并实现一些逻辑来生成 GUID 并将任务排队到 Hangfire 服务器,然后在业务逻辑中实现您的需求。
我正在实施一个 Web 服务,客户可以在其中提交可能很长的 运行 任务,之后他们会收到一个异步完成令牌(在我的例子中是一个 GUID)。令牌可用于轮询操作状态,可能检索计算结果或计算期间发生的错误。此外,操作可能随时被取消。目前,客户端需要在完成后取消操作以释放存储的结果,但是,我预计还需要某种形式的结果垃圾收集。
这个设置对客户端来说很重要:它需要存储 GUID 令牌,定期轮询,如果不再需要记得取消操作,处理异步故障等。如果需要身份验证(WS-Security, WS-Trust),情况会更复杂,例如必须禁止访问另一个用户启动的操作的状态。
对于这种异步操作是否有广泛可用的、可互操作的 WS-* 标准?我希望至少能够从 WCF 和 JAX-WS 调用服务器客户端,并可能将异步作业与其他 WS-* 标准结合使用。滚动我自己的轮询解决方案不是什么大问题,但是,我不想重新发明轮子。
不太确定 WS-* 标准。最近我们的团队使用 Hangfire 实现了一些与您的类似的功能。
由于您可以使用代码轻松集成 Hangfire,因此您可以将作业提交公开为一个接口并实现一些逻辑来生成 GUID 并将任务排队到 Hangfire 服务器,然后在业务逻辑中实现您的需求。