Condividi tramite


Creazione e configurazione di domini applicazione

Aggiornamento: novembre 2007

Dopo aver determinato dove collocare i limiti dei domini in base ai criteri descritti nella sezione precedente, l'host utilizzerà il metodo CreateDomain del tipo System.AppDomain per creare domini in cui eseguire il codice utente. Ciascun dominio applicazione contiene un'insieme di coppie nome/valore in cui un host può memorizzare informazioni relative a un dominio. Le coppie nome/valore vengono passate come parametro a CreateDomain.

.NET Framework definisce diverse proprietà che vengono riconosciute dal runtime a livello nativo. I nomi di tali proprietà vengono definiti dalle stringhe statiche contenute nella classe System.AppDomain. Le proprietà riconosciute a livello nativo possono essere impostate dall'host per personalizzare il dominio applicazione. Tali proprietà consentono ad esempio di controllare il modo in cui viene isolato il codice in esecuzione in domini diversi. Gli host possono creare nuove coppie nome/valore in cui memorizzare informazioni specifiche del proprio scenario.

In generale, l'isolamento offerto dai domini applicazione assume due forme:

  • I domini applicazione impediscono al codice che viene eseguito in un dominio applicazione di interferire con altri domini impedendo ai tipi di un dominio di vedere e chiamare i tipi di altri domini. I domini applicazione confidano nel fatto che la resistenza del codice agli errori di memoria sia stata verificata.

  • L'host controlla il percorso da cui il runtime preleva il codice da caricare in un determinato dominio applicazione per suo conto. In tal modo si impedisce al codice di un'applicazione di interferire inavvertitamente con altre applicazioni. Tale capacità di determinare l'ambito delle richieste di caricamento rappresenta una sostanziale differenza rispetto al modo in cui funzionano attualmente Microsoft Win32 e COM. In Windows l'ambito di risoluzione attuale è l'intero computer, perché ciascuna applicazione può utilizzare qualsiasi codice descritto nel Registro di sistema o disponibile in un percorso noto, quale la directory di sistema di Windows. Nel contesto corrente la pratica predefinita è quella della condivisione e tale comportamento contribuisce all'insorgere di conflitti tra DLL.

Oltre a stabilire un ambito relativamente al modo in cui il codice deve essere caricato, è anche importante determinare l'ambito delle informazioni di configurazione di un'applicazione. Tuttavia, oggi questo non è possibile per molte impostazioni di configurazione.

Se ad esempio si decide di eseguire una classe COM su un computer remoto, l'impostazione della chiave del Registro di sistema RemoteServerName per una particolare classe influenza tutte le applicazioni che utilizzano tale classe. Analogamente a quanto detto riguardo la condivisione involontaria del codice, anche la condivisione involontaria delle impostazioni di configurazione contribuisce a impedire a un'applicazione il pieno controllo sul proprio funzionamento.

Le proprietà System.AppDomainFlags.ApplicationBase e System.AppDomainFlags.ConfigurationFile controllano rispettivamente la possibilità di specificare le directory in cui il runtime cerca gli assembly e l'ambito delle impostazioni di configurazione di un determinato dominio applicazione.

ApplicationBase stabilisce per il dominio applicazione una directory principale sotto cui il runtime cerca gli assembly privati. Un host che consente il caricamento di assembly dal disco deve fornire un ApplicationBase per indicare al runtime dove cercare tali assembly.

La proprietà ConfigurationFile specifica il nome di un file XML che contiene impostazioni utilizzate per configurare l'applicazione che viene eseguita nel dominio applicazione. Tra le impostazioni che possono essere incluse nel file di configurazione dell'applicazione vi sono le regole per il controllo delle versioni e le indicazioni per l'individuazione dei tipi a cui i tipi in esecuzione nel dominio applicazione possono accedere da remoto.

Per le descrizioni delle altre proprietà che consentono di configurare un dominio applicazione, vedere la documentazione della classe AppDomain.

Nota sulla sicurezza Il valore predefinito della proprietà AppDomainSetup.DisallowCodeDownload è false. Questa impostazione non si rivela sicura per i servizi. Per impedire lo scaricamento di codice parzialmente attendibile da parte dei servizi, impostare questa proprietà su true.

Vedere anche

Riferimenti

AppDomain

Altre risorse

Hosting di Common Language Runtime