C# ASP.NET中结合WCF服务监视的长轮询示例?

C# ASP.NET中结合WCF服务监视的长轮询示例?,c#,asp.net,wcf,windows-services,long-polling,C#,Asp.net,Wcf,Windows Services,Long Polling,我们的系统中运行着许多Windows服务(内置C#)。我们使用WCF与它们通信并控制它们,因为WCF提供了与这些进程的非常方便的通信 现在,在用于管理、监视和排除服务故障的Windows GUI中,我们只需注册回调,并在服务提供消息时接收通知。显然,这个应用程序是有状态的,WCF提供了在与服务保持连接时调用本地委托的能力 在用户实际使用的web应用程序中,我们希望使用长轮询在web页面上有一个状态区域(iframe、AJAX等),显示服务报告的任何问题。我们希望使用长轮询或其他技术来最小化网络上

我们的系统中运行着许多Windows服务(内置C#)。我们使用WCF与它们通信并控制它们,因为WCF提供了与这些进程的非常方便的通信

现在,在用于管理、监视和排除服务故障的Windows GUI中,我们只需注册回调,并在服务提供消息时接收通知。显然,这个应用程序是有状态的,WCF提供了在与服务保持连接时调用本地委托的能力

在用户实际使用的web应用程序中,我们希望使用长轮询在web页面上有一个状态区域(iframe、AJAX等),显示服务报告的任何问题。我们希望使用长轮询或其他技术来最小化网络上的实际轮询

我们遇到的问题是,我们需要一些东西来生成长轮询HTTP请求,该请求将以某种方式始终在IIS中运行,其本身可以是WCF连接到我们的服务,并且可以将基于事件/委托的WCF响应转换为阻塞式长轮询响应。我们的系统中的某些组件总是处于循环、轮询中,这感觉像是鸡和蛋的情况,而这正是我们试图避免的


有人有这样做的例子吗?

好吧,如果您的服务与WCF一起提供,为什么不简单地使用WCF服务呢?然后从等式中完全删除IIS服务器。如果用户想要查看服务正在做什么,那么他们可以直接从服务中检索信息


下面是一个博客,其中有人展示了如何做到这一点:

在评论中似乎表明,您只能调用IIS托管的WCF服务,而不能调用Windows服务托管的WCF服务。您完全可以使用javascript使用自托管服务。服务需要具有适当的属性,但不需要更改实际代码。见:或