Vantaggi degli assembly

Aggiornamento: novembre 2007

Gli assembly sono progettati per semplificare la distribuzione delle applicazioni e risolvere i problemi di controllo delle versioni che si presentano con le applicazioni basate su componenti.

Tali problemi sono noti sia agli utenti che agli sviluppatori. Diversi utenti sanno cosa significa installare una nuova applicazione e scoprire che un'applicazione esistente ha smesso di funzionare. Numerosi sviluppatori hanno dedicato moltissimo tempo al tentativo di mantenere la congruenza di tutte le voci del Registro di sistema per l'attivazione di una classe COM.

Parecchi problemi di distribuzione sono stati risolti con l'uso degli assembly in .NET Framework. In quanto componenti in grado di descrivere se stessi, privi di dipendenza dalle voci del Registro di sistema, gli assembly permettono installazioni di applicazioni a impatto zero, semplificando inoltre la disinstallazione e la replica di applicazioni.

Problemi relativi al controllo delle versioni

I problemi di controllo delle versioni a cui si assiste oggi con le applicazioni a 32 bit sono due:

  • Le regole per il controllo delle versioni non possono essere espresse tra le diverse parti di un'applicazione e imposte dal sistema operativo. L'approccio corrente si affida al principio della compatibilità con le versioni precedenti, spesso difficile da garantire. Una volta pubblicate, le definizioni delle interfacce devono essere statiche e ogni singola parte di codice deve mantenere la compatibilità con le versioni precedenti. Inoltre, il codice è solitamente progettato in modo che non è possibile mantenerne ed eseguirne più di una versione contemporaneamente.

  • Non c'è modo di mantenere la coerenza tra i set di componenti che vengono generati insieme e il set presente in fase di esecuzione.

Questi due problemi di controllo delle versioni concorrono a creare i conflitti tra DLL che si presentano quando, installando un'applicazione, un'applicazione preesistente cessa di funzionare perché un determinato componente software o una DLL appena installata non è completamente compatibile con le versioni precedenti. Quando si verifica questo problema, non è possibile diagnosticarlo e risolverlo con gli strumenti disponibili nel sistema.

La fine dei conflitti tra DLL

Un primo passo verso la risoluzione dei problemi sopra descritti è stato compiuto con Microsoft® Windows® 2000. Tale sistema operativo include due funzionalità che consentono di risolvere parzialmente i conflitti tra DLL:

  • Con Windows 2000 è possibile creare applicazioni client i cui file DLL dipendenti siano ubicati nella stessa directory in cui risiede il file EXE. Windows 2000 può essere configurato in modo che un componente venga cercato prima nella directory in cui risiede il file EXE e poi nel percorso completo o nel percorso normale. In questo modo i componenti diventano indipendenti dai componenti già installati e utilizzati da altre applicazioni.

  • In Windows 2000 i file forniti con il sistema operativo nella directory System32 sono bloccati in modo che non possano essere sostituiti inavvertitamente durante l'installazione di un'applicazione.

Common Language Runtime utilizza gli assembly per proseguire in questa evoluzione verso la soluzione completa dei conflitti tra DLL.

La soluzione offerta dagli assembly

Per risolvere i problemi di controllo delle versioni e altri problemi che stanno alla base dei conflitti tra DLL, vengono utilizzati assembly che:

  • Consentono agli sviluppatori di specificare regole di versione tra diversi componenti software.

  • Forniscono l'infrastruttura per l'attivazione delle regole di controllo delle versioni.

  • Forniscono l'infrastruttura che consente l'esecuzione contemporanea di diverse versioni di un componente.

Vedere anche

Concetti

Controllo delle versioni degli assembly

Assembly ed esecuzione contemporanea di diverse versioni

Altre risorse

Assembly in Common Language Runtime