Share via


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.

    NotaNota

    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.

    NotaNota

    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

LoaderOptimizationAttribute

LoaderOptimization

Ngen.exe (generatore di immagini native)

Concetti

Domini applicazione e assembly