我正在尝试使用 WCF 实现彗星式服务器推送到 ajax Web 应用程序。
在我的 WCF 服务中,我实现了一个 WaitForEvents 方法,该方法调用 Monitor.Wait 来挂起线程,直到新数据到达。此时,Monitor 被脉冲,该方法返回关闭彗星样式请求的新数据。
发生这种情况时会再次发出请求。
目前,这工作正常,但我注意到 WCF 需要为每个连接的用户创建一个新线程。这可能是因为线程在数据进入之前无法返回到线程池,因此每个连接的用户都需要一个新线程。
我想通过让一个线程服务多个连接来提高此实现的效率。如果我要使用套接字,这可以通过保持套接字打开并首先将线程返回到线程池来完成。当有新数据到来时,它会被另一个线程传递,我们可以直接将新数据写入套接字并关闭它。
有人知道如何通过 WCF 做到这一点吗?
我一直在查看“推送式流媒体” http://msdn.microsoft.com/en-us/library/bb472551.aspx,他们提到“WCF 实现了一个“拉”模型,其中应用程序代码(服务) 返回 Stream 的一个实例,并依赖较低级别的基础设施从该流中提取数据并将其写入网络。” 但我在网站上找不到任何例子。
提前谢谢了!