Interessante sessione seguita nel primo pomeriggio - al ritorno da una mattinata turistica nel centro di Barcellona - a proposito delle cose da non fare nelle applicazioni Silverlight. A parte alcuni consigli che non sempre possono essere seguiti (ad esempio sulla modalità WindowLess) molti altri tip sono sicuramente da considerare:

Install experience: E' utile modificare l'immagine di default (quella che chiede di installare Silverlight) per dare un'idea dell'applicazione cui l'utente sta accedendo. Una buona soluzione è quella di usare una immagine grayed che mostra l'interfaccia dell'applicazione cui si sta accedendo.

Load Experience: Minimizzare il tempo di caricamento. Il consiglio può sembrare ovvio ma naturalmente non è mai ripetuto troppo. Quindi per non mettere elementi eccessivamente pesanti all'interno di un XAP è opportuno usare

    • download on demand
    • cache nello isolated storage

Splash screen: L'uso di uno splash screen consente di migliorare la user experience e  di comunicare all'utente le informazioni di download. Esiste per questo una funzione javascript per tracciare il download.

Isolated Storage: la cache di dll, immagini, risorse, e altro nell'Isolated Storage oltre a consentire di dare migliori performance al download dell'applicazione può consentire di creare applicazioni che si avviano anche se si è offline.

Media: evitare di ridimensionare i video e i font. Questo perchè si tratta in entrambi i casi di operazioni molto onerose. Inutile dire che esistono casi in cui questo non è possibile, ma tenerlo presente è opportuno.

Processori multicore: Attenzione che Silverlight si avvantaggia molto dei processori multi-core. Tenetelo presente mentre sviluppate perchè poi non tutti i client avranno le stesse prestazioni della vostra macchina di sviluppo.

Design: Usare Dati di test per facilitare i designer. A questo scopo esistono due modi per individuare se si è a DesignTime:

    • DesignerProperties.GetIsInDesigneMode(this) - internamente ad UserControls
    • HtmlPage.IsEnabled - da altre classi

Debug settings: usare enableRedrewRegions = true per verificare quanto oneroso è il redraw dell'interfaccia. In questa modalità diagnostica il plugin lo renderà evidente con delle colorazioni particolari.

Elementi nascosti: Usare Visibility.Collapse invece che Opacity="0". Questo perchè gli elementi non vengono disegnati solo con l'attributo Visibility mentre con l'Opacity avviene lo stesso una valutazione dell'elemento una fase di rendering dello stesso.

Elementi di tipo Path: Non usare Width e Height con gli oggetti di tipo Path perchè è molto oneroso.

Memoria: usare GC.GetTotalMemory() per verificare il suo utilizzo.

Un'altro utile consiglio è stato quello di utilizzare il tool XPerf per monitorare iexplore.exe -> agcore.dll. Il tool è disponibile nel Windows Performance Tools Kit, v.4.1.1 (QFE)


Aggiungi Commento