【问题标题】:Comet with ASP.NET AsyncHttpHandlersComet 与 ASP.NET AsyncHttpHandlers
【发布时间】:2012-04-05 14:08:11
【问题描述】:

我正在我当前的 asp.net 应用程序中使用 AsyncHttpHandlers 实现彗星。根据我的实现,客户端最初在 AsyncHttpHandler 上向服务器(及其用户 ID)发送通知挂钩请求,在服务器端,我维护用户 ID(键)和 IAynsResult(值)的全局(应用程序级别)字典。因此,当收到向用户发送通知的请求时,我只需从全局字典中选择匹配的 IAsyncResult 并将响应发送给客户端用户。

我担心的是,在应用程序级别维护用户 ID 和 IAsyncResult 的字典是一个好的设计吗?我觉得在高流量时它会给服务器带来很大的负载。 有没有其他方法可以实现彗星。或者在高流量场景中实现彗星的好的设计是什么。

【问题讨论】:

  • 你应该检查 PokeIn 库。

标签: asp.net .net comet ihttpasynchandler


【解决方案1】:

这取决于对服务器的请求数量,IAsyncResult 请求利用进程的ThreadPool,它自动管理工作线程的数量。这些线程被分配一个任务,运行它们直到完成,然后返回到 ThreadPool 以供重复使用。

ThreadPool 被 .NET 的其他方面使用,并提供 有限 数量的线程。如果您过度使用它,您的任务可能会被阻止等待其他人完成!

因此,基本上,在 ASP.net 上运行彗星服务器需要强大的硬件,或者在多个服务器上分发应用程序。

我会推荐HTML5 WebSocket,它是用于在 HTML 中实现套接字的W3C API,并且更容易在 ASP.net 服务器上设置:

SignalR for .net 4

ASP.net WebSocket API for .net 4.5

【讨论】:

猜你喜欢
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 2010-09-09
  • 2011-02-10
  • 1970-01-01
相关资源
最近更新 更多