DDD / Livelli e sistemi legacy

7

Devo rifattorizzare una complessa app C # (molte finestre di dialogo, logica mista e così via).

C'è una parte che gestisce la comunicazione con attrezzature hardware speciali (invio di comandi e ricezione di dati tramite callback asincroni #). Il codice è "spaghetti" con UI / Logica / Comunicazione / ecc misto e il mio compito è dividere i livelli in un senso DDD.

Quindi, a quale layer appartiene una routine di driver di callback?

I callback stanno creando "bolle" nel sistema, fino al livello dell'interfaccia utente e per questo motivo non posso applicare il principio essenziale che ogni elemento di un livello dipende solo da altri elementi nello stesso livello o da elementi degli strati "sotto.

    
posta CSM 30.08.2012 - 14:16
fonte

2 risposte

1

Potresti voler esaminare il schema di aggregazione di eventi . Da un lato, si avrà il codice che si interfaccia con l'hardware. Quando arriva un messaggio dall'hardware, devi pubblicarlo sull'aggregatore di eventi (o magari convertirlo in un tipo di evento interno e postarlo). Qualsiasi altro componente interessato a tali informazioni può sottoscriverlo e riceverlo quando arriva. Questo schema disaccoppia il codice che si interfaccia con l'hardware dal resto del tuo sistema.

    
risposta data 30.08.2012 - 19:04
fonte
1

Non sei così inesperto con hardware speciale che invia eventi asincroni come sembra che tu pensi di essere. Ciò descrive perfettamente un mouse o una tastiera. Basta usare gli stessi schemi. Nel livello driver, disponi di una sorta di metodo registerListener e crea un'interfaccia per altre classi da implementare per la ricezione di eventi.

    
risposta data 30.08.2012 - 16:34
fonte

Leggi altre domande sui tag