Sie sind auf Seite 1von 55

{ In-depth support and consulting for

software architects and developers }

UI * 3
WinForms, WPF und Silverlight im
Vergleich

Jörg Neumann, Jürgen Behrens


Acando | thinktecture
Joerg.Neumann@thinktecture.com
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
• Faktoren bei der Technologieauswahl
• Empfehlungen
WPF
• Basiert auf DirectX
– Unterstützung der Grafik-Hardware
– Flexible Skallierung
– Bessere Qualität
– Geringerer Ressourcenverbrauch (RAM/CPU)
Weitere Merkmale
• Vereinigt die verschiedene UI-Subsysteme
– Windows Forms/MFC/Win32
– DirectX, Media Player SDK, Speech SDK
• Integriert UI, Dokumente und Media
• Läuft auf dem Desktop und im Browser
• Deklarative Erstellung von Oberflächen
– Trennung von Design und Code
Features
• Flexible Komponentenarchitektur
– Alles kann kombiniert und angepasst werden
• Universelles Databinding
– So gut wie alles kann gebunden werden
• Styles & Templates
– Austauschbares Look & Feel
• Animation
– Alle Elemente können animiert werden
• Dokumentenmodell
– Flexibles Erzeugen und Anzeigen von Dokumenten
XAML Browser Applications
• Ähnliches Konzept wie ClickOnce
• App wird im Browser gehosted
• Browser-füllend oder in IFrame
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
•Mit Client-Zertifikaten
•Ab .NET 4.0 auch Elevation möglich
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
• Einfache und produktive 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

WPF
Transformation
• Window Forms
– Transformation ist ein Feature des Controls
• WPF
– Alles kann transformiert werden
Silverlight
• UI-Framework für
Cross-OS/Cross-Browser Apps
– Multimedia-Anwendungen
– Business-Anwendungen
• Einsatzgebiete
– Internet, Intranet
– Browser, Desktop

19
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)

20
Funktionsweise

Browser
HTML-/ASP.NET-Page

XAP-Archiv

Silverlight Object Resources

.NET Code

XAML
Silverlight Browser Plug-In

21
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

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

23
Datenzugriff
• Nur indirekt möglich
– Web Services
•Windows Communication Foundation
– REST
•ADO.NET Data Services
– RIA Services
•Framework für verteilte Anwendungen
•z.Zt. im Beta-Stadium
Abgrenzung zu WPF
• Eingeschränkte 2D & 3D Features
• Eingeschränktes Data Binding
– Keine Template Selectors, Data Triggers, …
• Eigenes Template-System
– Visual State Manager
– Ab .NET 4.0 auch in WPF
• Kein Dokumentmodell / Printing API

25
{ 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)
– RAM (über Desktop Window Manager)
• Silverlight
– Eingeschränkt: GPU, RAM der Grafikkarte
Die Architektur von WPF
WPF Media Integration Layer Hardware

PresentationCore MilCore Grafikkarte

Visual Tree Composition Tree

.net Native DirectX


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
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
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
•Übertragung von Bitmaps
– Hoher Ressourcenverbrauch auf dem Server
•Software Rendering!
• Windows Forms
– Gute Performance
•Übertragung von GDI-Befehlen
– Geringer Ressourcenverbrauch auf Server
Windows Remoting über RDP
Server-Side Rendering Client-Side Rendering
• WPF • Windows Forms
• Silverlight • GDI
• Flash • Efficient Media
• DirectX – Codecs on Client
– kein DRM
• Media
Security
• Windows Forms / WPF
– Läuft unter Partial und Full Trust
– Abhängig vom Deployment-Verfahren
• XBAP
– Partial Trust (Internet-Zone)
– Full Trust ab .NET 4.0
• Silverlight
– Partial Trust
Security
• Auslesen des aktuellen Benutzers
• Zugriff auf externe Hardware
– Lokale Drucker, Kassensysteme, …
• Zugriff auf Netzwerkinfrastruktur
– Active Directory, Drucker, …
• Zugriff auf System-Komponenten
– Dateisystem, Registry, Windows Services, …
• Direkter Datenbankzugriff
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
{ In-depth support and consulting for
software architects and developers }

Demo
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
– Direkter Datenbankzugriff
Offline-Fähigkeit
• WPF/Windows Forms
– SQL Server Compact Edition
– Sync Framework
• Silverlight
– Desktop Mode
– Astoria Offline
•Spezielle Version der ADO.NET Data Services
•z.Zt. noch in Entwicklung
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
– Multimedia-lastig / Dokumenten-lastig
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
Hybrid Applications
• Windows Forms in WPF hosten
– WindowsFormsHost Control
• WPF in Windows Forms hosten
– ElementHost Control
• WPF in ASP.NET hosten
– XBAP
• Silverlight in ASP.NET hosten
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, …
Zusammenfassung
• Die Auswahl einer UI-Technologie hängt
von vielen Faktoren ab
• Lassen Sie sich nicht von Features
blenden!
• Analysieren Sie nüchtern nach konkreten
Anforderungen!
• Beachten Sie softe Faktoren!
– Skills, Produktivität , Budget
{ In-depth support and consulting for
software architects and developers }
http://www.thinktecture.com/

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

61