Domanda

Ho cercato modi per implementare la messaggistica simile a Gmail all'interno di un browser e sono arrivato a Cometa concetto.Tuttavia, non sono riuscito a trovare una buona implementazione .NET che mi permetta di farlo all'interno di 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 una volta ricevuto un messaggio.Questo non è affatto scalabile, ovviamente.

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

È stato utile?

Soluzione

Comet è difficile da scalare con IIS a causa della sua connettività persistente, ma ora c'è un team che sta esaminando gli scenari di Comet.Guarda anche Il blog di Aaron Lerch poiché credo che abbia svolto alcuni dei primi lavori su Comet in ASP.NET.

Altri suggerimenti

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

Supporta ufficialmente fino a 20.000 connessioni client simultanee per nodo server, ma test individuali hanno visto arrivare fino a 50.000.La velocità di trasmissione dei messaggi è ottimale attorno ai 1.000-5.000 client simultanei, con messaggi recapitati fino a 300.000 al secondo da un singolo nodo.

Include il 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 utilizzando SQL Server o la memorizzazione nella cache di Azure, ma i provider personalizzati possono essere scritti praticamente per qualsiasi cosa (Redis, NCache).

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

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

Puoi usare il esempio su una distribuzione AppHarbor Ho impostato in base alla fonte del progetto BitBucket.

Inoltre, ulteriori informazioni disponibili da my post sul blog che spiega il progetto.

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'applicazione web supportata da Comet Ajax.Ha salvato uno dei progetti della mia azienda.

Potresti anche guardare il Kaazing Enterprise Gateway che ha realizzato una versione di produzione del proprio gateway webSocket [HTML5] che sostituisce completamente il metodo Comet e consente connessioni full-duplex tra browser e server delle applicazioni.

Potresti anche guardare Demo dello streamer leggero

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

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

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

Il gruppo WS-I ha pubblicato qualcosa chiamato "Profilo sicuro affidabile" che ha un pesce di vetro e Implementazione .NET quello a quanto pare interoperare BENE.

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

Esiste anche un'implementazione Silverlight che utilizza Duplex HTTP. Puoi collega Javascript a Silverlight oggetto per ottenere callback quando si verifica un push.

Ci sono anche versioni commerciali a pagamento anche.

Penso che l'approccio Comet non sia realmente scalabile a meno che tu non sia disposto a espandere la web farm orizzontalmente (aggiungendo più server web al mix).Il modo in cui funziona è che lascia aperta una connessione TCP per sessione utente, solo così il server può inserire elementi in quella connessione di tanto in tanto per informare immediatamente l'utente di una modifica o attività.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top