Posizionamento accettabile della radice di composizione mediante contenitori di iniezione di dipendenza (DI) e inversione dei contenitori di controllo (IOC)

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/194511

Domanda

Ho letto in diverse fonti tra cui Blog di "Ploeh" di Mark Seenn su come il posizionamento appropriato della radice di composizione di un contenitore IOC è il più vicino possibile al punto di ingresso di un'applicazione.

Nel mondo .NET, queste applicazioni sembrano essere comunemente pensate come progetti Web, progetti WPF, applicazioni di console, cose con un'interfaccia utente tipica (leggi: non progetti di biblioteche).

Sta davvero andando contro questo saggio consigli per posizionare la radice di composizione nel punto di ingresso di un progetto di biblioteca, quando rappresenta il punto di ingresso logico di un gruppo di progetti di biblioteca e il cliente di un gruppo di progetto come questo è il lavoro di qualcun altro , il cui autore non può o non può aggiungere la radice di composizione al loro progetto (un progetto dell'interfaccia utente o ancora un altro progetto di biblioteca)?

Ho familiarità con Ninject come implementazione del contenitore IOC, ma immagino che molti altri funzionino allo stesso modo in quanto possono scansionare un modulo contenente tutte le configurazioni di associazione necessarie. Ciò significa che potrei inserire un modulo vincolante nel proprio progetto di libreria per compilare con l'output del mio progetto di biblioteca principale e se il client voleva modificare la configurazione (uno scenario improbabile nel mio caso), potrebbe cadere in una DLL sostitutiva per sostituire il libreria con il modulo di associazione.

Ciò sembra evitare che i clienti più comuni debbano affrontare le radici di iniezione di dipendenza e composizione e renderebbero l'API più pulita per il gruppo di progetti di biblioteca.

Eppure questo sembra volare di fronte alla saggezza convenzionale sulla questione. È solo che la maggior parte dei consigli là fuori fa il presupposto che lo sviluppatore abbia un certo coordinamento con lo sviluppo del progetto dell'interfaccia utente, piuttosto che il mio caso, in cui sto solo sviluppando biblioteche per gli altri da usare?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top