it-swarm-eu.dev

Comet-Implementierung für ASP.NET?

Ich habe nach Möglichkeiten gesucht, um Google Mail-ähnliche Nachrichten in einem Browser zu implementieren, und bin zum Konzept Comet gelangt. Es ist mir jedoch nicht gelungen, eine gute .NET-Implementierung zu finden, mit der ich dies in IIS (unsere Anwendung ist in ASP.NET 2.0 geschrieben) ausführen kann.

Die Lösungen, die ich gefunden habe (oder die ich mir auch vorstellen könnte), erfordern, dass ein Thread pro Benutzer ausgeführt wird, sodass 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 überhaupt mit IIS möglich?

102
Doron Yaacoby

Die Skalierbarkeit von Comet mit IIS) ist aufgrund der ständigen Konnektivität von Comet schwierig, aber es gibt ein Team, das sich derzeit mit Comet-Szenarien befasst. Siehe auch Aaron Lerchs Blog da ich glaube, dass er einige frühe Comet-Arbeiten in ASP.NET durchgeführt hat.

44
Scott Hanselman

WebSync ist ein standardkonformer skalierbarer Comet-Server, der direkt in die IIS/.NET-Pipeline integriert wird. Es ist auch auf Anfrage als gehosteter Service verfügbar.

Offiziell werden bis zu 20.000 gleichzeitige Clientverbindungen pro Serverknoten unterstützt, bei einzelnen Tests wurden jedoch bis zu 50.000 festgestellt. Der Nachrichtendurchsatz ist um die Marke von 1.000 bis 5.000 gleichzeitigen Clients herum optimal, wobei Nachrichten von einem einzelnen Knoten mit bis zu 300.000 pro Sekunde zugestellt 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.

Das 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 die Firma, die dieses Produkt entwickelt.

33
Anton

Ich habe kürzlich ein einfaches Beispiel für einen Long Polling Chat Server mit MVC 3 Async Controllern geschrieben, basierend auf einem tollen Artikel von Clay Lenhart

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 .

15
Jacob

Tatsächlich 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 zu erstellen Komet Ajax unterstützte Webanwendung. Es hat eines der Projekte meiner Firma gerettet.

4
BigbangO

Sie können sich auch das Kaazing Enterprise Gateway ansehen, das ein Produktions-Release seines webSocket [HTML5] -Gateways erstellt hat, das den Kometen-Weg vollständig ersetzt und Vollduplex-Verbindungen zwischen Browsern und Anwendungsservern ermöglicht.

Sie könnten sich auch Light Streamer Demos anschauen

3
Vikram

Die WS-I-Gruppe veröffentlichte etwas mit dem Namen "Reliable Secure Profile" , das einen Glass Fish hat und .NET-Implementierung das anscheinend interoperabel gut funktioniert.

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 abzurufen, wenn ein Push auftritt.

Es gibt auch kommerziell bezahlte Versionen .

1

Ich habe vor langer Zeit eine Chat-Site verwendet, die einen benutzerdefinierten HTTP-Streaming-Server verwendet. Ich habe diese Software tatsächlich aus purer Neugier reproduziert, und ich denke, es ist einfach genug, dies zu tun. Ich würde niemals versuchen, eine ähnliche Art von "unendlicher Anforderung" in IIS zu implementieren, insbesondere in ASP.NET, da die Anforderungen einen Threadpool-Thread (oder IO Thread, wenn asynchrone Handler vorhanden sind) binden verwendet) auf unbestimmte Zeit, was bedeutet, dass Sie nur so viel pro Server verarbeiten können, 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 das Ihre Frage nicht wirklich beantwortet, aber ich dachte, die Eingabe könnte relevant sein.

1
Chris

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). So funktioniert es, dass eine TCP Verbindung pro Benutzersitzung geöffnet bleibt, damit der Server von Zeit zu Zeit Daten in diese Verbindung pushen kann, um den Benutzer sofort über eine Änderung oder Aktivität zu informieren.

0
cruizer