Condividi tramite


Caricamento ed esecuzione di codice utente

Aggiornamento: novembre 2007

La ragione per cui si scrive un host è impostare un ambiente applicazione in cui eseguire codice utente gestito. In questo contesto, per codice utente si intende tutto il codice gestito che non fa specificamente parte dell'host. Per l'host Internet Explorer, ad esempio, il codice utente è costituito dai controlli gestiti e dagli script che costituiscono le pagine HTML. Per l'host di un server di applicazioni, il codice utente è il codice che contiene le regole aziendali che il server di applicazioni gestisce ed esegue.

Tutto il codice gestito è incluso in una classe Assembly. Pertanto, i metodi disponibili per caricare ed eseguire il codice gestito sono tutti basati su assembly. Ad esempio, System.AppDomain e le classi System.Reflection.Assembly contengono metodi che consentono a un host di caricare un assembly. I metodi Load sono disponibili in varie forme: alcuni accettano un nome di assembly, altri accettano un percorso completo del file che contiene il manifesto di un assembly e così via. Questi metodi vengono utilizzati per caricare assembly precedentemente creati e salvati su disco.

Si immagini ad esempio che l'host per il server di applicazioni sopra descritto consenta agli utenti di scrivere regole aziendali in forma di codice gestito da caricare ed eseguire nel processo del server di applicazioni. Quando il server di applicazioni riceve la richiesta di eseguire un metodo di una particolare regola aziendale, il codice di hosting di runtime del server determina in che dominio eseguire il codice o se creare un nuovo dominio. Il codice di hosting di runtime utilizza quindi uno dei metodi Load per caricare l'assembly contenente le regole aziendali e utilizza reflection per eseguire un metodo su tale regola aziendale. Per ulteriori informazioni, vedere la documentazione relativa allo spazio dei nomi System.Reflection.

Lo spazio dei nomi System.Reflection.Emit fornisce inoltre tipi per la creazione dinamica di assembly. Caricare gli assembly in questo modo è vantaggioso se l'applicazione sta eseguendo codice di script.

È ad esempio possibile che un programma di elaborazione testi supporti un linguaggio macro che l'utente può utilizzare per personalizzare il comportamento dell'applicazione. Dopo il caricamento del runtime e la creazione di un dominio applicazione, nel programma di elaborazione testi possono essere compilati gli script macro in codice gestito e può essere creato un assembly con System.Reflection.Emit. Tale assembly può quindi essere caricato nel dominio applicazione ed eseguito. A seconda dello scenario, è anche possibile che l'assembly esista solo per la durata dell'applicazione e non venga pertanto mai salvato su disco.

Vedere anche

Riferimenti

AppDomain

System.Reflection.Assembly

System.Reflection.Emit

Altre risorse

Hosting di Common Language Runtime