Tieko68 ha scritto:
Funzionare funziona, ma volevo eliminare il server intermedio e trovare un modo per poter parlare direttamente dal "capo" ai "sottoposti" ed attivare la modalità bidirezionale.
L'attivazione della cosiddetta "modalità bidirezionale", così come l'hai definita, non è legata alla presenza di un server che faccia da intermediario, ma dipende essenzialmente da come i nodi vengono messi in comunicazione.
A tal proposito, io non andrei assolutamente ad eliminare tale server, ma piuttosto valuterei il passaggio da un FTP a una tipologia diversa da server.
Ad esempio, potresti installare un servizio di messaggistica tramite code (es.
RabbitMQ), relativamente semplice anche da gestire, e affidare allo stesso la veicolazione di messaggi provenienti dai vari nodi che metterai in comunicazione, che siano i PC che devono ricevere comandi oppure il PC, o gli N PC del "capo" che indica cosa deve essere fatto.
Tieko68 ha scritto:
Attualmente i client possono solo leggere ed eseguire i comandi, ma nella nuova versione vorrei che sui clienti giri un programma costantemente, da cui la domanda se è meglio un servizio o una app console, e possano sia ricevere comandi dal capo ma anche mandarmi loro dati e/o altro in maniera autonoma se succede qualcosa. Voi che tecnica usereste al posto mio ?
L'idea mi sembra buona, ma se si tratta di PC Windows - ad esempio - io utilizzerei dei
servizi (es.
Windows Service) al posto di applicazioni
Console tradizionali (che potresti comunque realizzare e lanciare al posto del servizio se ti occorre fare debugging, molto più comodo).
All'avvio, ciascun servizio (in base al proprio ruolo) apre un canale di comunicazione verso il servizio di messaggistica e si predispone per inviare/ricevere messaggi, ad esempio per prendere in carico attività da fare o per comunicare l'esito di un'attività conclusa.
La presenza di un sistema di messaggistica come
RabbitMQ ti aiuta a rendere la gestione dei messaggi stabile, affidabile e sicura: puoi creare code con diversi criteri, definire regole per lo smistamento, rendere persistenti i messaggi per resistere a distacchi di corrente, in ultimo fare anche monitoring di quello che sta succedendo nel tuo sistema utilizzando diversi tool che si interfacciano con questo software.
In ogni caso, opterei per sfruttare al massimo ciò che viene messo a disposizione per fare sì che il tuo lavoro di sviluppo si concentri il più possibile sulle "cose da fare" delegando la gestione architetturale della comunicazione a sistemi preposti e dedicati a questo scopo, a beneficio della stabilità e dell'efficienza del tutto.
Prova a fare una ricerca in giro e, in caso di dubbi, chiedi pure.
Ciao!