multithreading - 2013年WCF长投票

标签 multithreading wcf resources polling scalable

经过几读,包括...

  • http://anthymecaillard.wordpress.com/2012/06/06/wcf-real-time-web-development-with-long-polling/
  • How does a WCF server inform a WCF client about changes? (Better solution then simple polling, e.g. Comet or long polling)

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

    从第二个链接来看,我的理解是异步模式使我们能够:
  • 在WCF服务器上收到一个请求
  • 调用BeginMyMethod返回一个IAsyncResult
  • 在收到线程的同时卡在IAsyncResult上
    请求“安全地休息”-还是被释放? -不消耗任何额外费用
    资源
  • 当相关的业务逻辑事件发生时,
  • “将IAsyncResult抽回”
    发生
  • 使用IAsyncResult调用EndMyMethod,在此期间我们完成响应(即,将数据写回到客户端)

  • 我的假设听起来正确吗?我还假定由于上述机制可以将零线程 bundle 在一起等待事件,因此它具有很大的可伸缩性。

    这是今天以及使用.NET 4.5实现WCF长轮询的最佳方法吗?

    最佳答案

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

    尽管诸如SignalR之类的框架提供了长时间的轮询,但我认为没有任何方法可以在WCF中以不占用线程的方式来 native 构建它。

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

  • http://www.codeproject.com/Articles/186723/Push-Messages-in-RESTful-WCF-Web-Application-with
  • Scaling a chat app - short polling vs. long polling (AJAX, PHP)

  • 让我知道你们是否还有其他见识。

    关于multithreading - 2013年WCF长投票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16114425/

    相关文章:

    c# - IIS 7.5 中带有 REST/SOAP 端点的 WCF 4 服务

    Flutter:AndroidManifest 找不到@xml 资源

    c - 使用 fork() 作为线程应用程序的后台

    c# - Winforms Thread Application Hang(后台工作线程)

    java - Spark 中的 volatile 变量

    java - 如何检测Java中的临界区域?

    wcf - 数据契约和动态返回类型 WCF

    c# - WCF Rest api - [WebGet] 工作,但未找到 [WebInvoke(...GET...)] 的端点

    c++ - 'Resource Acquisition Is Initialization'解决内存泄漏问题

    web-services - 有哪些好的资源可用于设计可良好扩展的基于 Web 服务的架构?