Servizio o App Console ? (dilemma)

di il
5 risposte

Servizio o App Console ? (dilemma)

Buonasera.
Avrei la necessità di scrivere da zero un programma, da installare su svariati pc fisici o virtual machines, che resti in "ascolto" e attenda istruzioni su cosa fare tramite il web. Non si tratta di cose da hacker o stupidaggini, ma semplicemente ho più di 150 pc da gestire in azienda e fuori (portatili dei commerciali) e anzichè affidarmi a prodotti già esistenti, che tanto il mio capo non mi comprerebbe, volevo scrivermene uno da solo, molto mirato. L'idea era appunto quella di avere i pc che "ascoltano" e di tanto in tanto mi mandino un cenno della loro presenza, e quando io dal programma "Capo" decido di fargli fare qualcosa, di comunicare tramite rete (se sono nella mia rete) o tramite internet (se sono fuori dall'azienda) e mandare loro dei comandi per ottenere in risposta varie cose. Al momento ne ho una prima versione un pochino "primitiva " che sfrutta un server FTP. II "capo" spedisce sul server ftp un file di testo contenente i comandi da eseguire, mentre i pc tramite CURL, ogni x tempo vanno a vedere se c'è qualcosa per loro ed eseguono. 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. 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 ?
Prima di iniziare vorrei sentire qualcuno più esperto per non buttare via quel poco tempo che ho a disposizione e partire magari col piede giusto.
Ringrazio tutti anticipatamente, in attesa di pareri.
Tieko.

5 Risposte

  • Re: Servizio o App Console ? (dilemma)

    La parola ""maggica"" che rende tutto DECISAMENTE COMPLICATO e'
    pc da gestire in azienda e FUORI (portatili dei commerciali)

    Per la parte "in azienda", in ""teoria"" (ma non e' detto) non ci sono particolari problemi (MA, il diavolo sta' nei dettagli)
    La parte ""FUORI"" in GENERALE NON E' APPLICABILE.

    Il problema e' la BIDIREZIONALITA' della comunicazione TCP/IP (l'HTTP e' solo una SOVVRASTRUTTURA del TCP/IP).
    La realizzazione di un'applicazione di questo genere richiede un bel po' di competenze, E SOPPRATTUTTO di un'infrastruttura hardware/di connettivita' che bisogna mettere in piedi.

    In pratica, ti serve un sito Web VISIBILE da TUTTI I CLIENT, i quali, mediante pooling, andranno ad interrogare per sapere se c'e' qualcosa da fare.
    I client NON POSSONO ESSERE CONTATTATTATI, sono LORO che contattano.

    Un po' come la mitica frase:

    "non ci chiami (il client), la richiameremo noi (il server)"

    solo al contrario

    Una volta capito questo, in ""teoria"" non c'e' nulla di particolarmente complicato.
    Un sitarello che mette a disposizione dei "web services" (o anche un ""banale" web server""
    Dei client (applicazioni scritte in qualunque linguaggio) che accedono al sito con regolarita' per sapere se c'e' qualcosa da fare.

    PROBLEMA: per i pc no, ma per cellulari e tablet questo CONSUMA BATTERIA.
    Se gli consumi la batteria nell'arco di qualche ora, stai tranquillo che quell'applicazione viene cestinata in tempo zero !

    QUINDI, non basta un'implementazione ""banale"", servono strategie di funzionamento decisamente piu' ""sofisticate"".
  • Re: Servizio o App Console ? (dilemma)

    Grazie. Devi scusarmi, ma forse mi sono spiegato male. Proprio perchè tutti devono poterci arrivare, attualmente il ponte è il server FTP (raggiungibile sia via Lan interna che da fuori). La nuova versione prevederebbe la stessa cosa solo che ogni x tempo (anche ore volendo) vorrei che invece del batch con cURL che esegue il download dei comandi, ci sia servizio o app console che polla ogni x tempo, un eseguibile in ogni caso e non uno script come ora. Il sito Web con web services mi piace assai come idea, darebbe modo a tutti, incluso il mio programma "Capo" di colloquiare. Per la faccenda tablet e cellulari per ora ci salviamo, non li avevo nel mirino ma la tua osservazione è intelligente e ne terrò conto.Grazie.
  • Re: Servizio o App Console ? (dilemma)

    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!
  • Re: Servizio o App Console ? (dilemma)

    Ciao

    Secondo me per la comunicazione vedo bene l'utilizzo di RabbitMQ (se i messaggi sono piccoli), altrimenti potresti valutare anche l'utilizzo di WebSocket.
  • Re: Servizio o App Console ? (dilemma)

    RabbitMQ mi piace come idea. Ho scoperto la sua esistenza alcune settimane addietro durante un corso su iOT. Credo lo adotterò. Grazie Ragazzi.
Devi accedere o registrarti per scrivere nel forum
5 risposte