03/12/2022 - DanieleG ha scritto:
stò sviluppando un servizio di windows, che riceve dati su seriale o ethernet a seconda dell'impostazione di alcuni parametri, e va a inserirli in un DB sql server.
[…]
Quello che volevo fare è gestire questo servizio con icona in try area (stile team viewer host, per chi lo conosce), in modo da interagire con un menù popup, in modo da poterlo chiudere, o, cosa più importante, aprire un form dove impostare i parametri di funzionamento (tipo connessione seriale/ethernet, com port, indirizzo IP e porta ecc ecc).
Per sua definizione, un servizio che gira in background non dovrebbe avere una interfaccia utente, per motivi facilmente intuibili: potrebbe anche essere lanciato senza eseguire il login alla macchina, e quindi non avere un desktop visibile su cui mostrare messaggi, menu, icone, ecc.
In questi casi, io opterei per un applicativo secondario specifico per il desktop, che vada in esecuzione automatica e che abbia la possibilità di comunicare con il servizio in qualche modo: un socket, una Web API integrata nel servizio stesso (con .NET Core e successivi è abbastanza semplice farlo) o qualsiasi altra forma di comunicazione interprocessuale.
In questo modo, il servizio che gira in background rimane isolato e svolge il suo compito, avviandosi anche ad accensione della macchina, mentre l'applicativo di monitoraggio e controllo va eseguito solo dopo aver fatto il login, e scambia col servizio informazioni specifiche riguardo il suo stato oppure invia comandi allo scopo di controllarlo.
Ciao! :)