2012-04-05 76 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