Prestazioni dei componenti aggiuntivi
Le prestazioni dei componenti aggiuntivi possono essere migliorate utilizzando il caricamento indipendente dal dominio per il contratto della pipeline. L'attivazione può essere migliorata generando immagini native per i segmenti della pipeline.
Il caricamento indipendente dal dominio migliora le chiamate tra domini
Quando un componente aggiuntivo viene caricato in un dominio applicazione separato, mediante la pipeline viene effettuato il marshalling delle chiamate tra host e componente aggiuntivo attraverso il limite del dominio applicazione. Le prestazioni di tali chiamate tra domini migliorano notevolmente se l'assembly che contiene il contratto viene caricato come indipendente dal dominio.
L'assembly deve avere un nome sicuro ed essere installato nella Global Assembly Cache, nonché disporre di LoaderOptimizationAttribute con il flag LoaderOptimization.MultiDomainHost o LoaderOptimization.MultiDomain.
Evitare il compilatore JIT migliora l'attivazione
Il compilatore JIT (Just-In-Time) contribuisce in modo significativo al sovraccarico nelle prestazioni di attivazione del componente aggiuntivo, specialmente quando questo viene attivato in un dominio applicazione separato. Per evitare di utilizzare il compilatore JIT, attenersi a queste linee guida:
Assegnare agli assembly della pipeline nomi sicuri e installarli nella Global Assembly Cache.
Utilizzare lo strumento Ngen.exe (generatore di immagini native) per creare immagini native per gli assembly della pipeline.
Assicurarsi che l'assembly che contiene il contratto sia caricato come indipendente dal dominio, come descritto nella sezione precedente.
Nota Questo punto è estremamente importante.Se il contratto non viene caricato come indipendente dal dominio, nessuno dei componenti sul lato componente aggiuntivo può utilizzare immagini native.
Applicare LoaderOptimizationAttribute all'assembly dell'host con il flag MultiDomainHost o MultiDomain, per consentire la condivisione delle immagini native degli assembly .NET Framework tra domini applicazione.
Nota Questo miglioramento nelle prestazioni non sarà rilevabile durante l'esecuzione nel debugger, perché il processo di hosting (vshost.exe) non è configurato per la condivisione degli assembly.È possibile disabilitare il processo di hosting, anche se questa scelta non è consigliata.Le prestazioni non devono essere misurate durante l'esecuzione nel debugger.
Vedere anche
Riferimenti
Ngen.exe (generatore di immagini native)