Ich habe nach Möglichkeiten gesucht, Google Mail-ähnliches Messaging in einem Browser zu implementieren, und bin zum Comet- Konzept gekommen. Es ist mir jedoch nicht gelungen, eine gute .NET-Implementierung zu finden, mit der ich dies in IIS tun kann (unsere Anwendung ist in ASP.NET 2.0 geschrieben).
Für die Lösungen, die ich gefunden habe (oder an die ich denken könnte), muss pro Benutzer ein laufender Thread hinterlassen werden, damit er eine Antwort erhält, sobald er eine Nachricht erhält. Das skaliert natürlich überhaupt nicht.
Meine Frage lautet also: Kennen Sie eine ASP.NET-Implementierung für Comet, die anders funktioniert? Ist das mit IIS überhaupt möglich?
Antworten:
Comet ist aufgrund der anhaltenden Konnektivität von Comet schwierig mit IIS zu skalieren, aber es gibt ein Team, das sich derzeit mit Comet-Szenarien befasst. Schauen Sie sich auch Aaron Lerchs Blog an, da er meiner Meinung nach einige frühe Kometenarbeiten in ASP.NET durchgeführt hat.
quelle
WebSync ist ein standardkonformer skalierbarer Comet-Server, der direkt in die IIS / .NET-Pipeline integriert wird. Es ist auch auf Anfrage als gehosteter Dienst verfügbar.
Es werden offiziell bis zu 20.000 gleichzeitige Clientverbindungen pro Serverknoten unterstützt, bei einzelnen Tests wurden jedoch bis zu 50.000 erreicht. Der Nachrichtendurchsatz ist um die Marke von 1.000 bis 5.000 gleichzeitigen Clients optimal, wobei Nachrichten von einem einzelnen Knoten bis zu 300.000 pro Sekunde übermittelt werden.
Es umfasst clientseitige Unterstützung für JavaScript, .NET / Mono, iOS, Mac OS X, Java, Silverlight, Windows Phone, Windows Runtime und .NET Compact sowie serverseitige Unterstützung für .NET / Mono und PHP.
Clustering wird standardmäßig mit SQL Server oder Azure Caching unterstützt, benutzerdefinierte Anbieter können jedoch für nahezu alles geschrieben werden (Redis, NCache).
Haftungsausschluss: Ich arbeite für das Unternehmen, das dieses Produkt entwickelt.
quelle
Ich habe kürzlich ein einfaches Beispiel für einen Long Polling Chat Server mit MVC 3 Async Controllern geschrieben, das auf einem großartigen Artikel von Clay Lenhart basiert
Sie können das Beispiel für eine AppHarbor-Bereitstellung verwenden, die ich basierend auf der Quelle aus dem BitBucket-Projekt eingerichtet habe.
Weitere Informationen finden Sie in meinem Blog-Beitrag, in dem das Projekt erläutert wird .
quelle
Eigentlich gibt es viele Möglichkeiten, eine von Ajax unterstützte Website mit ASP.NET zu erstellen, aber ehrlich gesagt ist PokeIn der einfachste Weg, eine von Ajax unterstützte Webanwendung für Kometen zu erstellen. Es hat eines der Projekte meiner Firma gerettet.
quelle
Sie können sich auch das Kaazing Enterprise Gateway ansehen das eine Produktionsversion seines webSocket [HTML5] -Gateways veröffentlicht hat, das den Kometenweg vollständig ersetzt und Vollduplexverbindungen zwischen Browsern und Anwendungsservern ermöglicht.
Sie können sich auch Light Streamer-Demos ansehen
quelle
Ich habe vor langer Zeit einmal eine Chat-Site verwendet, die einen benutzerdefinierten http-Streaming-Server verwendet. Ich habe diese Software tatsächlich einmal aus purer Neugier reproduziert, und es ist einfach genug, denke ich. Ich würde niemals versuchen, eine ähnliche Art von "unendlicher Anforderung" in IIS zu implementieren, insbesondere in ASP.NET, da die Anforderungen einen Thread-Pool-Thread (oder einen E / A-Thread, wenn asynchrone Handler verwendet werden) auf unbestimmte Zeit binden, was bedeutet, dass Sie dies nur können Behandeln Sie so viel pro Server, wie Ihre Thread-Pool-Konfiguration zulässt.
Wenn ich ein starkes legitimes Bedürfnis nach solchen Funktionen hätte, würde ich ehrlich gesagt einen benutzerdefinierten http-Server dafür schreiben.
Ich weiß, dass Ihre Frage nicht wirklich beantwortet wird, aber ich dachte, die Eingabe könnte relevant sein.
quelle
Die WS-I - Gruppe veröffentlicht etwas namens „Zuverlässig Sicher Profil“ , das eine Glasfische und hat .NET - Implementierung , dass scheinbar inter funktionieren gut.
Mit etwas Glück gibt es auch eine Javascript- Implementierung.
Es gibt auch eine Silverlight-Implementierung, die HTTP-Duplex verwendet. Sie können Javascript mit dem Silverlight- Objekt verbinden, um Rückrufe zu erhalten, wenn ein Push auftritt.
Es gibt auch kommerzielle kostenpflichtige Versionen .
quelle
Ich denke, der Comet-Ansatz ist nicht wirklich skalierbar, es sei denn, Sie sind bereit, die Webfarm horizontal zu erweitern (indem Sie dem Mix weitere Webserver hinzufügen). Die Funktionsweise besteht darin, dass eine TCP-Verbindung pro Benutzersitzung offen bleibt, sodass der Server von Zeit zu Zeit Daten in diese Verbindung verschieben kann, um den Benutzer sofort über eine Änderung oder Aktivität zu informieren.
quelle