我有asp.net网站,我使用jQuery调用我的WCF服务。 有时,WCF服务必须能够向用户询问确认信息并依赖用户选择继续或取消工作
回调能帮助我吗? 或任何其他想法赞赏!
答案 0 :(得分:2)
回调契约在这种情况下不起作用,因为它们主要用于双工通信,并且WebHttpBinding上没有双工(Silverlight中有一个轮询双工场景的解决方案,我在javascript中看到过一个实现使用它,但这对你的场景来说可能太复杂了。)
您可以做的是将操作分成两部分。第一个将“启动”操作并返回一个标识符和一些附加信息,以告诉客户端操作是否刚刚完成,或者是否需要其他信息。在前一种情况下,客户端可以调用第二个操作,传递标识符以获得结果。在第二个中,客户端将再次进行呼叫,但是传递操作所需的附加信息以完成(或被取消)。
答案 1 :(得分:2)
您的架构错了。原因:
这是您的解决方案的技术方面。
您的解决方案看起来更像是启动工作流的Workflow服务的场景,并且它会一直运行到等待用户输入的某个点。在提供输入之前,工作流可以持久保存到数据库,因此通常用户可以在几天后提供输入。当提供输入时,服务可以继续。启动服务并提供每个所需的输入被建模为从客户端调用的单独操作。对于从JavaScript调用的内容,这不是常见的情况,但应该可以,因为您可以编写自定义WebHttpContextBinding来支持工作流。它仍然无法实现用户将被自动询问的情况 - 您有责任找到弹出窗口何时出现并处理它。
如果您离开标准WCF世界,您可以检查COMET等提供AJAX推送/回调的解决方案。