Sto progettando una piattaforma software nell'automazione che è responsabile di molte attività diverse come:
- Funzioni principali
- Interfaccia driver per macchine
- Listener UDP per i messaggi macchina dal PLC
- Listener UDP per altri messaggi di componenti software (altra porta)
- Servizio Web di controllo interno utilizzato da componenti esterni della piattaforma, ad esempio client di amministrazione
- Altre cose ...
La mia idea è di creare un singolo servizio Windows che sia sviluppato in modo modulare, in modo che ci sia più o meno un modulo per ognuna delle funzioni sopra elencate, in modo che tu possa abilitare / disabilita ciascun modulo in modo indipendente e, allo stesso tempo, è in grado di avviare tutti i moduli con l'avvio del servizio.
Ora i miei dubbi principali sono 2:
- È un'architettura valida? O è preferibile separare il moduli in singoli servizi o componenti di qualche tipo? In questo caso, come posso ottenere per avere la gestione totale di tutto il Moduli?
- Se l'architettura che pensavo potesse essere buona, come posso implementarla l'avvio e la gestione dei diversi moduli all'interno del Servizio Windows?
Ho già letto diversi articoli che spiegano come sviluppare un servizio Windows con C # e VS 2017 (utilizzando Topshelf per semplificare il debug) che ospita un servizio Web API self-hosted o one .NET Core Web Service. Penso che questo potrebbe essere il modo per me e sono molto attratto dall'idea di utilizzare .NET Core per API, .NET Standard per le librerie di funzioni condivise e Windows Servizio. Ma non so come implementare lo scaffolding per un servizio di Windows che ospita tutti quei diversi componenti .
Articoli: