Trovo utile organizzare gli spazi dei nomi in una gerarchia e rendere i nomi degli assembly corrispondenti allo spazio dei nomi a cui hanno contribuito. Ad esempio, un progetto chiamato Womble avrebbe un namespace di primo livello Womble, e quindi ci potrebbe essere assiemi chiamati:
Womble.ClientLibrary.dll
Womble.Controls.dll
Womble.Util.dll
Womble.Interop.dll
Qui, lo spazio esterno Womble campate più assembly, ma ciascun gruppo ha un subnamespace unico che solo può contribuire a, che trovi rimuovendo .dll dalla fine. Rende molto più facile ricordare cosa è necessario fare riferimento e trovare le cose.
Come per i numeri molto grandi di assiemi, in definitiva non è necessario tenerli tutti in un'unica soluzione. Nello sviluppo su larga scala aiuta a suddividere un grande prodotto in sottosistemi, che possono essere composti da più assiemi, e ciascun sottosistema può essere gestito da team separati e può avere i propri file di soluzione. Le varie squadre "rilasciano" le nuove versioni l'una dall'altra tramite il controllo del codice sorgente, trattandosi reciprocamente come librerie di terze parti.
Non penso che esista un modo difficile e veloce per decidere come suddividere il software in assembly. C'è un principio generale qui: le cose che cambiano per ragioni diverse dovrebbero essere separate.
I progetti di grandi dimensioni possono trarre vantaggio dal fatto che inserendo elementi in assiemi separati, è possibile correggerli separatamente. È possibile produrre un hotfix per un problema in Womble.Interop.dll e quindi produrre separatamente un hotfix per un problema in Womble.Controls.dll e fornire entrambi allo stesso cliente, in modo tale che in teoria questi due assembly potrebbero essere completamente mantenuto e supportato da team separati, senza dover coordinare direttamente le proprie attività.
Separa anche gli assembly creano chiarezza nelle dipendenze tra codice. Puoi vedere ad un livello molto alto (guardando solo l'elenco dei riferimenti) come una porzione di codice dipende da un'altra e come potrebbe essere riutilizzata. Se metti tutto in un unico assemblaggio, potrebbe essere un groviglio ingarbugliato senza alcun modello ragionevole.
fonte
2009-03-14 10:38:29
Questo è anche il mio attuale modo di lavorare. Spesso vedo gli sviluppatori dividere l'app in 3 assembly perché la maggior parte di loro pensa che una 3 stratificazione in 3 assembly sia una buona cosa da fare; ma questo può essere ottenuto anche mediante la stratificazione dello spazio dei nomi e mantenere tutto il gruppo in 1. Solo quando la sicurezza e le prestazioni sono giocatori chiave, quindi inizia a studiare come parare fisicamente la tua app. –