L'obiettivo della mia applicazione è controllare e monitorare le apparecchiature basate su sensori (temperatura, umidità, ecc.). I dati dalle apparecchiature vengono trasmessi utilizzando i canali di porta GSM, Ethernet o seriale. Una volta ottenuti i dati, il programma deve memorizzarli nel database e quindi informare gli utenti nell'interfaccia utente. Gli utenti sono in grado di inviare un comando da una determinata lista di comandi a un'apparecchiatura.
Il mio attuale design comprende 3 programmi indipendenti:
-
Programma di gestione delle attrezzature. Funziona con il canale di comunicazione predefinito (GSM, Ethernet, seriale). In realtà ho tre programmi: uno per GSM, uno per Ethernet, uno per seriale. Ogni programma interagisce con il programma server.
-
Il programma per server singolo. Riceve i messaggi dai programmi di gestione delle attrezzature, li registra e trasmette i dati ai programmi dell'interfaccia utente. E viceversa: riceve i comandi dall'interfaccia utente e li invia al programma concreto di gestione delle attrezzature.
-
Programma UI. Visualizza lo stato attuale delle apparecchiature, riceve i comandi da un utente e li invia al server. È possibile avere uno o più programmi dell'interfaccia utente.
Uso il modello publish / subscribe per scambiare dati tra questi programmi. Non ho alcun problema con lo scambio di dati.
La domanda è dove memorizzare lo stato attuale delle apparecchiature. Devo duplicare lo stato in tutti i programmi o solo per memorizzare i dati sul server? Come gestire la sincronizzazione dei dati tra i programmi?
Credo che una tale architettura sia ben nota e che ci sia un modello affidabile da affrontare.