首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebHttpBinding和回调

WebHttpBinding和回调
EN

Stack Overflow用户
提问于 2011-06-08 01:41:15
回答 2查看 1.5K关注 0票数 0

我有一个网站,在那里我可以使用jQuery调用我的asp.net服务。有时WCF服务必须具有询问用户确认smth的能力,并取决于用户选择继续或取消工作

回调对我有帮助吗?或任何其他想法的感谢!

EN

回答 2

Stack Overflow用户

发布于 2011-06-08 02:09:19

回调契约在这种情况下不会起作用,因为它们主要用于双工通信,而WebHttpBinding上没有双工(在Silverlight中有一个轮询双工场景的解决方案,我在javascript中看到了一个使用它的实现,但对于您的场景来说,这可能太复杂了)。

您可以做的是将操作一分为二。第一个将“启动”操作,并返回一个标识符和一些附加信息,以告诉客户端该操作是否刚刚完成,或者是否需要附加信息。在前一种情况下,客户端随后可以调用第二个操作,传递标识符以获得结果。在第二个调用中,客户端将再次进行调用,但传递完成(或取消)操作所需的附加信息。

票数 2
EN

Stack Overflow用户

发布于 2011-06-08 04:33:04

你的架构是错误的。原因:

  • 服务无法回调客户端的浏览器。真正的HTTP回调工作方式类似于反向通信--客户端托管由客户端调用的服务。在您的案例中,客户端是浏览器--您希望如何在浏览器中托管服务?您希望如何打开来自浏览器的传入通信的端口?使用"callback like“功能的解决方案基于服务池化。您可以使用JavaScript定时器并实现自己的池化机制。
  • 客户端浏览器无法启动分布式事务,因此您无法在客户端上启动事务。您也不能在多个操作上使用服务器端事务,因为它需要每个会话实例化,而这又需要会话通道。
  • WCF JSON/REST服务不支持transactions
  • WCF回调(双工
  • JSON/REST服务不会为您构建池化解决方案-您必须自己构建池解决方案-您必须自己构建池解决方案)
  • WCF JSON/REST服务不支持分布式会话JSON/REST服务不支持会话通道/服务器端会话

这是您的解决方案的技术方面。

您的解决方案看起来更像是工作流服务的场景,在此场景中,您可以启动工作流,然后它会一直运行到等待用户输入为止。在提供输入之前,工作流可以持久化到数据库中,因此通常用户可以在几天后提供输入。当输入被提供时,服务可以继续。启动服务并提供每个所需的输入被建模为从客户端调用的单独操作。对于从JavaScript调用的东西来说,这不是通常的场景,但它应该是可能的,因为您可以编写自定义的WebHttpContextBinding来支持工作流。它仍然不会实现用户会被自动询问的情况--这是你的责任,当弹出窗口应该出现并处理它的时候。

如果你离开了标准的WCF世界,你可以看看像COMET这样的解决方案,它提供了AJAX推送/回调。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6269391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档