Progettare le comunicazioni per l'estensibilità

5

Sto lavorando alle fasi di progettazione di un'applicazione che a) raccoglierà dati da varie fonti (nel mio caso si tratta di dati scientifici provenienti da porte seriali), tenendo traccia dell'età dei dati, b) genererà statistiche in tempo reale (ad es. medie correnti) c) visualizzare, registrare e gestire in altro modo i dati (e le statistiche).

Prevedo che nel tempo aggiungerò sia i produttori di dati che i consumatori e vorrei progettare astrattamente questa applicazione in modo tale da poter aggiungere banalmente funzionalità con una piccola quantità di codice di interfaccia. Quello su cui mi sto imbattendo è decidere quale infrastruttura di comunicazione dovrei usare per gestire le interfacce. In particolare, come devo rendere disponibili i dati e le statistiche elaborati a più utenti?

Alcune cose che ho considerato:

  • Scrittura su più pipe denominate (numero variabile). Ogni consumatore legge da uno di essi.
  • Uso di FUSE per creare un filesystem userspace in cui read() restituisce l'ultima riga di dati anche se un altro processo lo ha già letto.
  • Creare un server TCP e far connettersi e richiedere i dati individualmente ai consumatori
  • Semplicemente scrivendo i consumatori come parte dello stesso programma che aggrega i dati.
  • Quindi mi piacerebbe sentire i tuoi consigli su come decidere come interfacciare queste funzioni nel modo migliore per tenerle separate e lasciare spazio all'estensione.

        
    posta Thomas Shaw 10.06.2014 - 01:47
    fonte

    1 risposta

    1

    Sembra un lavoro per un'architettura Pubblica / Iscriviti , AKA Reattiva . Sebbene il titolo possa sembrare fuorviante, Enterprise Integration Patterns è un'ottima guida su come costruire tali sistemi nel grande.

        
    risposta data 10.06.2014 - 16:49
    fonte

    Leggi altre domande sui tag