Quando utilizzare lo schema della lavagna rispetto alla chiamata diretta

1

Sto creando l'architettura per un nuovo progetto incorporato. Il sistema ha alcuni ingressi che vanno a uscite molto diverse. Il modello di lavagna è molto utile per questo (vedi Ascoltatori considerati dannosi: il pattern "Lavagna" ) , poiché disaccoppia il componente di input dai componenti di uscita (una relazione 1-a-N).

Tuttavia, sto lottando con la relazione N-to-1 (in cui un output riceve dati da input molto diversi). Dovrei usare il modello di lavagna lì? E che dire della relazione 1-a-1?

Vantaggi che vedo del modello di lavagna:

  • installazione e test separati di sorgenti e ascoltatori
  • la lavagna (EventAdmin nel mondo OSGi) può essere monitorata separatamente.
  • non esiste una dipendenza in fase di compilazione.

Svantaggi che vedo:

  • non esiste un controllo in fase di compilazione sugli eventi (se qualcuno fa un refuso nell'argomento dell'evento o nei dati, sei fregato).
  • sovraccarico della lavagna (ho eseguito misurazioni ed è significativo sulla nostra piattaforma)

Non sono abbastanza sicuro su come bilanciare questi trade-off.

    
posta Frank Kusters 27.07.2014 - 11:06
fonte

1 risposta

1

Dopo aver discusso di questo con un collega e qualche altro pensiero, sono giunto alla conclusione che dipende dalla natura della dipendenza.

Il modello di lavagna disaccoppia completamente fonti e ascoltatori. Il sovraccarico (in termini di tempo di elaborazione e assenza di controlli del compilatore) è garantito se:

  • gli ascoltatori di un evento sono completamente estranei alla fonte (cioè in un'altra parte del sistema)
  • i sorgenti e gli ascoltatori dovrebbero avere la possibilità di essere riavviati separatamente
  • l'origine o il listener viene creato da un'altra società (poiché le stringhe sono più facili da sostituire rispetto agli oggetti)

Nota che nessuno di questi criteri menziona quanti N ci sono nella relazione.

    
risposta data 29.07.2014 - 15:40
fonte

Leggi altre domande sui tag