{ UI * 3

In-depth support and consulting for software architects and developers

}

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

Internet Internet Internet Explorer 8 Explorer 7 Explorer 6

Firefox 2&3

Safari 3&4

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
PresentationCore

Media Integration Layer
MilCore

Hardware
Grafikkarte

Visual Tree .net

Composition Tree 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 BlendingOperationen; 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 DX < 7 Tier 1 >= DX 7 & < DX 9 Video RAM >= 30 MB Pixel Shader >= 1.0 Tier 2 >= DX 9 Video RAM >= 108 Pixel Shader >= 2.0

Vertex Shader >= 1.0

Vertex Shader >= 2.0

Multitexture units >= 2 Multitexture units >= 4

Tier 1: Software Rendering
• BitmapEffects • Printed content • RenderTargetBitmap • TileBrush • Überschreitung der max. Texture Size (2048x2048 bzw. 4096x4096 Pixel) • Überschreitung der max Video-RAM-Größe • Radial Gradients • 3D Lighting • Text Rendering (optimierte Textdarstellung) • 3D Anti-Aliasing

Tier 2: Software Rendering
• BitmapEffects • Überschreitung der max Video-RAM-Größe • Printed Content • 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 0x00000000 0x00010000 0x00020000 Rendering Tier 0 1 2 Beschreibung Keine Hardware-Beschleunigung. Partielle Hardware-Beschleunigung. 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 • WPF • Silverlight • Flash • DirectX • Media Client-Side Rendering • Windows Forms • GDI • Efficient Media
– Codecs on Client – kein DRM

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 Designer Datenbindung Ressourcen Settings Lokalisierung Performance WPF Silverlight Windows Forms

Feature Matrix
Feature 3D Security Printing Hardware Acceleration Media-Support Data Binding WPF Silverlight Windows Forms

Styling Remote Desktop
Dokumente Browser-fähig OS-Support Performance Offline

Plattformen
Plattformen Windows 2000 Windows XP/Vista/7 MAC OS (Intel) Browser IE 6/7/8 WPF Silverlight Windows Forms WPF Silverlight Windows Forms

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
Große Anwendung Nutzung: Endanwender oder Enterprise Level Größeres Budget / Zeit Multimedia-lastig / Dokumenten-lastig

• WPF

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

Sign up to vote on this title
UsefulNot useful