Componenti aggiuntivi ed estensibilità

I componenti aggiuntivi offrono funzionalità o servizi estesi per un'applicazione host. .NET Framework fornisce un modello di programmazione che gli sviluppatori possono utilizzare per sviluppare componenti aggiuntivi e attivarli nella propria applicazione host. A tale scopo, il modello costruisce una pipeline di comunicazione tra l'host e il componente aggiuntivo. Il modello viene implementato mediante l'utilizzo dei tipi negli spazi dei nomi System.AddIn, System.AddIn.Hosting, System.AddIn.Pipeline e System.AddIn.Contract.

In questa panoramica sono incluse le sezioni seguenti:

  • Modello di componente aggiuntivo

  • Distinzione tra componenti aggiuntivi e host

  • Argomenti correlati

  • Riferimenti

NotaNota

Per ulteriori esempi di codice e versioni Community Technology Preview di strumenti di compilazione di pipeline per componenti aggiuntivi, vedere il sito relativo al framework di componenti aggiuntivi ed estensibilità gestita in CodePlex (la pagina potrebbe essere in inglese).

Modello di componente aggiuntivo

Il modello di componente aggiuntivo si basa su una serie di segmenti che costituiscono la pipeline del componente aggiuntivo, detta anche pipeline di comunicazione, responsabile di qualsiasi comunicazione tra il componente aggiuntivo e l'host. La pipeline è un modello di comunicazione simmetrico costituito da segmenti che scambiano dati tra un componente aggiuntivo e il relativo host. Lo sviluppo di questi segmenti tra l'host e il componente aggiuntivo fornisce i livelli di astrazione necessari per supportare il controllo della versione e l'isolamento del componente aggiuntivo

Nella figura seguente viene illustrata la pipeline.

Pipeline di componenti aggiuntivi

Modello pipeline di componenti aggiuntivi

Gli assembly per questi segmenti non devono necessariamente appartenere allo stesso dominio applicazione. È possibile caricare un componente aggiuntivo in un nuovo dominio applicazione, in un dominio applicazione esistente o nel dominio applicazione dell'host. Inoltre più componenti aggiuntivi possono essere caricati nello stesso dominio applicazione per consentire la condivisione di risorse e contesti di sicurezza.

Nel modello di componente aggiuntivo è supportato, ed è consigliabile utilizzare, un limite facoltativo tra l'host e il componente aggiuntivo, detto limite di isolamento o anche limite remoto. Può essere un limite del dominio applicazione o del processo.

Il segmento del contratto al centro della pipeline viene caricato sia nel dominio applicazione dell'host che nel dominio applicazione del componente aggiuntivo. Il contratto definisce i metodi virtuali utilizzati dall'host e dal componente aggiuntivo per lo scambio dei tipi.

Per passare attraverso il limite di isolamento i tipi devono essere contratti o tipi serializzabili. I tipi che non sono contratti o tipi serializzabili devono essere convertiti in contratti dai segmenti dell'adattatore nella pipeline.

I segmenti di visualizzazione della pipeline sono classi base o interfacce astratte che forniscono all'host e al componente aggiuntivo una visualizzazione dei metodi condivisi, secondo quanto definito dal contratto.

Per ulteriori informazioni sullo sviluppo di segmenti di pipeline, vedere Sviluppo pipeline.

Nelle sezioni che seguono vengono descritte le funzionalità del modello di componente aggiuntivo.

Controllo delle versioni indipendente

Il modello di componente aggiuntivo consente a host e componenti aggiuntivi di controllare le versioni in modo indipendente. Di conseguenza, il modello di componente aggiuntivo attiva gli scenari seguenti:

  • Creazione di un adattatore che consente a un host di utilizzare un componente aggiuntivo compilato per una versione precedente dell'host.

  • Creazione di un adattatore che consente a un host di utilizzare un componente aggiuntivo compilato per una versione successiva dell'host.

  • Creazione di un adattatore che consente a un host di utilizzare componenti aggiuntivi compilati per un host diverso.

Individuazione e attivazione

È possibile attivare un componente aggiuntivo utilizzando un token da un insieme che rappresenta i componenti aggiuntivi trovati in un archivio informazioni. La ricerca dei componenti aggiuntivi viene effettuata in base al tipo che definisce la visualizzazione host del componente aggiuntivo. È inoltre possibile cercare un componente aggiuntivo specifico in base al tipo che lo definisce. L'archivio informazioni è costituito da due file di cache: l'archivio della pipeline e l'archivio dei componenti aggiuntivi.

