我在Windows服务中托管了WCF服务。我希望网站能够异步调用它,然后当工作完成时,WCF服务将让网站知道结果。我已经研究了实现这一目标的各种方法,但我希望得到更多关于哪种方式最佳的建议。我已经研究过使用回调,但也读过它们可能不可靠。我已经阅读过根本不这样做,只是在我的服务中有另一个界面供网站查询状态。我已经看过使用MSMQ,目前看起来像是我喜欢的方式,但想了解更多关于如何设置它的信息,或者我是否应该这样做。
有人有任何建议吗?
答案 0 :(得分:2)
网络上任何通信的性质都是不可靠的。声明:
我已经研究过使用回调,但也读过它们可能不可靠
假设您的意思是WCF回调,它们与客户端/服务器本身一样不可靠,它们都使用相同的机制。
也就是说,您可以将WCF服务的客户端存储在HttpApplicationState
(如果呼叫是应用程序范围的)或HttpSessionState
(如果呼叫是会话本地的)。
生成代理时,请确保选中使用异步调用的选项(或在合同上指定)。
然后,您将使用回调(委托)进行呼叫,以指示异步呼叫何时完成。
当呼叫完成时,您将结果存储在会话状态中。
如果这是前端客户需要注意的事情,那么浏览器必须轮询您的站点,检查返回结果,重定向到可以在填充结果时显示结果的页面
答案 1 :(得分:1)
为您的应用选择绑定取决于
由于您的应用程序是Web应用程序并且是基于请求/响应模型构建的,因此您将无法使用asyncronous或msmq样式来构建此体系结构(或者不可建议),因为不会有任何线程列表延迟的异步响应或msmq调用。 您可以使用单向方法和直接调用方法。在这种情况下,为了减少响应时间,您需要设备方法来优化服务方法及其正在进行的处理。