在服务器 WCF + Rest 上处理长 运行 任务的最佳方式
Best way to handle long running tasks on the Server WCF + Rest
我们在主机上有一个 WCF + Rest 服务 运行。我需要对主机进行客户端调用,这将在服务器上启动一个长 运行 任务(甚至长达 15 分钟),然后在该过程完成后返回查看以获取结果。一种解决方案是让客户端在初始调用后每分钟左右检查一次主机——但这似乎效率不高。有没有办法通过 WCF 公开某种类型的事件,以便在服务器上完成任务时通知客户端?此类场景的最佳方法是什么?
谢谢
如果没有更多申请细节,很难回答。
但是有一些选择(这里有一些):
- 使用消息队列初始化并在任务执行时获取事件
完成(也许矫枉过正)
- 如果客户端是 Web 客户端,并且您有可能拥有到客户端的 Web 套接字,您可以通知客户端任务已完成
- 也许(不确定这是个好主意)
您可以使用双工 wcf 合同(因为您已经使用 wcf),然后
服务可以在任务执行时调用客户端接口上的方法
完成
- 或者像您在问题中提到的那样进行简单的投票。
以下是有关双工合同的更多信息:
https://msdn.microsoft.com/en-us/library/ms731064%28v=vs.110%29.aspx
我们在主机上有一个 WCF + Rest 服务 运行。我需要对主机进行客户端调用,这将在服务器上启动一个长 运行 任务(甚至长达 15 分钟),然后在该过程完成后返回查看以获取结果。一种解决方案是让客户端在初始调用后每分钟左右检查一次主机——但这似乎效率不高。有没有办法通过 WCF 公开某种类型的事件,以便在服务器上完成任务时通知客户端?此类场景的最佳方法是什么? 谢谢
如果没有更多申请细节,很难回答。 但是有一些选择(这里有一些):
- 使用消息队列初始化并在任务执行时获取事件 完成(也许矫枉过正)
- 如果客户端是 Web 客户端,并且您有可能拥有到客户端的 Web 套接字,您可以通知客户端任务已完成
- 也许(不确定这是个好主意) 您可以使用双工 wcf 合同(因为您已经使用 wcf),然后 服务可以在任务执行时调用客户端接口上的方法 完成
- 或者像您在问题中提到的那样进行简单的投票。
以下是有关双工合同的更多信息: https://msdn.microsoft.com/en-us/library/ms731064%28v=vs.110%29.aspx