Cos’è un assembly?

Gli assembly rappresentano i principali componenti di base di un’applicazione .NET Framework. Ogni assembly è un insieme di funzionalità che vengono generate, associate a una versione e distribuite come singola unità di implementazione attraverso uno o più file. Tutti i tipi e le risorse gestite vengono contrassegnati come accessibili solo all’interno della relativa unità di implementazione oppure come accessibili dal codice esterno all’unità in questione.
Gli assembly sono autodescrittivi grazie al manifest, che è parte integrante di ogni assembly. Il manifest ha le seguenti funzioni:

  • Stabilisce l’identità (attraverso un nome in formato testo), la versione, la lingua e la firma digitale dell’assembly, se l’assembly dovrà essere condiviso da più applicazioni.
  • Definisce i file (in base a nome e hash del file) che formano l’implementazione dell’assembly.
  • Specifica i tipi e le risorse che formano l’assembly, compresi quelli che vengono esportati dall’assembly.
  • Individua le dipendenze dagli altri assembly in fase di compilazione.
  • Specifica l’insieme di autorizzazioni necessarie per la corretta esecuzione dell’assembly.

Queste informazioni vengono utilizzate in fase di esecuzione per risolvere i riferimenti, applicare i criteri di associazione delle versioni e convalidare l’integrità degli assembly caricati. I servizi di runtime possono determinare e localizzare l’assembly per qualsiasi oggetto in esecuzione, poiché ogni tipo viene caricato nel contesto di un assembly. Gli assembly costituiscono anche l’unità in base alla quale vengono applicate le autorizzazioni di protezione di accesso al codice. Quando si determinano le autorizzazioni da concedere al codice contenuto nell’assembly, la prova dell’identità per ciascun assembly viene considerata separatamente.
La natura autodescrittiva degli assembly rende anche possibile un’installazione con impatto zero e la distribuzione tramite XCOPY. Questa è una delle potenzialità del Framework, distribuire la propria applicazione senza dover registrare (o quasi, e in seguito vedremo come e perchè) componenti o altro.

Lascia una Risposta