Condividi tramite


Cenni preliminari sui metadati

Aggiornamento: novembre 2007

I metadati sono informazioni binarie che descrivono un programma e vengono memorizzate in un file eseguibile portabile (PE, Portable Executable) di Common Language Runtime o in memoria. Quando si compila il proprio codice in un file PE, i metadati vengono inseriti in una parte del file, mentre il codice viene convertito in Microsoft Intermediate Language (MSIL) e inserito in un'altra parte del file. Ogni tipo e membro definito e a cui si fa riferimento in un modulo o in un assembly è descritto nei metadati. Quando il codice viene eseguito, il runtime carica i metadati in memoria e vi fa riferimento per ottenere informazioni sulle classi utilizzate nel codice, come pure su membri, ereditarietà e così via.

I metadati consentono di descrivere ciascun tipo e membro definito nel codice in modo indipendente dal linguaggio. I metadati archiviano le seguenti informazioni:

  • Descrizione dell'assembly.

    • Identità (nome, versione, impostazioni cultura, chiave pubblica).

    • Tipi esportati.

    • Altri assembly da cui questo assembly dipende.

    • Autorizzazioni di protezione necessarie per l'esecuzione.

  • Descrizione di tipi.

    • Nome, visibilità, classe base e interfacce implementate.

    • Membri (metodi, campi, proprietà, eventi e tipi nidificati).

  • Attributi.

    • Elementi descrittivi aggiuntivi che modificano tipi e membri.

Vantaggi offerti dai metadati

I metadati costituiscono la chiave di un modello di programmazione più semplice che elimina la necessità di file del linguaggio di definizione dell'interfaccia (IDL, Interface Definition Language), di file di intestazione o di qualsiasi altro metodo esterno di riferimento ai componenti. I metadati consentono ai linguaggi .NET di descrivere se stessi automaticamente e in modo indipendente dal linguaggio, in modo trasparente sia per lo sviluppatore che per l'utente. Le capacità dei metadati possono inoltre essere estese con l'uso degli attributi. I metadati offrono i seguenti vantaggi principali:

  • File autodescrittivi.

    I moduli e gli assembly di Common Language Runtime sono autodescrittivi. I metadati di un modulo contengono tutto il necessario per interagire con un altro modulo. I metadati forniscono automaticamente le funzionalità di IDL in COM, consentendo di utilizzare un solo file sia per la definizione che per l'implementazione. Moduli e assembly di runtime non richiedono la registrazione presso il sistema operativo. Pertanto, le descrizioni utilizzate dal runtime rispecchiano sempre il codice effettivamente presente nel file compilato, incrementando così l'affidabilità dell'applicazione.

  • Interoperabilità dei linguaggi e progettazione basata su componenti semplificata.

    I metadati forniscono tutte le informazioni relative al codice compilato che occorrono per ereditare una classe da un file PE scritto in un linguaggio diverso. È possibile creare un'istanza di una classe scritta in uno dei linguaggi gestiti (qualsiasi linguaggio che si avvale di Common Language Runtime) senza preoccuparsi del marshalling esplicito e senza utilizzare codice di interoperabilità personalizzato.

  • Attributi.

    .NET Framework consente di dichiarare tipi specifici di metadati, detti attributi, nel proprio file compilato. Gli attributi sono disponibili nell'intero contesto di .NET Framework e vengono utilizzati per controllare in maggior dettaglio come si comporta il proprio programma in fase di esecuzione. È inoltre possibile inserire i propri metadati personalizzati nei file di .NET Framework tramite attributi personalizzati definiti dall'utente. Per ulteriori informazioni, vedere Estensione di metadati mediante attributi.

Vedere anche

Altre risorse

Metadati e componenti auto-descrittivi

Estensione di metadati mediante attributi