【问题标题】:WCF Long Polling in 20132013 年 WCF 长投票
【发布时间】:2013-04-13 10:12:55
【问题描述】:

已经阅读了一些内容,包括...

...我想我已经准备好进行长轮询了。

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

  1. 在 WCF 服务器上接收请求
  2. 调用返回 IAsyncResult 的 BeginMyMethod
  3. 在线程接收时挂在 IAsyncResult 上 请求“安全地休息” - 还是被释放? - 不消耗任何额外的 资源
  4. 当相关业务逻辑事件发生时“将 IAsyncResult 退出” 发生
  5. 使用 IAsyncResult 调用 EndMyMethod,在此期间我们完成响应(即将数据写回客户端)

我的假设听起来正确吗?我还假设这是由于上述机制保持零线程等待事件而具有极大的可扩展性。

这是目前使用 .NET 4.5 实现 WCF 长轮询的最佳方式吗?

【问题讨论】:

标签: multithreading wcf resources polling scalable


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    您是否考虑过双工通道上的发布者-订阅者模式?

    【讨论】:

    • 抱歉回复晚了。好久没登陆了。这可以通过 HTTP 工作吗?
    • 通过 http 发布/订阅需要一个回调地址,我相信
    猜你喜欢
    • 2013-06-06
    • 2019-04-03
    • 1970-01-01
    • 2012-10-29
    • 2012-07-14
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多