Indipendenza dai tipi e sicurezza
Il codice indipendente dai tipi accede solo alle posizioni di memoria cui è autorizzato ad accedere. Nel presente contesto, per "indipendenza dai tipi" si intende unicamente sicurezza dei tipi rispetto all'accesso della memoria ed è necessario non confonderlo con il concetto di "indipendenza dai tipi" in senso più ampio. Il codice indipendente dai tipi, ad esempio, non è in grado di leggere i valori dei campi privati di un altro oggetto. Esso accede ai tipi solo con modalità ben definite e consentite.
Durante la compilazione JIT, un processo di verifica facoltativo esamina i metadati e il linguaggio intermedio Microsoft (MSIL, Microsoft Intermediate Language) di un metodo da sottoporre a compilazione JIT in codice macchina nativo per verificare che siano indipendenti dai tipi. Questo processo viene omesso se il codice dispone dell'autorizzazione a evitare la verifica. Per ulteriori informazioni sulla verifica, vedere Processo di esecuzione gestita.
Sebbene la verifica dell'indipendenza dai tipi non sia obbligatoria per l'esecuzione del codice gestito, l'indipendenza dai tipi ha un ruolo fondamentale nell'applicazione della sicurezza e nell'isolamento degli assembly. Quando il codice è indipendente dai tipi, Common Language Runtime è in grado di isolare totalmente gli assembly l'uno dall'altro. L'isolamento aiuta a garantire che gli assembly non possano influire negativamente l'uno sull'altro e accresce l'affidabilità dell'applicazione. I componenti indipendenti dai tipi possono essere eseguiti in tutta sicurezza nello stesso processo anche se la fiducia è concessa a livelli differenti. Quando il codice non è indipendente dai tipi, è possibile che si verifichino effetti collaterali indesiderati. Il runtime, ad esempio, non è in grado di impedire al codice non gestito di effettuare chiamate a codice nativo (non gestito) e di eseguire operazioni dannose. Quando il codice è indipendente dai tipi, il meccanismo di applicazione della sicurezza del runtime garantisce che tale codice non acceda a codice nativo se non dispone di autorizzazioni specifiche. Per consentirne l'esecuzione, è necessario concedere l'oggetto SecurityPermission a tutto il codice non indipendente dai tipi, con il membro di enumerazione SkipVerification passato.
Vedere anche
Concetti
Scrittura di codice indipendente dai tipi verificabile