Sie sind auf Seite 1von 74

Technology Shoot-Out

WPF vs. Silverlight vs. Windows Forms


Jörg Neumann
Joerg.Neumann@thinktecture.com

Sponsoren: Veranstalter:
Jörg Neumann
• Principal Consultant bei Acando
• Associate bei Thinktecture
• MVP im Bereich „Client App Dev“
• Beratung, Schulung, Coaching
• Buchautor, Speaker
• Mail
– Joerg.Neumann@Acando.de
– Joerg.Neumann@thinktecture.com
• Blog
– www.HeadWriteLine.BlogSpot.com
Agenda
• Vorstellung der Frameworks
– WPF / XBAP
– Windows Forms
– Silverlight
• Faktoren bei der Technologieauswahl
• Empfehlungen
{ In-depth support and consulting for
software architects and developers }

Windows Presentation
Foundation
Warum WPF?
• Steigende Komplexität von User
Interfaces
– Viele Farben
– Animationen
– Videos
• Display-Größen: Von Handy bis Leinwand
– Hohe DPI-Anzahl
• Trennung von Code und Design
WPF
• Basiert auf DirectX
– Unterstützung der Grafik-Hardware
– Bessere Qualität & Performance
– Geringerer Ressourcenverbrauch (RAM/CPU)
• Vereinigt die verschiedene UI-Subsysteme
– Windows Forms/MFC/Win32
– DirectX, Media Player SDK, Speech SDK
Weitere Merkmale
• Integriert UI, Dokumente und Media
• Läuft auf dem Desktop und im Browser
• Deklarative Erstellung von Oberflächen
– Trennung von Design und Code
Die Architektur von WPF

PresentationCore MilCore Grafikkarte

Visual Tree Composition Tree

.net Native DirectX


Weitere Features – UI
• Flexible Komponentenarchitektur
– Alles kann kombiniert und angepasst werden
• Layout Services
– Automatisches Layout aller Elemente möglich
• Trigger
– Automatische Veränderung von Content
• Animation
– Alle Elemente können animiert werden
• Vector-basiertes Text-Rendering
– Bessere Lesbarkeit von Texten
Weitere Features – Binding
• Data Binding
– Universelle Bindung an Datenquellen
• Ressource Binding
– Dynamische & statische Bindung an
Ressourcen
• Template Binding
– Content kann mit Vorlagen verknüpft werden
Dokumente
• Einheitliches Dokumentenmodell
– Festes, fließendes und adaptives Layout
• Bildschirminhalte können verlustfrei
gedruckt werden
• Stufenloses vergrößern und verkleinern
• Eigenes Dokumentenformat (XPS)
– Rights Management
Open Type Support
Eingabe
• Tastatur
• Maus & Mausgesten
• Stift
• Sprache
Multimedia
• Audio/Video
• Animation
• 3D-System
• Imaging
{ In-depth support and consulting for
software architects and developers }

XAML
Browser Applications
(XBAP)
XAML Browser Applications
• Ähnliches Konzept wie ClickOnce
• App wird im Browser gehosted
• Browser-füllend oder in IFrame
Das Deployment-Verfahren

Deployment Manifest Application Manifest


(.xbap) (.manifest)

Application Binaries
(.deploy)
Architektur

Browser

Presentation Host
WPF
Runtime
WPF Content
Navigationsanwendungen
• Navigation wie im Browser
• Desktop- oder Browser-App (XBAP)
• Page statt Window
• Navigationsleiste
– Historie wird autom.
aktualisiert
• Hyperlinks
– Zur Navigation
Security
• Ähnliches Konzept wie bei ClickOnce
– Allerdings keine Benutzer-Prompts
– ..und damit auch keine Elevation
• Anwendungen läuft entweder in
– Partial Trust (Internet Zone)
– Full Trust
•Wenn Manifest mit Trusted Publisher Zertifikat
signiert
Vor- und Nachteile
• Vorteile
– Leichte Integration in Intranet-Sites
•SharePoint, MS CRM, Custom
• Nachteile
– Setzt installiertes .NET-Framework voraus
– Läuft nur auf Windows-Rechnern (ab XP)
– Sehr restriktives Security-Modell
{ In-depth support and consulting for
software architects and developers }

