131 messaggi dal 12 febbraio 2001
Ho creato un servizio di windows che esegue alcune operazioni di aggiornamento su un database usando una libreria creata ad hoc.
Questa libreria genera dei messaggi sulle operazioni che sta facendo per poter monitorare le operazioni fatte.
Ho anche creato un windows form che utilizza la,stessa libreria per le stesse operazioni e visualizza i messaggi all'interno del form.
Vorrei potermi collegare al servizio con l'applicazione windows form e visualizzare gli stessi messaggi ma utilizzando il thread del servizio.
Al momento riesco solo a mandare dei comandi al servizio attraverso un ServiceController ma non riesco ad interagire oltre.
Come devo strutturare il servizio per poter accedere al thread di lavoro della libreria dall'applicazione windows form, e poter visualizzare i messaggi generati dalla libreria?

Grazie

Edika
Modificato da edika il 07 giugno 2013 15.57 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Edika,
ospitando un servizio WCF all'interno del servizio per Windows riusciresti ad esporre una API che il client Winforms (o qualsiasi altro tipo di client) riuscirà a consumare molto agevolmente.
Qui trovi la procedura completa.
http://msdn.microsoft.com/it-it/library/ms733069.aspx

edika ha scritto:

Come devo strutturare il servizio per poter accedere al thread di lavoro della libreria dall'applicazione windows form

Che sia esattamente lo stesso thread non ha molta importanza, infatti potrai condividere dati tra il worker thread e il thread che si occupa di rispondere alle richieste WCF. Potresti ad esempio usare un ConcurrentQueue che faccia da intermediario. E' una collezione thread-safe, idonea ad essere scritta e letta da più thread contemporaneamente.

edika ha scritto:

e poter visualizzare i messaggi generati dalla libreria

Se il tuo scopo è appunto quello di accodare/scodare messaggi, allora il thread del worker potrebbe invocare il metodo Enqueue mentre il servizio WCF, quando viene invocato dall'applicazione winforms, invocherebbe il TryDequeue.

Da qui si capisce che l'applicazione Winforms dovrà fare polling al servizio WCF per chiedere periodicamente se ci sono eventuali nuovi messaggi. Se questo ti sembra poco efficiente, c'è un metodo migliore per affrontare la questione. Creando un servizio WCF duplex potrai fare in modo che sia lo stesso servizio per windows a fare il push dei messaggi verso l'applicazione client, nonappena questi si rendono disponibili.
Leggi qui come fare:
http://msdn.microsoft.com/en-us/library/ms731064.aspx

ciao

Enjoy learning and just keep making
131 messaggi dal 12 febbraio 2001
Ciao,

avevo già valutato l'opzione del servizio WCF ma non mi è sembrata cosi efficiente per l'utilizzo che ne devo fare.
In pratica il client deve collegarsi al servizio e verificare semplicemente che cosa sta facendo attraverso i messaggi del thread, senza alcuna interazione.
La tua ultima opzione, quella del servizio duplex, credo che sia la più adatta.
Credo che opterò per quella.

Grazie del suggerimento.

Edika
Modificato da edika il 11 giugno 2013 10.38 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.