C# 通过回调调用Windows服务的网站

C# 通过回调调用Windows服务的网站,c#,.net,wcf,asynchronous,windows-services,C#,.net,Wcf,Asynchronous,Windows Services,我有一个托管在Windows服务中的WCF服务。我希望一个网站能够异步调用它,然后当工作完成时,WCF服务将让网站知道结果。我已经研究过实现这一目标的各种方法,但我想得到更多关于哪种方法最好的建议。我研究过使用回调,但也发现它们可能不可靠。我曾经读过一篇文章,说我根本没有这样做,只是在我的服务中有另一个界面来查询网站的状态。我已经考虑过使用MSMQ,目前看来这是我的首选方法,但我想了解更多关于如何设置或我是否应该这样做的信息 有人有什么建议吗?网络上任何通信的性质都是不可靠的。声明: 我研究过使

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


有人有什么建议吗?

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

我研究过使用回调,但也发现它们可能不可靠

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

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

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

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

调用完成后,将结果存储在会话状态中


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

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

我研究过使用回调,但也发现它们可能不可靠

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

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

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

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

调用完成后,将结果存储在会话状态中


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

为应用程序选择绑定取决于

  • 应用程序的体系结构
  • 要求
  • 是否需要互操作性
  • 应用程序的响应时间
  • 实施时间的可用性
  • 您正在使用或想要使用的基础架构
  • 由于您的应用程序是一个web应用程序,并且是基于请求/响应模型构建的,因此您将无法在此体系结构中使用Asynchronous或msmq样式(或者不可建议),因为不会有任何延迟异步响应或msmq调用的线程列表。
    您可以使用单向方法和直接调用方法。在这种情况下,为了减少响应时间,您必须找到优化服务方法及其处理的方法。

    为应用程序选择绑定取决于

  • 应用程序的体系结构
  • 要求
  • 是否需要互操作性
  • 应用程序的响应时间
  • 实施时间的可用性
  • 您正在使用或想要使用的基础架构
  • 由于您的应用程序是一个web应用程序,并且是基于请求/响应模型构建的,因此您将无法在此体系结构中使用Asynchronous或msmq样式(或者不可建议),因为不会有任何延迟异步响应或msmq调用的线程列表。
    您可以使用单向方法和直接调用方法。在这种情况下,为了缩短响应时间,您必须找到优化服务方法和处理过程的方法。

    这是一个奇怪的想法。网站不是一个程序,在服务器上没有持续存在。回调如何适应请求/响应模型?@Henk Holterman:是的,实际上是这样。你想到的是网站的客户,而不是网站本身。将代理存储到WCF服务中是很容易的,这是一个奇怪的想法。网站不是一个程序,在服务器上没有持续存在。回调如何适应请求/响应模型?@Henk Holterman:是的,实际上是这样。你想到的是网站的客户,而不是网站本身。将代理存储到WCF服务中非常简单