Ci sono delle linee guida per decidere quando una classe dovrebbe essere nel suo assembly / DLL? Vedo spesso due scuole di pensiero:
1) Ogni "raggruppamento" di classi appartiene alla propria DLL, ad es. Archivi, servizi, DTO, infrastrutture, ecc.
2) Tutto dovrebbe essere in una singola DLL ma separato tramite namespace / cartelle, ad es. avere una DLL "Core" con spazi dei nomi aggiuntivi, ad es. Core.Repositories, Core.Services, Core.DTO, ecc.
Al lavoro ci limitiamo a raggruppare tutto in un unico Assembly chiamato "Business". Ci sono alcune cartelle ma non c'è una vera separazione: gli oggetti business (con la logica, alcuni dei quali non dovrebbero nemmeno essere classi) sono raggruppati in una cartella "BusinessObjects" senza attenzione. Le cose usate in più di una classe sono in una cartella "Core". Le utilità si trovano in una cartella "Utilità", l'infrastruttura di accesso ai dati è una cartella "Dati" - ti viene l'idea.
Per un nuovo modulo su cui sto lavorando Voglio / devo avere un livello di accesso ai dati separato (penso a un'implementazione rudimentale del repository) ma non voglio semplicemente buttarlo nella cartella "BusinessObjects" con gli altri 160 (!) lezioni lì. Allo stesso tempo sono preoccupato di creare una nuova libreria di classi poiché tutti sono abituati a inserire una classe nella singola libreria; tuttavia una cartella / spazio dei nomi potrebbe funzionare.