gpt4 book ai didi

c# - WCF cometd 和线程

转载 作者:太空狗 更新时间:2023-10-29 19:44:43 24 4
gpt4 key购买 nike

我正在尝试使用 WCF 实现 cometd 式服务器推送到 ajax 网络应用程序。

在我的 WCF 服务中,我实现了一个 WaitForEvents 方法,它调用 Monitor.Wait 来挂起线程,直到新数据到达。此时,Monitor 发出脉冲,该方法返回关闭 comet 样式请求的新数据。

发生这种情况时会再次发出请求。

目前,这工作正常,但我注意到 WCF 需要为每个连接的用户创建一个新线程。这可能是因为在数据进来之前线程无法返回到线程池,因此每个连接的用户都需要一个新线程。

我想通过让一个线程为多个连接提供服务来提高此实现的效率。如果我要使用套接字,这可以通过保持套接字打开并首先将线程返回到线程池来完成。当新数据到达时,它将由另一个线程传递,我们可以将新数据直接写入套接字并关闭它。

有人知道如何通过 WCF 完成此操作吗?

我一直在看“推送式流媒体”http://msdn.microsoft.com/en-us/library/bb472551.aspx他们提到“WCF 实现了一个“拉”模型,其中应用程序代码(服务)返回 Stream 的一个实例,并依赖于较低级别的基础结构从该流中拉取数据并将其写出到网络。”但我在网站上找不到这方面的任何示例。

非常感谢!

最佳答案

查看 nComet

它没有使用 WCF,但我相信作者正在开发使用 WCF 的版本。通过 codeplex 联系他并询问他:-)

"nComet is a .NET implementation of the Comet (reverse-AJAX push) architecture. This server-side pipeline uses long-lived client-initiated HTTP connections to push messages to the client. Once the client receives a response, it immediately opens another HTTP request, which the server holds until a message is ready. This architecture allows the server to push dynamic html/xml/json/etc to the browser, rather than the browser polling the server.

This project is scoped to the .NET server-side architecture, initially providing a HttpListener (for a custom host communicating with HTTP.SYS directly) as well as a ASP.NET implementation, where the ASP.NET implementation can be hosted inside IIS as well as an external process. The library will simplify the implementation of common message patterns such as pushing the latest data, as well as sync. Example code and links to multiple client-side javascript implementations will also be provided."

关于c# - WCF cometd 和线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/971007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com