Attivazione di componenti aggiuntivi
Dopo aver utilizzato i metodi di individuazione e aver ottenuto un insieme di token di componenti aggiuntivi per una visualizzazione host specificata, è possibile attivare un componente aggiuntivo dall'insieme utilizzandone il token, rappresentato da un oggetto AddInToken. Per ulteriori informazioni su come individuare i componenti aggiuntivi disponibili nel sistema in uso, vedere Individuazione di componenti aggiuntivi.
Quando si utilizzano gli overload del metodo Activate su un oggetto AddInToken, è possibile specificare le opzioni di attivazione seguenti:
Il dominio applicazione nel quale viene caricato il componente aggiuntivo.
Il livello di attendibilità della sicurezza o il set di autorizzazioni concesso al dominio applicazione creato per il componente aggiuntivo.
Processo esterno in cui attivare il componente aggiuntivo. Si tratta di un'opzione avanzata per lo sviluppo di componenti aggiuntivi.
Il metodo Activate restituisce la visualizzazione host del componente aggiuntivo. L'applicazione host può quindi chiamare i metodi definiti nel contratto. L'applicazione host può controllare la durata del componente aggiuntivo chiudendolo con la classe AddInController. Può inoltre fare in modo che il Garbage Collector recuperi il componente aggiuntivo quando non viene più fatto riferimento a esso.
Attivazione
In generale, le applicazioni host fanno in modo che l'host e il componente aggiuntivo vengano eseguiti in domini applicazione distinti, impostando un dominio applicazione per ogni componente aggiuntivo. In questo modo i componenti aggiuntivi possono funzionare in contesti isolati sia dall'host sia da altri componenti aggiuntivi. Questo isolamento impedisce che si verifichino conflitti e consente il controllo delle versioni dei componenti aggiuntivi.
Poiché il componente aggiuntivo si trova nel proprio dominio applicazione, è possibile eseguirne il test nel relativo ambiente nonché il test del lato della pipeline. I segmenti dell'adattatore del componente aggiuntivo, del contratto e della pipeline della visualizzazione del componente aggiuntivo vengono caricati nello stesso dominio applicazione del componente aggiuntivo. Anche gli eventuali altri assembly richiesti dal componente aggiuntivo vengono caricati nel dominio applicazione di tale componente.
Quando si attivano i componenti aggiuntivi, l'applicazione host in genere utilizza l'overload del metodo Activate che accetta un livello di sicurezza specificato e crea automaticamente un dominio applicazione per il componente aggiuntivo. È possibile specificare un AddInSecurityLevel o un PermissionSet per il livello di sicurezza. Quando il metodo Activate crea un dominio applicazione per il componente aggiuntivo, imposta come file di configurazione di tale dominio il file addinassemblyname.config, se disponibile.
Per un controllo più preciso o per il pooling dei componenti aggiuntivi, è possibile utilizzare gli overload del metodo AddInToken.Activate in modo da specificare un dominio applicazione esistente per il caricamento dei componenti aggiuntivi. Se si specifica un dominio applicazione esistente, è possibile condividere facilmente risorse, contesti di sicurezza e informazioni sulle impostazioni cultura con altri componenti aggiuntivi.
È necessario considerare il contesto di sicurezza che verrà applicato al dominio applicazione del componente aggiuntivo. È ad esempio possibile che un'applicazione host venga eseguita con attendibilità totale ma che debba eseguire componenti aggiuntivi con minori autorizzazioni. È possibile utilizzare gli overload del metodo Activate per specificare un'area di sicurezza con l'enumerazione AddInSecurityLevel. Queste aree di sicurezza includono FullTrust, Host, Intranet o Internet. Le autorizzazioni adatte per l'area di sicurezza vengono applicate al codice in esecuzione nel dominio applicazione. Le autorizzazioni disponibili per queste aree di sicurezza dipendono dalle impostazioni di sicurezza di .NET Framework esistenti.
Se non si desidera utilizzare le autorizzazioni per un'area di sicurezza, è possibile utilizzare gli overload del metodo Activate per fornire il proprio oggetto PermissionSet.
È possibile utilizzare gli overload del metodo Activate per creare un processo esterno per il componente aggiuntivo o per collegare il componente aggiuntivo a un processo esterno esistente creato per ospitare i componenti aggiuntivi. Tali overload utilizzano le classi AddInProcess e AddInEnvironment. Per ulteriori informazioni sull'attivazione dei componenti aggiuntivi in un processo esterno, vedere Procedura: attivare componenti aggiuntivi con livelli diversi di isolamento e di sicurezza.
Controllo della durata del componente aggiuntivo
La classe AddInController fornisce metodi che consentono di eseguire le attività relative ai componenti aggiuntivi seguenti:
Arrestare il componente aggiuntivo.
Ottenere il dominio applicazione del componente aggiuntivo.
Ottenere un token del componente aggiuntivo per una successiva attivazione.
Ottenere un oggetto AddInEnvironment da utilizzare per l'attivazione del processo esterno.
Utilizzare il metodo GetAddInController per ottenere il controller per un componente aggiuntivo specificato.
Il metodo Shutdown gestisce i dettagli necessari per l'arresto di un componente aggiuntivo. Le informazioni necessarie sono la posizione in cui il componente aggiuntivo viene caricato, il relativo dominio dell'applicazione ed, eventualmente, i processi in cui il componente aggiuntivo è in esecuzione. Se il dominio dell'applicazione è stato creato automaticamente, viene scaricato da questo metodo. Se il componente aggiuntivo è stato attivato in un dominio applicazione specificato, si verificherà il timeout del servizio di durata sull'oggetto contratto remoto e pertanto il dominio applicazione resterà caricato. Quando l'oggetto contratto viene eliminato, il componente aggiuntivo risulterà disponibile per il recupero mediante Garbage Collection.
Esempio
Nell'esempio seguente viene attivato un componente aggiuntivo con un livello di sicurezza specificato in un dominio applicazione creato automaticamente.
'Ask the user which add-in they would like to use.
Dim selectedToken As AddInToken = ChooseAddIn(tokens)
'Activate the selected AddInToken in a new
'application domain with the Internet trust level.
Dim CalcAddIn As Calculator = selectedToken.Activate(Of Calculator)(AddInSecurityLevel.Internet)
'Run the add-in using a custom method.
RunCalculator(CalcAddIn)
//Ask the user which add-in they would like to use.
AddInToken selectedToken = ChooseAddIn(tokens);
//Activate the selected AddInToken in a new
//application domain with the Internet trust level.
Calculator CalcAddIn = selectedToken.Activate<Calculator>(AddInSecurityLevel.Internet);
//Run the add-in using a custom method.
RunCalculator(CalcAddIn);
Vedere anche
Attività
Procedura: attivare componenti aggiuntivi con livelli diversi di isolamento e di sicurezza
Concetti
Componenti aggiuntivi ed estensibilità