Windows Forms
Windows Forms
• Pixel-basiertes UI-Framework
• Basiert auf der Win32-API / GDI
– Messages/Handles
– Geringe Hardware-Unterstützung
• Hohe Verbreitung
• Großer 3rd Party-Markt
• Gute Performance
• Leichte und schnelle Entwicklung
Nachteile von Windows Forms
• Fehlende Features
– Multimedia
– Animation
– 3D
– Dokumentenmodell
– Adaption auf andere Plattformen
– Keine klare Trennung von Code und Design
Nachteile von Windows Forms
• Skalierung
• Transparenz
• Transformation
WPF vs. WinForms - Skalierung
• Windows Forms
– Alles wird Pixel-basiert gezeichnet
• WPF
– Alles wird Vector-basiert gezeichnet
WPF

Windows Forms
WPF vs. WinForms – Transparenz
• Windows Forms
– Jedes Control zeichnet sich selbst
• WPF:
– Alles wird mit einer Rendering Engine
gezeichnet
Transformation
• Window Forms
– Transformation ist ein Feature des Controls
• WPF
– Alles kann transformiert werden
{ In-depth support and consulting for
software architects and developers }

Silverlight
Silverlight
• UI-Framework für die Cross-OS/Cross
Browser-fähige Anwendungen
– Multimedia-Anwendungen
– Business-Anwendungen
• Einsatzgebiete
– Internet, Intranet
– Browser, Desktop

30
Unterstützte Plattformen
• Windows 7 / Vista / XP, SP2
• MAC OS X (ab 10.4.8) [Intel only]
• Linux (Moonlight)*
• Mobile-Version in Arbeit

* Moonlight: http://www.mono-project.com/Moonlight
31
Unterstützte Plattformen (SL3)
OS / Browser Internet Internet Internet Firefox Safari
Explorer 8 Explorer 7 Explorer 6 2&3 3&4
Windows 7

Windows Vista

Windows XP, SP3

Windows 2000, SP4

Windows Server
2003 (excl. IA-64)

Windows Server
2008
Mac OS 10.4.8+
(PowerPC)
Mac OS 10.4.8+
(Intel-based)

32
Funktionsweise

Browser
HTML Page

XAP-Archiv

Silverlight Object Resources

.NET Code

XAML
Silverlight Browser Plug-In

33
What‘s in the box?
• Silverlight Core Services
– Rendering Engine, Media Player
• Common Language Runtime
– .NET CLR + Dynamic Language Runtime
• Base Class Library
– Subset von .NET BCL, Silverlight Libs
• Silverlight Controls

34
.NET-Support
• C#, VB
• Silverlight BCL
– Subset der .NET BCL
– Kompatibel zu .NET BCL
• Dynamic Language Runtime
– JavaScript
– IronPython
– IronRuby

35
Datenzugriff
• Nur indirekt möglich
– Web Services
•Windows Communication Foundation
– REST
•ADO.NET Data Services
– RIA Services
Abgrenzung zu WPF
• Eingeschränkte 2D & 3D Features
• Eingeschränktes Data Binding
– Keine Template Selectors, Data Trigger, …
• Eingeschränktes Templating
– Keine Control Templates,
• Kein Dokumentmodell / Printing API

37
{ In-depth support and consulting for
software architects and developers }

Vergleich der Frameworks


