Trasferimento dati tra moduli (livelli)

1

Sto creando un'applicazione composta da diversi moduli (core, corso, voti, notizie). Sto usando un'architettura pulita per i diversi moduli ma sono bloccato cercando di passare i dati da un modulo a un altro modulo.

L'idea è inserire in una sola applicazione (app1) diversi moduli o usarli in un'altra applicazione (app2) e ha moduli molto disaccoppiati l'uno dall'altro. I moduli dovrebbero dipendere solo dal modulo principale e forse anche da un altro modulo.

Stavo pensando di utilizzare l'inversione di dipendenza per ricevere i dati. Ad esempio, il modulo dei gradi richiede un oggetto del corso, quindi il modulo dei gradi si aspetta un'interfaccia del corso. Questa interfaccia è creata nel modulo principale (i gradi e il corso lo sanno) e il modulo del corso ha l'implementazione. Voglio sapere se è un buon approccio? Che cosa suggerisci?

Grazie.

    
posta Knnwulf 17.03.2018 - 22:29
fonte

1 risposta

1

No, questo sembra essere un brutto modo di fare inversione di dipendenza (anche perché in realtà non è inversione di dipendenza se provi a farlo tra le app)

Il modulo del corso sa come appare un corso. È il proprietario dei dati del corso. Quindi dovrebbe essere in grado di dettare l'aspetto dell'interfaccia del corso.

L'inversione delle dipendenze funziona bene con le interfacce all'interno di un programma. Tuttavia, se stai parlando di app separate, allora non vedo che funzioni bene. Un'app funziona meglio se può essere il proprietario della propria interfaccia.

Anche se le app comunicano, spesso vengono eseguite su destinazioni "reali". Come faccio un Http GET link . Questa è la destinazione effettiva dell'app che implementa la mia API, in modo tale da interrompere l'inversione di dipendenza.

Se si desidera un accoppiamento sciolto tra le app, è possibile considerare la trasmissione di eventi su un bus eventi. Quindi spetta a ciascuna app implementare i gestori per qualsiasi evento a cui potrebbero essere interessati. Ma in questo modo non interessa più a chi invia un particolare evento. Inoltre non si preoccupano più di dove siano esattamente le altre app (o app) ospitate e se sono effettivamente online in ogni momento.

    
risposta data 17.03.2018 - 22:57
fonte

Leggi altre domande sui tag