2009-06-09 24 views
8

Sto provando a utilizzare WCF per implementare un push server di stile comet su un'applicazione web ajax.Cometa e fili WCF

Nel mio servizio WCF, ho implementato un metodo WaitForEvents che chiama Monitor.Wait per sospendere il thread fino all'arrivo di nuovi dati. A quel punto, il monitor è a impulsi e il metodo restituisce i nuovi dati che chiudono la richiesta di stile della cometa.

La richiesta viene eseguita nuovamente quando ciò accade.

Attualmente, questo funziona correttamente ma ho notato che WCF deve creare un nuovo thread per ciascun utente connesso. Ciò è probabilmente dovuto al fatto che il thread non può essere restituito al pool di thread finché i dati non arrivano e quindi ogni utente connesso richiede un nuovo thread.

Voglio rendere questa implementazione più efficiente avendo un servizio thread più connessioni multiple. Se dovessi usare un socket, questo potrebbe essere fatto lasciando il socket aperto e restituendo il thread al pool di thread prima. Quando arrivano nuovi dati, sarà consegnato da un altro thread e possiamo scrivere i nuovi dati direttamente nel socket e chiuderlo.

Qualcuno sa come questo può essere fatto tramite WCF?

Sono stato a guardare "Push-Style Streaming" http://msdn.microsoft.com/en-us/library/bb472551.aspx e menzionano che "WCF implementa un modello" pull "in cui il codice dell'applicazione (il servizio) restituisce un'istanza di Stream e fa affidamento sull'infrastruttura di livello inferiore per estrarre i dati da questo stream e scriverli sulla rete. " ma non trovo alcun esempio di questo il sito web.

Molte grazie in anticipo!

risposta

2

Partenza nComet

Non è usando WCF, ma credo che l'autore sta lavorando ad una versione che utilizza WCF. Contattatelo via CodePlex e chiedere a lui :-)

"nComet è un'implementazione NET di della cometa (reverse-AJAX push) architettura. Questo lato server gasdotto utilizza longevo avviata dal client connessioni HTTP a messaggi push al cliente. una volta che il cliente riceve una risposta, si subito apre un'altra richiesta HTTP , quale il server contiene fino un messaggio è pronto. Questa architettura consente al server di spinta dinamica html/xml/json/etc al browser, anziché il browser che esegue il polling del server .

Questo progetto è ambito all'architettura lato server NET , inizialmente fornendo un HttpListener (per un host personalizzato comunicante con HTTP.SYS direttamente) e un'implementazione ASP.NET , dove l'ASP L'implementazione .NET può essere ospitata all'interno di IIS e anche in un processo esterno. La libreria semplificherà l'implementazione dello messaggio comune , come ad esempio il push degli ultimi dati e la sincronizzazione. Il codice di esempio e i collegamenti a più versioni lato client verranno forniti anche da .. "

1

Si consiglia inoltre di controllare WebSync, un NET implementazione cometa funziona da dandy con WCF

(Disclaimer: io lavoro per l'azienda)..