Vergleichsfaktoren
• Hardware Acceleration
• Security
• Unterstützte Plattformen
• Produktivität
• Zukunftsfähigkeit
• Deployment
Hardware Acceleration
• WPF
– GPU, RAM der Grafikkarte
• Windows Forms
– GPU (einfache 2D-Acceleration)
• Silverlight
– Eingeschränkt: GPU, RAM der Grafikkarte
Hardware-Faktoren in WPF
• Video RAM
– Entscheidet über die Größe und Anzahl der
internen Buffers
• Pixel Shader
– Effekte auf Pixel-Ebene
• Vertex Shader
– Effekte auf Vertex-Ebene
• Multitexture Support
– Zwei oder mehr Texturen bei Blending-
Operationen; Anzahl Units entscheidend
Rendering Tiers
• Tier 0
– DirectX < 7
– Keine Hardware-Unterstützung
– Software Rendering
• Tier 1
– DirectX 7 / <9
– Layered windows, Radial Gradients
• Tier 2
– DirectX 9
– Opacity, Bitmap Effects
Hardware-Anforderungen
Tier 0 Tier 1 Tier 2
DX < 7 >= DX 7 & < DX 9 >= DX 9
Video RAM >= 30 MB Video RAM >= 108
Pixel Shader >= 1.0 Pixel Shader >= 2.0
Vertex Shader >= 1.0 Vertex Shader >= 2.0
Multitexture units >= 2 Multitexture units >= 4
Grafikkarten Tier 1
Hersteller Modell
Radeon 256, 7000, 7500, 8500, 9000, 9100, 9200
ATI
und 9250
Intel Extreme Graphics 845G, 845GE, 845GL und
845GV
Intel
Intel Extreme Graphics II 852GME, 855GM, 855GME,
865G und 865GV
GeForce 256
GeForce2 GTS, MX, MX100, MX200, MX400, Pro, Ti
und Ultra
NVidia
GeForce3 Ti200 und Ti500
GeForce4 MX420, MX440, MX460, MX4000, Ti4200,
Ti4400, Ti4600 und Ti4800
Tier 1: Software Rendering
• BitmapEffects • Überschreitung der
• Printed content max Video-RAM-Größe
• RenderTargetBitmap • Radial Gradients
• TileBrush • 3D Lighting
• Überschreitung der • Text Rendering
max. Texture Size (optimierte
(2048x2048 bzw. Textdarstellung)
4096x4096 Pixel) • 3D Anti-Aliasing
Grafikkarten Tier 2
Hersteller Modell
ATI Radeon 9550, 9600, 9800 und X-series
Intel GMA900-Modelle: 915G
Intel
Intel GMA950-Modelle: 945G
NVidia Geforce FX-series, 6xxx-series und 7xxx-series
Tier 2: Software Rendering
• BitmapEffects • Überschreitung der
• Printed Content max Video-RAM-Größe
• RenderTargetBitmap • Radial Gradients
• TileBrush
• Überschreitung der
max. Texture Size
(2048x2048 bzw.
4096x4096 Pixel)
Rendering Tier ermitteln
• System.Windows.Media.RenderCapability
– Tier-Eigenschaft
– High Word muss extrahiert werden
Rückgabe Rendering Tier Beschreibung
0x00000000 0 Keine Hardware-Beschleunigung.

0x00010000 1 Partielle Hardware-Beschleunigung.

0x00020000 2 Sehr hohe Hardware-Beschleunigung.

int tier = (System.Windows.Media.RenderCapability.Tier >> 16);


Software Rendering
• Kann testweise erzwungen werden
• Registry-Key anlegen
– Avalon.Graphics
– DWord: DisableHWAcceleration
•0 = Hardware Acceleration
•1 = Software Rendering
[HKEY_CURRENT_USER\Software\Microsoft\Avalon.Graphics]
"DisableHWAcceleration"=dword:00000001
Hardware Acceleration in SL
• Ab Silverlight 3
• Plug-In-Settings
– EnableGPUAcceleration
– EnableCacheVisualization
<param name="EnableGPUAcceleration" value="true" />
<param name="EnableCacheVisualization" value="true" />

