Cenni preliminari sugli assembly

Gli assembly rivestono un ruolo fondamentale nella programmazione con .NET Framework. Un assembly svolge le seguenti funzioni:

  • Contiene codice che viene eseguito da Common Language Runtime. Il codice Microsoft Intermediate Language (MSIL) contenuto in un file eseguibile portabile (PE, Portable Executable) non verrà eseguito se ad esso non è associato il manifesto di un assembly. Ogni assembly può avere un solo punto di ingresso, ovvero DllMain, WinMain o Main).

  • Costituisce un limite di sicurezza. Un assembly è l'unità che riceve e accoglie le richieste di autorizzazione. Per ulteriori informazioni sulla relazione tra limiti di sicurezza e assembly, vedere Considerazioni sulla sicurezza degli assembly.

  • Costituisce un limite per i tipi. L'identità di ogni tipo include il nome dell'assembly in cui il tipo risiede. Un tipo denominato MyType caricato nell'ambito di un assembly si distingue da un tipo denominato MyType caricato nell'ambito di un assembly diverso.

  • Costituisce un limite per l'ambito dei riferimenti. Il manifesto dell'assembly contiene i metadati dell'assembly, che vengono utilizzati per la risoluzione dei tipi e per soddisfare le richieste di risorse. Essi specificano i tipi e le risorse che sono esposte all'esterno dell'assembly. Inoltre, il manifesto enumera altri assembly da cui dipende.

  • Costituisce un limite di versione. L'assembly è la più piccola unità aggiornabile di Common Language Runtime. Le versioni di tutti i tipi e di tutte le risorse appartenenti allo stesso assembly vengono aggiornate in blocco. Il manifesto dell'assembly descrive le dipendenze di versione che lo sviluppatore specifica per ciascun assembly dipendente. Per ulteriori informazioni sul controllo delle versioni, vedere Controllo delle versioni degli assembly.

  • Costituisce un'unità di distribuzione. All'avvio di un'applicazione, gli unici assembly la cui presenza è indispensabile sono quelli chiamati dall'applicazione in quel momento. Gli altri assembly, quali quelli delle risorse di localizzazione o quelli contenenti classi di utilità, possono essere recuperati su richiesta. In questo modo è possibile ottenere applicazioni che al primo download siano semplici e leggere. Per ulteriori informazioni sulla distribuzione degli assembly, vedere Distribuzione di applicazioni.

  • Costituisce l'unità minima per cui è supportata l'esecuzione contemporanea di diverse versioni. Per ulteriori informazioni sull'esecuzione di più versioni dello stesso assembly, vedere Assembly ed esecuzione contemporanea di diverse versioni.

Gli assembly possono essere statici o dinamici. Gli assembly statici possono includere tipi .NET Framework (interfacce e classi), così come risorse per l'assembly (immagini bitmap, file JPEG, file di risorse e così via). Gli assembly statici vengono memorizzati sul disco in file eseguibili portabili (PE, Portable Executable). È anche possibile utilizzare .NET Framework per creare assembly dinamici che vengono eseguiti direttamente dalla memoria e non richiedono il preventivo salvataggio su disco. È anche possibile salvare gli assembly dinamici sul disco dopo averli eseguiti.

Gli assembly possono essere creati in più modi. È possibile utilizzare strumenti di sviluppo, come Visual Studio 2005, già impiegati per la generazione di file con estensione dll o exe. In alternativa, è possibile utilizzare gli strumenti forniti con .NET Framework SDK per generare assembly con moduli creati in altri ambienti di sviluppo. Infine, è possibile creare assembly dinamici utilizzando librerie API di Common Language Runtime come Reflection.Emit.

Vedere anche

Concetti

Considerazioni sulla protezione degli assembly
Controllo delle versioni degli assembly
Assembly ed esecuzione contemporanea di diverse versioni

Altre risorse

Assembly in Common Language Runtime
Distribuzione di applicazioni .NET Framework