我有一个网站,在那里我可以使用jQuery调用我的asp.net服务。有时WCF服务必须具有询问用户确认smth的能力,并取决于用户选择继续或取消工作
回调对我有帮助吗?或任何其他想法的感谢!
发布于 2011-06-08 02:09:19
回调契约在这种情况下不会起作用,因为它们主要用于双工通信,而WebHttpBinding上没有双工(在Silverlight中有一个轮询双工场景的解决方案,我在javascript中看到了一个使用它的实现,但对于您的场景来说,这可能太复杂了)。
您可以做的是将操作一分为二。第一个将“启动”操作,并返回一个标识符和一些附加信息,以告诉客户端该操作是否刚刚完成,或者是否需要附加信息。在前一种情况下,客户端随后可以调用第二个操作,传递标识符以获得结果。在第二个调用中,客户端将再次进行调用,但传递完成(或取消)操作所需的附加信息。
发布于 2011-06-08 04:33:04
你的架构是错误的。原因:
这是您的解决方案的技术方面。
您的解决方案看起来更像是工作流服务的场景,在此场景中,您可以启动工作流,然后它会一直运行到等待用户输入为止。在提供输入之前,工作流可以持久化到数据库中,因此通常用户可以在几天后提供输入。当输入被提供时,服务可以继续。启动服务并提供每个所需的输入被建模为从客户端调用的单独操作。对于从JavaScript调用的东西来说,这不是通常的场景,但它应该是可能的,因为您可以编写自定义的WebHttpContextBinding来支持工作流。它仍然不会实现用户会被自动询问的情况--这是你的责任,当弹出窗口应该出现并处理它的时候。
如果你离开了标准的WCF世界,你可以看看像COMET这样的解决方案,它提供了AJAX推送/回调。
https://stackoverflow.com/questions/6269391
复制相似问题