• UIElement.CacheMode-Eigenschaft
<Canvas CacheMode="BitmapCache" />
Hardware Acceleration in SL
• Nur auf der Windows-Plattform
• DirectX 9.0c erforderlich
• Was wird beschleunigt?
– RenderTransform
– Rectangular Clipping
– Opacity
– Visibility
Remote Desktop/Citrix
• WPF/Silverlight
– Schlechte Performance
– Hoher Ressourcenverbrauch auf dem Server
•Software Rendering!
• Windows Forms
– Gute Performance
– Geringer Ressourcenverbrauch auf Server
Security
• Windows Forms / WPF
– Läuft unter Partial und Full Trust
– Abhängig vom Deployment-Verfahren
• Silverlight
– Partial Trust
– Erweiterte Möglichkeiten im „Desktop-
Modus“
Security
• Auslesen des aktuellen Benutzers
• Zugriff auf externe Hardware
– Lokale Drucker, Kassensysteme, …
• Zugriff auf Netzwerkinfrastruktur
– Datenbanken, Active Directory, Drucker
Zugriff auf System-Ressourcen
• Dateisystem
• Registry
• Windows Services
• MSMQ
• Direkter Datenbankzugriff
• Windows Shell
Silverlight Desktop Applications
• Ab Silverlight 3
• Rechte Maustaste „Install on Desktop“
• Auch programmatisch möglich
• Auto-Update-fähig
• Kann in den Projekteigenschaften
aktiviert werden
Kommunikation
• Silverlight
– SOAP: Eingeschränkte WCF-Funktionalität
– REST: ADO.NET Data Services, RIA Services
– Eingeschränkte Cross Server-Kommunikation
– Eingeschränkte Socket-Kommunikation
• WPF/Windows Forms
– SOAP: Volle WCF-Funktionalität
– REST: ADO.NET Data Services, RIA Services
– Direkter Datenbankzugriff
Offline-fähigkeit
• WPF/Windows Forms
– SQL Server Compact Edition
– Sync Framework
• Silverlight
– Desktop Mode
– Astoria Offline (z.Zt. noch in Arbeit)
Produktivität
• WPF/Silverlight
– z.Zt. relative schlechte Editoren
(in VS2010 wird einiges besser)
– Dedizierte Designer-Rolle im Projekt
• Windows Forms
– Gute Editoren
– Geringere Möglichkeiten
produktiveres Arbeiten
IDE-Features
Feature WPF Silverlight Windows Forms
Designer
Datenbindung
Ressourcen
Settings
Lokalisierung
Performance
Feature Matrix
Feature WPF Silverlight Windows Forms
3D
Security
Printing
Hardware Acceleration
Media-Support
Data Binding
Styling
Remote Desktop
Dokumente
Browser-fähig
OS-Support
Performance
Offline
Plattformen
Plattformen WPF Silverlight Windows Forms
Windows 2000
Windows XP/Vista/7
MAC OS (Intel)

Browser WPF Silverlight Windows Forms


IE 6/7/8
Firefox
Safari
Zukunftssicherheit
• Windows Forms
– Wird weiterhin supported
– Keine neuen Innovationen
• WPF
– Zukunftstechnologie für den Desktop
– Innovationen momentan weniger
• Silverlight
– Das UI-Framework für die Cloud
– Zur Zeit die meisten Innovationen
Shared Source Development
• Anwendung soll auf nahezu gleichen
Sourcen in untersch. Umgebungen laufen
– Desktop: WPF
– Web: Silverlight
• Kleinster gemeinsamer Nenner
– XAML
– REST/SOAP
– Core BCL
Empfehlungen
• Desktop
– WPF / Windows Forms
• Intranet
– Silverlight / XBAP
• Internet
– Silverlight / ASP.NET
Empfehlungen: Desktop
• Windows Forms
– Business Anwendung / Office-Integration
– Nutzung: In-House / Abteilungsebene
– Geringe WPF-Skills vorhanden
– Kleines Budget / Zeit
• WPF
– Große Anwendung
– Nutzung: Endanwender oder Enterprise Level
– Größeres Budget / Zeit
– Multimedialastig / Dokumentenlastig
Hybrid Applications
• Windows Forms in WPF hosten
– WindowsFormsHost Control
• WPF in Windows Forms hosten
– ElementHost Control
• WPF in ASP.NET hosten
– XBAP
Empfehlung: Intranet
• XBAP
– Read-Only-Inhalte
– App benötigt keine größeren Berechtigungen
– Wenn 3D oder Dokumente eine Rolle spielen
• Silverlight
– Business Anwendungen
– Im Zusammenspiel mit ASP.NET
Fragestellungen
• Welchen Scope hat die Anwendung?
– Department Level
– Enterprise Level
• Für welche Umgebungen wird entwickelt?
– Desktop, Intranet, Internet
– Office- oder SharePoint-Integration?
• Welche Features werden benötigt?
– Dokumente, 3D, …
FRAGEN ?
{ In-depth support and consulting for
software architects and developers }
http://www.thinktecture.com/

joerg.neumann@thinktecture.com
www.HeadWriteLine.BlogSpot.com

71
Hat Ihnen mein Vortrag gefallen?

Ich freue mich auf Ihr Feedback!


Wir sehen uns wieder:

 In 5 Tagen zum SharePoint Profi!


02.-06. November 2009 in Frankfurt
www.SharePointCamp.de

 Schneller zum .NET 3.5 Developer


09.-13. November 2009 in Wien
www.DevTrain.de/Camp

 24.-25. Februar 2010 in München


www.VSone.de
VIELEN DANK
Dein Name
!