Date post: | 06-Apr-2015 |
Category: |
Documents |
Upload: | lubbert-gegner |
View: | 106 times |
Download: | 0 times |
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: [email protected]
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