2013年WCF长轮询

时间:2013-04-19 22:31:22

标签: multithreading wcf resources polling scalable

经历了一些阅读,包括......

......我想我已准备好长时间投票了。

从第二个链接,我的理解是异步模式允许我们:

  1. 在WCF服务器上收到请求
  2. 调用BeginMyMethod,它返回一个IAsyncResult
  3. 在接收到的线程的同时挂在IAsyncResult上 请求“安全休息” - 或被释放? - 不消耗任何额外费用 资源
  4. 在相关业务逻辑事件时“将IAsyncResult退出” 发生
  5. 使用IAsyncResult调用EndMyMethod,在此期间我们完成响应(即将数据写回客户端)
  6. 我的假设听起来是否正确?我还假设这是可扩展的,因为上面的机制保持零线程等待事件。

    这是今天和.NET 4.5实现WCF长轮询的最佳方式吗?

2 个答案:

答案 0 :(得分:1)

我相信我最初的印象是错误的。当WCF请求处理程序线程收到请求并将其交给工作线程时,我认为所有资源都以某种方式被神奇地释放。这不是这种情况,因为工作线程变成现在正在等待的工作线程!随着请求数量的增加,这听起来并不比传统的轮询更具可扩展性。

虽然像SignalR这样的框架提供长轮询,但我认为没有办法在WCF中本地构建它,而不会占用线程。

我遇到了一些其他有用的链接。令人震惊的是,他们似乎从可扩展性的角度推荐传统民意调查。

如果你们有任何其他见解,请告诉我。

答案 1 :(得分:0)

您是否考虑过双工渠道的发布商订户模式?