2012-04-05 11 views
1

Ich implementiere einen Comet mit AsyncHttpHandlers in meiner aktuellen asp.net-Anwendung. Gemäß meiner Implementierung sendet der Client zunächst eine Notification Hook-Anfrage an den Server (mit seiner Benutzer-ID) an AsyncHttpHandler, und auf der Serverseite bearbeite ich ein globales (Anwendungsebene) Wörterbuch der Benutzer-ID (key) und IAynsResult (value). Wenn also eine Anforderung zum Senden einer Benachrichtigung an einen Benutzer empfangen wird, wähle ich einfach das passende IAsyncResult aus dem globalen Wörterbuch aus und sende eine Antwort an den Clientbenutzer.Comet mit ASP.NET AsyncHttpHandlers

Meine Sorge ist, hält ein Wörterbuch der Userid und IAsyncResult auf Anwendungsebene ein gutes Design? Ich denke, dass es den Server stark belasten wird, wenn es viel Verkehr gibt. Gibt es noch eine andere Möglichkeit, den Kometen zu erreichen? oder was wird das gute Design sein, um Kometen für hohe Verkehrsszenarien zu erreichen.

+0

Sie sollten PokeIn Bibliothek überprüfen. – Zuuum

Antwort

1

Das hängt von der Anzahl der Anforderungen an den Server ab, die Anforderung IAsyncResult verwendet die ThreadPool des Prozesses, die die Anzahl der Worker-Threads automatisch verwaltet. Diesen Threads wird eine Aufgabe zugewiesen, sie werden ausgeführt und dann zur Wiederverwendung an ThreadPool zurückgegeben.

Der ThreadPool wird von anderen Aspekten von .NET verwendet und bietet eine begrenzte Anzahl der Threads. Wenn Sie es zu viel nutzen, besteht die Möglichkeit, dass Ihre Aufgaben blockiert werden und auf andere warten, bis sie fertig sind!

Im Grunde genommen benötigt ein Comet-Server auf einem ASP.net entweder eine starke Hardware- oder Anwendungsverteilung über mehrere Server.

würde ich HTML5 WebSocket empfehlen, die die W3C API für die Implementierung Steckdosen in HTML und ist einfacher aufzusetzen auf einem ASP.net Server:

SignalR for .net 4

ASP.net WebSocket API for .net 4.5

+0

ist es möglich, einen Video-Chat-Server mit HTML5-Websockets zu erstellen? – Sumit

+0

Nein, ist es nicht! Der Streaming-Teil ist in Ordnung, Sie können das Video jedoch nicht so streamen: http://groups.google.com/a/chromium.org/group/chromium-html5/browse_thread/thread/bec3ac48af5766b1?pli=1 –

+0

danke für die antwort, ich möchte nur streaming part mit websockets implementieren. – Sumit