Condividi tramite


Interoperabilità tra linguaggi diversi

In questa sezione viene descritto il supporto integrato di Common Language Runtime per l'interoperabilità dei linguaggi e viene illustrato il ruolo giocato da Common Language Specification (CLS) in tale ambito.

L'interoperabilità dei linguaggi è la capacità del codice di interagire con codice scritto con un linguaggio di programmazione diverso. L'interoperabilità dei linguaggi estende le possibilità di riutilizzo del codice e incrementa l'efficienza del processo di sviluppo.

Assicurare l'interoperabilità dei linguaggi è sempre stato un obiettivo ambizioso. Gli sviluppatori utilizzano infatti una gran varietà di tecnologie e strumenti, ciascuno dei quali può supportare funzionalità e tipi diversi. I compilatori dei linguaggi e gli strumenti che si avvalgono di Common Language Runtime beneficiano comunque del supporto che il runtime incorpora per l'interoperabilità dei linguaggi.

Common Language Runtime fornisce le necessarie basi per l'interoperabilità dei linguaggi specificando e applicando un sistema di tipi comuni e fornendo metadati. Poiché tutti i linguaggi che si avvalgono del runtime osservano le regole del sistema di tipi comuni per la definizione e l'uso dei tipi, i diversi linguaggi utilizzano i tipi nello stesso modo. I metadati contribuiscono all'interoperabilità dei linguaggi definendo un meccanismo unico per l'archiviazione e il recupero delle informazioni sui tipi. I compilatori archiviano le informazioni sui tipi come metadati e Common Language Runtime utilizza tali informazioni per fornire servizi durante l'esecuzione. Il runtime è in grado di gestire l'esecuzione di applicazioni multilinguaggio perché tutte le informazioni sui tipi vengono archiviate e recuperate allo stesso modo, indipendentemente dal linguaggio in cui è scritto il codice.

Il codice gestito beneficia del supporto che il runtime offre per l'interoperabilità dei linguaggi, come descritto di seguito:

  • I tipi possono ereditare l'implementazione da altri tipi, passare oggetti ai metodi di un altro tipo e chiamare metodi definiti in altri tipi, indipendentemente dal linguaggio in cui sono implementati.

  • La conoscenza di un solo ambiente (il MSIL e i metadati per Common Language Runtime) consente ai debugger, ai profiler e ad altri strumenti di supportare tutti i linguaggi di programmazione che si avvalgono del runtime.

  • La gestione delle eccezioni è coerente tra i diversi linguaggi. Il proprio codice, scritto in un determinato linguaggio, può generare un'eccezione che verrà correttamente intercettata anche da un oggetto scritto in un altro linguaggio.

Anche se il runtime fornisce a tutto il codice gestito il supporto per l'esecuzione in un ambiente multilinguaggio, non è garantito che le funzionalità dei propri tipi potranno essere correttamente utilizzate dai linguaggi di programmazione adottati da altri sviluppatori. Tale limitazione è principalmente dovuta al fatto che il compilatore di ciascun linguaggio che si avvale del runtime utilizza i metadati e il sistema di tipi per supportare un insieme di funzionalità specifico del proprio linguaggio. Nei casi in cui non si è certi del linguaggio con cui verrà scritto il codice chiamante, non sarà facile sapere se le funzionalità esposte dal proprio componente risulteranno accessibili. Se, ad esempio, il linguaggio scelto supporta gli Unsigned Integer, è possibile progettare un metodo con un parametro di tipo UInt32. Tale metodo, tuttavia, non potrebbe venire utilizzato da un linguaggio che non riconosce gli Unsigned Integer.

Per essere certi che il proprio codice gestito sia accessibile da parte di sviluppatori che utilizzano altri linguaggi di programmazione, .NET Framework fornisce le specifiche Common Language Specification (CLS), che descrivono un set di funzionalità fondamentali dei linguaggi e definiscono le regole per l'utilizzo di tali funzionalità. Per ulteriori informazioni sulla compatibilità con CLS di componenti e strumenti, vedere Scrittura di codice conforme a CLS.

Argomenti correlati

Titolo

Descrizione

Specifiche CLS (Common Language Specification)

Viene spiegato perché utilizzare un set di funzionalità comuni a tutti i linguaggi e vengono identificate le regole e le funzionalità di CLS.

Scrittura di codice conforme a CLS

Viene discusso il significato della compatibilità con CLS per i componenti e vengono identificati i livelli di compatibilità con CLS per gli strumenti.

Sistema di tipi comuni

Viene descritto in che modo i tipi vengono dichiarati, utilizzati e gestiti da Common Language Runtime.

Metadati e componenti auto-descrittivi

Viene spiegato il meccanismo che Common Language Runtime adotta per descrivere un tipo e memorizzare la relativa informazione con il tipo stesso.