it-swarm.it

Implementazione di una cometa per ASP.NET?

Ho cercato modi per implementare la messaggistica simile a Gmail all'interno di un browser e sono arrivato al concetto Comet . Tuttavia, non sono stato in grado di trovare una buona implementazione .NET che mi consenta di farlo in IIS (la nostra applicazione è scritta in ASP.NET 2.0).

Le soluzioni che ho trovato (o che potrei pensare, del resto) richiedono di lasciare un thread in esecuzione per utente, in modo che possa restituirgli una risposta quando riceve un messaggio. Questo non si ridimensiona affatto, ovviamente.

Quindi la mia domanda è: conosci un'implementazione ASP.NET per Comet che funziona in modo diverso? È possibile anche con IIS?

102
Doron Yaacoby

La cometa è difficile da scalare con IIS a causa della connettività persistente della cometa, ma ora c'è una squadra che sta guardando gli scenari della cometa. Guarda anche Blog di Aaron Lerch poiché credo che sia fatto alcuni primi lavori della cometa in ASP.NET.

44
Scott Hanselman

WebSync è un server Comet scalabile conforme agli standard che si integra direttamente nella pipeline IIS/.NET. È inoltre disponibile su richiesta come servizio ospitato.

Supporta ufficialmente fino a 20.000 connessioni client simultanee per nodo del server, ma i singoli test hanno superato i 50.000. La velocità di trasmissione dei messaggi è ottimale intorno ai 1.000-5.000 contrassegni di client simultanei, con messaggi inviati fino a 300.000 al secondo da un singolo nodo.

Include supporto lato client per JavaScript, .NET/Mono, iOS, Mac OS X, Java, Silverlight, Windows Phone, Windows Runtime e .NET Compact, con supporto lato server per .NET/Mono e PHP.

Il clustering è supportato usando SQL Server o Azure Caching out of the box, ma i provider personalizzati possono essere scritti praticamente per qualsiasi cosa (Redis, NCache).

Disclaimer: Lavoro per l'azienda che sviluppa questo prodotto.

33
Anton

Di recente ho scritto un semplice esempio di un server di chat polling lungo utilizzando i controller asincroni MVC 3 basati su un ottimo articolo di Clay Lenhart

È possibile utilizzare esempio su una distribuzione AppHarbor Ho impostato in base all'origine del progetto BitBucket.

Inoltre, sono disponibili ulteriori informazioni dal mio post sul blog che spiega il progetto .

15
Jacob

In realtà ci sono molte scelte per creare un sito Web supportato da Ajax con ASP.NET ma onestamente, PokeIn è il modo più semplice per creare un cometa ajax applicazione web supportata. Ha salvato uno dei progetti della mia azienda.

4
BigbangO

Potresti anche guardare Kaazing Enterprise Gateway che ha realizzato una versione di produzione del loro gateway webSocket [HTML5] che sostituisce completamente la cometa e abilita connessioni full duplex tra browser e server delle applicazioni.

Potresti anche guardare Light Streamer Demos

3
Vikram

Il gruppo WS-I ha pubblicato qualcosa chiamato "Reliable Secure Profile" che ha un Glass Fish e . Implementazione NET che apparentemente interoperano bene.

Con un po 'di fortuna c'è anche un'implementazione Javascript .

Esiste anche un'implementazione di Silverlight che utilizza HTTP Duplex. È possibile collegare javascript a Silverlight oggetto per ottenere richiamate quando si verifica un Push.

Ci sono anche versioni commerciali a pagamento pure.

1

Una volta ho usato un sito di chat molto tempo fa che utilizzava un server di streaming http personalizzato. In realtà ho riprodotto quel software ad un certo punto per pura curiosità, ed è abbastanza facile da fare, credo. Non tenterei mai di implementare un tipo simile di "richiesta infinita" in IIS, specialmente in ASP.NET, perché le richieste legano un thread del pool di thread (o IO, se i gestori asincroni sono usato) a tempo indeterminato, il che significa che puoi gestire solo tanto per server come consente la configurazione del pool di thread.

Se avessi un forte bisogno legittimo di tale funzionalità, scriverei onestamente un server http personalizzato per questo.

So che non risponde davvero alla tua domanda, ma ho pensato che l'input potesse essere rilevante.

1
Chris

Penso che l'approccio Comet non sia realmente scalabile se non si è pronti ad espandere la web farm in orizzontale (aggiungendo più web server al mix). Il modo in cui funziona è che lascia una TCP aperta per sessione utente, solo in questo modo il server può inserire di tanto in tanto degli elementi in quella connessione per informare immediatamente l'utente di una modifica o attività.

0
cruizer