网站使用回调调用Windows服务

时间:2011-08-22 15:50:32

标签: c# .net wcf asynchronous windows-services

我在Windows服务中托管了WCF服务。我希望网站能够异步调用它,然后当工作完成时,WCF服务将让网站知道结果。我已经研究了实现这一目标的各种方法,但我希望得到更多关于哪种方式最佳的建议。我已经研究过使用回调,但也读过它们可能不可靠。我已经阅读过根本不这样做,只是在我的服务中有另一个界面供网站查询状态。我已经看过使用MSMQ,目前看起来像是我喜欢的方式,但想了解更多关于如何设置它的信息,或者我是否应该这样做。

有人有任何建议吗?

2 个答案:

答案 0 :(得分:2)

网络上任何通信的性质都是不可靠的。声明:

  

我已经研究过使用回调,但也读过它们可能不可靠

假设您的意思是WCF回调,它们与客户端/服务器本身一样不可靠,它们都使用相同的机制。

也就是说,您可以将WCF服务的客户端存储在HttpApplicationState(如果呼叫是应用程序范围的)或HttpSessionState(如果呼叫是会话本地的)。

生成代理时,请确保选中使用异步调用的选项(或在合同上指定)。

然后,您将使用回调(委托)进行呼叫,以指示异步呼叫何时完成。

当呼叫完成时,您将结果存储在会话状态中。

如果这是前端客户需要注意的事情,那么浏览器必须轮询您的站点,检查返回结果,重定向到可以在填充结果时显示结果的页面

答案 1 :(得分:1)

为您的应用选择绑定取决于

  1. 您的应用程序的架构
  2. 要求
  3. 是否需要互操作性。
  4. 申请的响应时间
  5. 实施时间的可用性
  6. 您正在使用或想要使用的基础设施。
  7. 由于您的应用程序是Web应用程序并且是基于请求/响应模型构建的,因此您将无法使用asyncronous或msmq样式来构建此体系结构(或者不可建议),因为不会有任何线程列表延迟的异步响应或msmq调用。 您可以使用单向方法和直接调用方法。在这种情况下,为了减少响应时间,您需要设备方法来优化服务方法及其正在进行的处理。