posts - 644, comments - 2003, trackbacks - 137

My Links

News

Raffaele Rialdi website

Su questo sito si trovano i miei articoli, esempi, snippet, tools, etc.

Archives

Post Categories

Image Galleries

Blogs

Links

.NET Framework: Application Life Cycle Best Practices

È Mike Downen lo speaker della sessione che si focalizza sui problemi di gestione del ciclo di vita di una applicazione, usando il Framework 3.5 SP1.

IMG_0979 IMG_0980

Tra le cose interessanti c'è un tool su codeplex che permette di customizzare il pacchetto del Framework.net da installare sulla macchina. Il client profile del Framework 3.5 SP1 non è altro che una scelta di Microsoft sugli assembly più usati sul PC ma a quanto pare è possibile creare un pacchetto ancora più minimale.

Come avevo detto nella sessione sulle performance viene sottolineato che gli assembly in GAC sono verificati solo al deploy mentre gli altri sono verificati al load e questo fa una grossa differenza in performance. Lo strong name bypass della 3.5 SP1 risolve questo problema. Nella 3.5 SP1 non viene fatto il controllo dell'assembly se questo gira in full-trust.

Poi si passa al discorso di performance. La 3.5 SP1 introduce una serie di ottimizzazioni per il 'cold startup' che vedono un miglioramento del 10-20%.
Ngen può fare una bella differenza. Per esempio Essendo pre-jittato se il nostro assembly è usato da più processi, questo viene riutilizzato e quindi consente di dimnuire il working set.

Un dato importante è che i nostri assembly jittati con ngen hanno una dipendenza diretta da quelli del Framework. Questo significa che se Microsoft fa una service pack che modifica mscorlib, tutte le immagini native dei nostri assembly sono invalide. Per ovviare a questo problema, ad ogni update Microsoft invoca 'ngen update' che aggiorna le immagini jittate con ngen su quel pc.

Viene inoltre ricordato che è importante scegliere con attenzione il base address dell'assembly durante la creazione dell'immagine nativa da parte di ngen. Diversamente il caricamento sarà più lento e non potremo usufruire del vantaggio di avere condiviso l'assembly tra più processi (con maggiore occupazione di memoria).

Per verificare che isano realmente caricate le immagini create da ngen si può usare per esempio il Fusion log viewer.

La maggior parte degli argomenti della sessione è solo un ripasso di tanti concetti già noti, ma alcune cose sulla 3.5 SP1 sono novità molto interessanti.

Print | posted on martedì 11 novembre 2008 02:48 |

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET