2012-04-05 80 views
1

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

我的问题是,在应用程序级别维护一个Userid和IAsyncResult字典是一个好的设计吗?我觉得在高流量的时候会给服务器带来很多负担。 有没有其他方法可以实现这颗彗星。或者在高流量情况下实现彗星的好设计是什么。

+0

您应该检查PokeIn库。 – Zuuum 2012-04-09 10:05:48

回答

1

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

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

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

我会建议HTML5 WebSocket,这是W3C API在HTML实施插座,更容易安装的ASP.net服务器上:

SignalR for .net 4

ASP.net WebSocket API for .net 4.5

+0

是否可以使用HTML5 Websockets创建视频聊天服务器? – Sumit 2012-04-06 08:16:14

+0

不,它不是!流式传输部分无问题,但无法以这种方式呈现视频流:http://groups.google.com/a/chromium.org/group/chromium-html5/browse_thread/thread/bec3ac48af5766b1?pli=1 – 2012-04-06 08:50:36

+0

感谢您的回复,我只想实现使用websockets的流媒体部分。 – Sumit 2012-04-06 10:50:42