Configurazioni IoC: un file / assieme in soluzione o un file per gruppo in esecuzione?

1

Ci stiamo chiedendo quale sia la migliore pratica per la registrazione dei tipi in un contenitore IoC.

Quali sarebbero gli argomenti a favore e contro i seguenti principi:

Principio 1: solo un assieme my.project.DependencyInjection

  • Assieme separato per l'iniezione delle dipendenze
  • Una classe (ad esempio UnityConfig.cs ) in cui sono registrati tutti i tipi dell'intera soluzione
  • my.project.DependencyInjection fa riferimento a molti progetti per registrare i loro tipi

Principio 2: una classe di configurazione del contenitore IoC per l'assemblaggio di esecuzione

  • Ogni assembly in esecuzione ha il proprio file UnityConfig.cs
  • Solo i tipi necessari di questo assieme sono registrati nel rispettivo file UnityConfig.cs

Qual è la tua posizione in questo?

Grazie in anticipo per le tue opinioni e argomenti

    
posta xeraphim 02.11.2017 - 10:43
fonte

2 risposte

2

Come la maggior parte delle mie risposte qui: dipende.

Per i piccoli progetti che hanno una posizione centrale per configurare tutti i tuoi mapping IoC va bene.

Per progetti più grandi, mi piace avere ciascun Modulo (non necessariamente un assembly, ma potrebbe essere un gruppo di assiemi con scopi correlati) dichiarare i propri mapping IoC.

Quindi, il mio consiglio: non cercare una regola rigida che funzioni in tutti i casi. Fai ciò che funziona per il tuo caso e, come sempre, lascia spazio al cambiamento.

    
risposta data 02.11.2017 - 12:54
fonte
2

Sono familiare soprattutto con Castle Windsor, quindi questa risposta è distorta nei confronti di ciò che questa libreria offre, sebbene debba essere applicata a tutti i contenitori IoC.

Windsor usa installers per il raggruppamento delle registrazioni dei componenti. Nella maggior parte dei progetti su cui lavoro c'è un programma di installazione per modulo, più altri programmi di installazione per problemi generali. Gli installer non dovrebbero essere riutilizzabili, quindi se hai un'applicazione con più punti di ingresso dovresti avere diversi programmi di installazione per ogni composizione root . Avere codice di registrazione componente in ogni modulo lo renderebbe inutilmente dipendente dal contenitore.

I commenti nell'articolo del blog che ho collegato forniscono altri argomenti su questo argomento.

    
risposta data 02.11.2017 - 15:38
fonte