Per informazioni sull'aggiornamento e la ricompilazione dell'archivio informazioni, vedere Individuazione di componenti aggiuntivi. Per ulteriori informazioni sull'attivazione di componenti aggiuntivi, vedere Attivazione di componenti aggiuntivi e Procedura: attivare componenti aggiuntivi con livelli diversi di isolamento e di sicurezza.

Livelli di isolamento e processi esterni

Il modello di componente aggiuntivo supporta diversi livelli di isolamento tra un componente aggiuntivo e il relativo host o tra componenti aggiuntivi. A partire da quello meno isolato, di seguito sono descritti tali livelli:

  • Il componente aggiuntivo e l'host vengono eseguiti nello stesso dominio applicazione. Questo livello non è consigliato in quanto si perdono l'isolamento e le funzionalità di scaricamento disponibili quando si utilizzano domini applicazione diversi.

  • Più componenti aggiuntivi vengono caricati nello stesso dominio applicazione, che è diverso dal dominio applicazione utilizzato dall'host.

  • Ogni componente aggiuntivo viene caricato esclusivamente nel proprio dominio applicazione. Si tratta del livello di isolamento più comune.

  • Più componenti aggiuntivi vengono caricati nello stesso dominio applicazione in un processo esterno.

  • Ogni componente aggiuntivo viene caricato esclusivamente nel proprio dominio applicazione in un processo esterno. È lo scenario con il livello di isolamento più elevato.

Per ulteriori informazioni sull'utilizzo di processi esterni, vedere Procedura: attivare componenti aggiuntivi con livelli diversi di isolamento e di sicurezza.

Gestione della durata

Poiché il modello di componente aggiuntivo si estende sui limiti del dominio applicazione e del processo, l'operazione di Garbage Collection di per sé non è sufficiente per rilasciare e recuperare oggetti. Il modello di componente aggiuntivo fornisce un meccanismo di gestione della durata che utilizza token e conteggio dei riferimenti e generalmente non richiede programmazione aggiuntiva. Per ulteriori informazioni, vedere Gestione della durata.

Torna all'inizio

Distinzione tra componenti aggiuntivi e host

La differenza tra un componente aggiuntivo e un host è semplicemente che l'host attiva il componente aggiuntivo. L'host può essere il più grande dei due elementi, ad esempio un'applicazione di elaborazione di testo e i relativi correttori ortografici, oppure il più piccolo, ad esempio un client di messaggistica immediata che incorpora un lettore multimediale. Il modello di componente aggiuntivo supporta componenti aggiuntivi in scenari client e server. Tra gli esempi di componenti aggiuntivi per server sono inclusi quelli che forniscono ai server di posta funzionalità antivirus, filtri per la posta indesiderata e protezione IP. Tra gli esempi di componenti aggiuntivi per client sono inclusi quelli per elaboratori di testo, funzionalità specializzate per programmi di grafica e giochi e funzionalità antivirus per i client di posta elettronica locali.

Torna all'inizio

Argomenti correlati

Titolo

Descrizione

Sviluppo pipeline

Viene descritta la pipeline di comunicazione dei segmenti dall'applicazione host al componente aggiuntivo. Sono riportati esempi di codice negli argomenti delle procedure dettagliate che illustrano come costruire la pipeline e distribuirvi i segmenti in Visual Studio.

Individuazione di componenti aggiuntivi

Viene descritto come rendere i componenti aggiuntivi individuabili dalle applicazioni host.

Attivazione di componenti aggiuntivi

Viene descritto come attivare e disattivare i componenti aggiuntivi.

Prestazioni dei componenti aggiuntivi

Viene descritto come utilizzare il caricamento di assembly indipendenti dal dominio e le immagini native per migliorare le prestazioni dei componenti aggiuntivi.

Procedura: attivare componenti aggiuntivi con livelli diversi di isolamento e di sicurezza

Viene descritto come attivare i componenti aggiuntivi in diversi scenari a livello di dominio applicazione, processo e sicurezza.

Procedura: utilizzare dati di qualificazione

Viene descritto come accedere e applicare i dati personalizzati attribuiti a componenti aggiuntivi e segmenti di pipeline.

Sviluppatori di componenti aggiuntivi

Viene descritto come sviluppare un componente aggiuntivo per utilizzare i segmenti obbligatori della relativa pipeline.

Domini applicazione e assembly

Viene descritta la relazione tra domini dell'applicazione, che forniscono un limite di isolamento per sicurezza, affidabilità e controllo delle versioni e assembly.

Torna all'inizio

Riferimenti

System.AddIn

System.AddIn.Contract

System.AddIn.Hosting

System.AddIn.Pipeline

Torna all'inizio