Unity (Unity Application Block) è uno degli application block della Microsoft Enterprise Library giunto in questi giorni alla versione 1.0. Unity è un componente che supporta tutti quegli sviluppatori che producono e progettano applicazioni di tipo component-based ovvero formate da componenti applicative indipendenti che dialogano tra loro per assolvere ai compiti a cui l'applicazione è destinata.
Infatti le applicazioni moderne fanno sovente uso di componenti ed oggetti di business personalizzati che svolgono compiti specifici, insieme a componenti che invece svolgono compiti più generici e possono essere visti quindi come "trasversali" all'architettura. Un esempio di questi sono i componenti software che si preoccupano del logging, dell'autenticazione, del caching, ecc.
L'obiettivo principale quando si sviluppa applicazioni così ingegnerizzate è quello di rendere i singoli componenti i più indipendenti possibile gli uni dagli altri, sebbene questi debbano poter comunicare tra loro ed interagire affinché l'applicazione funzioni correttamente. Un pà come una orchestra composta dai singoli musicisti. Nell'ambito di questo scenario, troviamo Unity che supporta nella gestione della dependency injection, ovvero quella tecnica che permette di mantenere il disaccoppiamento delle componenti software.
Ad esempio immaginiamo un sito di e-commerce nel quale sia presente la classe Cliente che dipende da altre classi che gli permettono di accedere al database, di validare il proprio contenuto o di verificare le informazioni di sicurezza del cliente. La dependency injection, supportata da Unity, ci assicura che la classe Cliente instanzi tutte le classi da cui "dipende" e le populi correttamente.
Qui trovate altri link interessanti sull'argomento.