Veranstalter: Building & Connecting Know-how 16.-17. Februar 2011, München Partner: Windows...

Preview:

Citation preview

Veranstalter:

Building & Connecting Know-how16.-17. Februar 2011, München

Partner:

Windows Phone 7:Silverlight != Silverlight

Zur PersonWeblog:

http://blogs.compactframework.de/Peter.Nowakhttp://wp7buch.wordpress.com

Twitter: @PeNoWiMoMail: Peter.Nowak@hotmail.de

Agenda•Wieso ist Silverlight != Silverlight?–Technische Hintergründe–Unterschiede zum „großen“ Silverlight–Performance vs Architektur

•Tipps und Tricks für performantere Anwendungen

WP7: SL != SL„It isn't 'Silverlight Lite', it isn't 'Silverlight Different', it's Silverlight.“

Scott Guthrie, MS Vice President, MIX 2010

Aus technischer Sicht falsch!!!

Silverlight für WP7•Silverlight für WP7 basiert auf Silverlight 3–„Silverlight 3 + x“

Silverlight

„.NET Framework“

Silverlight für WP7

.NET Compact Framework „3.7“

Das bietet Silverlight 3 nicht• Gestenorientierte Steuerelemente• Auswahl der Eingabemethoden / SIP-Support

für TextBox• Zugriff auf Gerätefunktionen– Chooser und Launcher

• Application Bar• Cross-Domain Zugriff „Out of the box“• Einen Renderthread!

Hardware

• Stetige, schnelle Netzwerkverbindung

• Starke CPU• „Unlimitierter“ Speicher

• Begrenzter Akku• Akkuschonende CPU• Limitierte / keine,

„langsame“ Netzwerkverbindung

• Begrenzte Darstellungsoberfläche

Weitere Probleme• „Verwöhnte“ Entwickler– Frameworks– Starke Hardware

• Over Engineering(http://it-republik.de/dotnet/artikel/Patternitis-3534.html)

– Besp.: Benötige ich MVVM und Dependency Injection?

Lösungsmöglichkeiten• Best Practices– Vorgehensmodell– Silverlight• UI und Animationen• Weitere Optimierungen

• Frameworks die Helfen

Vorgehensmodell• Fragekatalog:– Ist das was ich tue das schnellstmögliche?– Kann ich es auf Größe / Geschwindigkeit hin

optimieren?– Brauche ich dieses Pattern / dieses Framework

wirklich?– Wird diese Animation wirklich benötigt?

Best Practices• Laden von Daten verzögern• Daten cachen, wo möglich– Bessere Geschwindigkeit– Ggfs. kein Netzwerk vorhanden

• Nur Daten darstellen, die benötigt werden– Ggfs Paging einsetzen für ListBoxen– Alternativ DetailsPage benutzen

UI Thread vs Render ThreadUI Thread:

• Operationen werden auf der CPU ausgeführt

• CPU Arbeit verbraucht mehr Strom

Aufgaben:• Benutzereingaben• Parsen von XAML• Zeichnen visueller

Elemente bei Instanziierung

• …

Render Thread:• Wird auf der GPU

ausgeführt• Stromsparender

Aufgaben:• Transparenz• Skalierung• Rotation• Verschiebung• Projektion

Grafiken• PNG vs. JPEG vs. BMP– JPG schnelle als PNG beim Laden durch den

fehlenden Alphakanal– BMP generell zu groß

• Grafiken nach Möglichkeit direkt in der Zielgröße verwenden

• Vektor- vs. Bitmapgrafik– Größe vs Geschwindigkeit– Skalierung

• Cachen von Netzwerkgrafiken

Steuerelemente• ListBox Optimierungen– DeferredLoadListBox & LowProfileImageLoader

http://bit.ly/ajnDch• ProgressBar Optimierungen– PerformanceProgressBar von Jeff Wilcox

http://www.jeff.wilcox.name/2010/08/performanceprogressbar/• Verlagert die Arbeit vom UI Thread in den Render

Thread

Steuerelemente• Pivot ist performanter als Panorama• Visibility vs. Opacity– Opacity ist schneller, verbraucht jedoch mehr

Speicher• DataTemplates sollten feste Größen besitzen• Templateerweiterungen vermeiden, wo

möglich

Datenreduktion• Je weniger Daten verarbeitet werden, desto

höher ist die Geschwindigkeit– Netzwerk– Verarbeitungsgeschwindigkeit

schneller

XML

JSO

N

Bina

ry

Dat

aCon

trac

t

Datenreduktion• Untersuchungen von Jevgeni Tšaikin

http://www.eugenedotnet.com/2010/12/windows-phone-7-serialization-comparison

Datenreduktion

Datenreduktion• Kombination mit ZIP möglich

• Nachteile:– Interoperabilität sinkt– Lesbarkeit wird verringert

Assemblygröße• Content- vs Ressource-Dateien– Content lädt schneller– Anwendungen laden schneller

• Assemblies ggfs. splitten, wenn diese zu groß werden– Satellitenassemblies werden nur bei Bedarf

nachgeladen

Weitere Tipps & Tricks• Konstruktor vs. Loaded-Ereignis– Verlagern von Code in das Loaded-Ereignis, wo

sinnvoll– Alernativ LayoutUpdated-Ereignis

• Quellcode schneller als XAML– XAML muss erst geparst werden!

• Datenbindung langsamer als direktes zuweisen

• DispatcherTimer nur, wenn nötig• Page Stacking vermeiden

Zusammenfassung• Silverlight / Silverlight für WP7 sind

unterschiedlich• Hardwareplattform erfordert ein Umdenken• Performance != Komfort für den Entwickler• Optimierung– Planung– Steuerelemente– Datenreduktion– Tipps & Tricks

Veranstalter:

Building & Connecting Know-how16.-17. Februar 2011, München

Partner:

FRAGEN?

Wir sehen uns wieder!

Konferenz speziell zu C++ 05. – 06. Mai 2011, direkt am Chiemsee cpp.ADC2011.de

Trainings und Events der ppedvMehr als 100 verschiedene Trainingsauf Microsoft-Technologien spezialisiert11 Standorte in D & ATMaßgeschneiderte Trainings direkt bei Ihnen vor Ort!www.ppedv.de

Veranstalter:

Building & Connecting Know-how16.-17. Februar 2011, München

Partner:

Hat Ihnen mein Vortrag gefallen?Ich freue mich auf Ihr Feedback!

Veranstalter:

Building & Connecting Know-how16.-17. Februar 2011, München

Partner:

Vielen Dank!Peter Nowak

Recommended