Buch-Rezension zu "WPF in Action"
"WPF in Action with Visual Studio 2008" von Arlen Feldman und Maxx Daymon erschien im November 2008 bei Manning. Nachdem mich das letzte Buch zu WPF schwer enttäuschte, hoffte ich hier auf die gewohnte Qualität von Manning. Und das Buch lohnt sich.
Das Buch passt sehr gut in die "In Action" Reihe. Auch hier ist der Praxisnutzen sehr gross und die Sprache sehr direkt. Die Autoren sind von WPF überzeugt und dies wird unmissverständlich klar gemacht. Das bedeutet aber keinesfalls, das WPF ohne Fehler ist. Auf Probleme, Unstimmigkeiten und fehlende Funktionen wird ebenso deutlich hingewiesen wie auf die guten Teile.
Der Weg zu Avalon
Die Einführung zeigt auf, wie weit die grundlegenden Konzepte für die Erstellung von GUIs zurück reichen. Entfernt man die einzelnen Abstraktionsschichten, arbeitet man auch heute noch mit einem Kern, der schon bei Windows 3.x verwendet wurde. WPF macht den lange fälligen Schnitt und nutzt die moderne Hardware, die heutzutage im Einsatz ist.
Die Entwicklung Web- und von Desktop-Applikationen unterscheidet sich deutlich. Beide Seiten haben Vor- und Nachteile, doch waren diese bisher strikt getrennt. Bis jetzt. WPF verwischt diese Grenze und ermöglicht ganz neue Ansätze.
Visual Studio ist die bevorzugte Entwicklungsumgebung für WPF. Kapitel 2 liefert eine Übersicht wo man was für WPF in Visual Studio 2008 findet. Wird irgendwo im Buch etwas neues vorgestellt, wird auch immer erklärt, wie man dies am besten löst. Sei dies der Designer, der Formeditor oder wo man die entsprechende Vorlage für die Klasse finden kann.
Ein Taschenrechner zur Einführung
Als erstes grosses Beispiel wird ein Taschenrechner erstellt. Jeder kennt die Funktionsweise und weiss, was ein Taschenrechner machen soll. So kann man sich auf die Implementierung mittels WPF konzentrieren. Das Beispiel ist einfach genug und bietet dennoch zahlreiche Möglichkeiten.
Wie sich die einzelnen Layout-Manager auswirken zeigt sich schön an den Knöpfen des Taschenrechners. Das StackPanel liefert eine ganz andere Darstellung als ein Canvas oder ein Grid. Die gewählte Tabelle die all die Manager auf einer Seite einander gegenüberstellt hilft sehr beim Verständnis.
Die Verwendung von Styles, Templates und Animationen lassen sich hier genauso gut erklären wie das Event-Handling. Die Knöpfe für die 9 Ziffern und 5 Operatoren sind zwar überschaubar, doch man sieht sehr schnell wie viel einfacher alles wird, wenn man Komponenten wiederverwendet.
Ein Desktop Wiki als anspruchsvollere Anwendung
Nachdem man mit dem Taschenrechner die grundlegenden Teile aufzeigen konnte, braucht es nun etwas anspruchsvolleres. Dazu wird im dritten Teil des Buches ein Desktop Wiki erstellt. Die vorgeschlagenen Ideen für die Planung der Applikation sind einfach, helfen einem aber sehr. Man sollte sich daher von der Skizze der Applikation nicht abschrecken lassen.
Das Wiki hat einen Bereich zur Eingabe von Text. Da wäre es natürlich schön, wenn man den Text formatieren könnte. Dies dient als Einstieg ins Thema Commands. Damit kann man das GUI auf Befehle wie "linksbündig Ausrichten" oder "Text zentrieren" reagieren. Auch Shortcuts lassen sich damit festlegen.
DataBinding: Eine Stärke von WPF
DataBinding kann auf verschiedene Arten erreicht werden. Um ein wenig damit zu spielen, wir das Wiki kurz zurück gestellt und ein Prozess Monitor eingeschoben. Die Klasse System.Diagnostics.Process hat eine Methode GetProcesses, die für dieses Beispiel als Datenquelle verwendet wird. Nach dem Einbinden der Klasse als Ressource kann man die Prozesse bereits anzeigen. Das sieht zwar noch nicht gut aus, aber ein DataTemplate mit den gewünschten Angaben ist schnell definiert.
DataBinding funktioniert auch mit XML. Als passendes Beispiel wird ein Viewer für Common Vulnerabilities and Exposures (kurz CVE) Meldungen erstellt. Die Meldungen liegen als XML-Datei vor und sollen nun mit geringem Aufwand im GUI gezeigt werden. Auch dies ist sehr einfach, wodurch man verschiedene Ansätze für einen Master-Detail Report besprechen kann.
Das Model-View-ViewModel (MVVM) Pattern wird ebenfalls kurz angesprochen. Dieser Teil hätte gerne noch ausführlicher sein können.
Von Grafiken und der letzten Meile
Auch hier wird zwischen 2D und 3D Grafiken unterschieden. Das Zeichnen von 2D Grafiken wird mittels Shapes, direct Rendering und Visuals gezeigt. Die einzelnen Methoden mögen für einfache Grafiken unnötig erscheinen. Sobald es aber komplexer wird, ist man froh für diese Auswahl.
Teil 4 behandelt Themen, die für die Bereitstellung der Applikation hilfreich sind oder neue Möglichkeiten eröffnen. Dies umfasst navigierbare Fenster, WPF im Webbrowser, ClickOnce zur Verteilung der Applikation, Drucken und Threading.
Ein Vergleich zu "Windows Presentation Foundation .NET WPF"
Im Gegensatz zu "Windows Presentation Foundation .NET WPF” sind die Fehler nicht der Rede wert. Hier mal ein D statt einem d in einer Tabelle von Optionen oder ein "oneway" zu viel im Satz. Referenzen sind korrekt, Bilder zeigen was sie zeigen sollen, Methoden heissen auch so und es gibt grosse, zusammenhängende Beispiele. MEAP hat auch hier geholfen, die Qualität während der Erstellung zu erhöhen. In der Sandbox kann man ein Errata rund 6 Monate vor dem Erscheinen des Buches finden, das noch sehr umfangreich war. Aber eben, 6 Monate bevor man das Buch verkauft hat, nicht danach.
Was die behandelten Themen betrifft, sind die Bücher vergleichbar. Es ist aber erstaunlich, wie viel mehr Inhalt WPF in Action liefert - dabei erst noch billiger ist und auch ein gratis E-Book ohne DRM beinhaltet.
Fazit
Der Schwerpunkt liegt im Vermitteln der Zusammenhänge und dem "Big Picture" und nicht in der Detailtiefe. Den Autoren gelingt es mittels zahlreicher Beispiele sehr gut einem WPF näher zu bringen. Man kann die Beispiele meistens einfach nachprogrammieren oder auf der Webseite zum Buch herunterladen. Diese sind einfach, aber bieten dennoch immer einen Nutzen. Die zahlreichen Informationen über Fehler und Unschönheiten bei WPF und wie man diese umgehen kann erleichtern die Arbeit. Der Praxisnutzen ist so ganz klar vorhanden.
Wer sich in WPF einarbeiten will, bekommt mit dem Buch eine sehr gute Einführung. Ich kann dies voller Überzeugung weiterempfehlen.
Zum Buch
"WPF in Action with Visual Studio 2008" von Arlen Feldman und Maxx Daymon, 2008 Manning, ISBN 978-1-933-98822-1, 520 Seiten