Entwickeln für Windows 8

Von Urs Bertschy

Bei Visual Studio 2012 steht Windows 8 im Fokus. Aber auch andere Bereiche wie die Web-Entwicklung oder das Application Lifecycle Management kommen nicht zu kurz.

Artikel erschienen in Swiss IT Magazine 2012/10

     

Mit der neuen, kachelartigen Benutzeroberfläche wartet Windows 8 nicht nur mit einer komplett neuen User Experience, sondern einem ebenso neuen Programmiermodell auf. Parallel zu den klassischen Desktop-Anwendungen gibt es in der jüngsten Betriebssystemversion nun die sogenannten Windows Store Apps (bislang als Metro Style Apps bekannt), die vor allem für den Betrieb auf Tablets und anderen Touch-fähigen Geräten zugeschnitten sind. Damit überrascht es nicht, dass ein Grossteil der Erweiterungen in Microsofts neuester Entwicklungsumgebung Visual Studio 2012 der Entwicklung solcher Apps gewidmet ist.

Was sind Windows Store Apps?

Windows Store Apps unterscheiden sich im Vergleich zu herkömmlichen Anwendungen in vielerlei Hinsicht: Sie werden im Vollbild- oder Split-Screen-Modus (zwei Apps teilen sich die Bildschirmanzeige) betrieben, arbeiten Ressourcen-schonend (Apps im Hintergrund werden eingefroren) und werden zwecks höherer Sicherheit jeweils in einem eigenen, abgeschotteten Bereich (Sandboxing) ausgeführt. Auf dem neuen Startbildschirm von Windows 8 werden die Apps in Form von Kacheln (Tiles) präsentiert, die sich wie von Windows Phone bekannt mit Live-Daten (z.B. aktuelle Börsendaten oder neue E-Mails) versorgen lassen.
Da der Zugriff von Windows Store Apps auf das Betriebssystem und umgekehrt aus Sicherheitsgründen stark eingeschränkt ist, gibt es neu die sogenannten Contracts, über die Apps mit dem Betriebssystem kommunizieren oder auch gegenseitig Informationen austauschen können. Über den Search Contract etwa kann eine App ihre Inhalte Windows 8 als Suchresultate zur Verfügung stellen. Ein weiteres Beispiel ist der Share Contract, über den beliebige Inhalte wie etwa Fotos, Text oder Links an eine andere Windows Store App übergeben werden können. Ein weiteres wichtiges Konzept der Windows 8 Apps ist das Roaming, über das sie in der Lage sind, ihre Zustands- und Konfigurationsinformationen mit anderen Geräten via Cloud zu synchronisieren.

Der Windows Store

Für die Verbreitung von Windows 8 Apps hat Microsoft den Windows Store lanciert, für den Entwickler ihre Anwendungen einreichen und einem weltweiten Markt zugänglich machen können. Um eine bequeme Installation und spätere Updates über den Store möglich zu machen, haben die Redmonder das Deployment von Windows Store Apps im Vergleich zu herkömmlichen Desktop-Anwendungen stark vereinfacht. Das Setup einer App besteht im Wesentlichen aus dem Kopieren der Applikationsdateien in einen eigenen Ordner im Appdata-Systemverzeichnis. Grundlage dafür bildet ein neues Deployment-Paket (Appx-Package), das alle Konfigurationsinformationen und Dateien einer Windows-8-App enthält. App-Packages müssen mit einem Zertifikat signiert sein, das vor jeder Ausführung geprüft wird. Alternativ bietet Microsoft Firmen auch die Möglichkeit, Apps direkt ohne Umweg über den Windows Store auszuliefern.

WinRT: API für Windows 8 Apps

Die technische Basis für Windows Store Apps bildet eine komplett neue, in Native-Code (C++) geschriebene Laufzeitumgebung mit der Bezeichnung Windows Runtime (WinRT). WinRT wurde so konzipiert, dass sie nicht nur auf x86- und x64-CPUs, sondern auch auf Geräten mit ARM-Prozessoren zum Einsatz kommen kann. Dafür bringt Microsoft einen speziellen Windows-8-Ableger auf den Markt, der verwirrenderweise als Windows RT bezeichnet wird, aber nicht mit der eigentlichen Runtime WinRT verwechselt werden sollte.
Neben der Ausführungsumgebung stellt WinRT auch die notwendigen APIs für die Programmierung von Windows Store Apps bereit. Dazu zählen neben den Basisfunktionen für Memory Management, Authentication oder Kryptographie auch Klassen für die Umsetzung der oben beschriebenen neuen Konzepte der Windows Apps. So etwa für Contracts, Animationseffekte, UI-Komponenten oder für den Zugriff auf Gerätesensoren (GPS, Accelerometer, Kompass, Lichtsensoren etc.) und andere Hardware-Komponenten wie eine Kamera.
Microsoft hat WinRT so konzipiert, dass einerseits sehr Hardware-nah programmiert werden kann und andererseits unterschiedliche Sprachen, Runtime-Umgebungen und Rendering-Technologien zum Einsatz kommen können. Grundsätzlich haben Entwickler die Wahl zwischen drei Varianten:

HTML5, CSS3 und Javascript:

Um die neue Windows-8-App-Plattform möglichst vielen Web-Entwicklern schmackhaft zu machen, hat Microsoft WinRT für den Umgang mit Web-Technologien ausgelegt. So kann die Präsentationsschicht mit HTML5/CSS3 und die Anwendungslogik mit Javascript programmiert werden. Der Programmcode wird von einer gehosteten Komponente des Internet Explorers 10 ausgeführt und gerendert. Für die Verarbeitung des Javascript-Codes setzen die Redmonder auf die Chakra-Engine, die mit IE9 eingeführt worden ist.

XAML (C#, VB, C++): Die XAML-Variante dürfte vor allem erfahrene .Net-Entwickler ansprechen. Während hier wie bei Silverlight und WPF für die UI die deklarative Beschreibungssprache XAML (Extensible Application Markup Language) verwendet wird, können bei der eigentlichen Programmlogik die Sprachen C#, Visual Basic oder C++ (für native Entwicklung) zum Einsatz kommen. Für die Ausführung von C# und VB wurde das .Net Framework und die Common Language Runtime (CLR) in WinRT als Subplattform integriert. Das Rendering von XAML wird von der Windows Runtime direkt erledigt.


DirectX (C++): Vor allem für Spiele und Grafikanwendungen unterstützt WinRT als dritte Option DirectX mit C++.

App-Entwicklung mit Visual Studio

Für die Entwicklung von Windows Store Apps stellt Visual Studio 2012 Projektvorlagen für alle der drei oben genannten Varianten zur Verfügung. Neben dem obligaten Minimal-Template «Blank» gibt es Vorlagen für typische «Metro»-Looks wie Gitterlayouts (Grid) oder Split-Views (Master/Detail-Format). Entsprechend der Wahl des Templates generiert Visual Studio automatisch ein Projektgerüst mit den notwendigen Anwendungsseiten, Code- und Ressource-Dateien sowie Referenzen und Konfigurationsdateien. Eine zentrale Rolle spielt dabei das Application-Manifest (Package.appxmanifest), in dem die Eigenschaften einer App festgelegt werden. Dazu gehören Namen, Beschreibung, verwendete Logos, Farben für Kachel und Begrüssungsbildschirm, unterstützte Geräterotationen oder Angaben über verwendete Hardware und Contracts. Praktischerweise bietet Visual Studio für die Manifest-Datei einen eigenen Designer, der das notwendige XML automatisch erzeugt.
Für die Verwendung des Windows Store verfügt Visual Studio 2012 über ein eigenes Menü, in dem alle Funktionen zusammengefasst sind, die mit dem Einreichen einer App in den Store in Verbindung stehen. Von hier aus lässt sich auch der «Create App Package»-Wizard starten, mit dem sich das oben erwähnte Appx-Package erzeugen und in den Store hochladen lässt.
Visual Studio 2012 verfügt über einen Simulator, mit dem sich Apps – insbesondere deren Layout – in unterschiedlichen Auflösungen, Bildschirmverhältnissen und Screen-Rotationen testen lassen. Sehr hilfreich: Es können auch die in Windows 8 unterstützten Touch-Gesten (inkl. Pinch&Zoom) mit der Maus imitiert werden. Neben dem Simulator wird auch das Remote Debugging über ein via LAN angeschlossenes Tablet unterstützt.

Blend 5 mit XAML und HTML5

Wie bereits die Vorgängerversionen verfügt auch Visual Studio 2012 über einen integrierten XAML-Designer für die Gestaltung des User Interface. Aus einer Toolbox lassen sich UI-Komponenten wählen und auf einer Design-Oberfläche platzieren. Der dazu notwendige XAML-Code wird automatisch generiert.
Alternativ liegt Visual Studio 2012 neu auch das Designwerkzeug Expression Blend 5 bei, das man bislang noch separat erwerben musste. Blend 5 ist auf die Gestaltung von User Interfaces spezialisiert und soll eine optimale Arbeitsteilung zwischen UI-Designer und Programmierer ermöglichen. Damit die früheren Inkonsistenzen zwischen den beiden Programmen der Vergangenheit angehören, hat Microsoft nun beiden Werkzeugen die selbe Design-Oberfläche verpasst. Gerendertes XAML sieht bei beiden Tools nun identisch aus. Da sowohl Visual Studio als auch Blend 5 das selbe Projektformat verwenden, kann man jederzeit zwischen den beiden Programmen hin und her wechseln.
Neben XAML unterstützt Blend neu auch HTML5 und CSS3, dies allerdings nur für Windows Store Apps. Für die Erstellung von herkömmlichen Websites ist das Programm nicht vorgesehen. Obschon Visual Studio 2012 bei den XAML-Werkzeugen einige Verbesserungen erfahren hat, bietet Blend mächtigere Layout- und Styling-Tools, unterstützt Animationen und erlaubt bessere Kontrolle über die verschiedene Zustände von UI-Komponenten (z.B. für Interaktionseffekte). Etwas verwirrend ist, dass die in Visual Studio 2012 beiliegende Blend-Version lediglich für die Erstellung von Windows Store Apps ausgelegt ist. Wer für Silverlight, WPF oder Windows Phone entwickeln will, muss auf die «Expression Blend 5 + Sketchflow»-Ausgabe zurückgreifen, welche zur Zeit der Drucklegung lediglich in einer Preview-Version verfügbar war.

Intelligente Editoren für HTML, CSS und Javascript

Die Tatsache, dass Microsoft bei der Entwicklung von Windows Store Apps nun Web-Technologien unterstützt und dafür Visual Studio entsprechend aufgerüstet hat, kommt auch Entwicklern von klassischen Websites und
-Anwendungen zu Gute. So haben die Redmonder die Editor-Funktionen für HTML, CSS und Javascript kräftig aufgebohrt.
Der HTML-Editor etwa wurde um HTML5-Support erweitert und bietet jetzt umfangreiches Intellisense sowie Syntaxprüfung und kann mit einer breiten Auswahl an vorbereiteten Snippets aufwarten. Komplett neu geschrieben hat Microsoft den Editor für Cascading Style Sheets, der neben Support für CSS3 zahlreiche praktische Erweiterungen bringt. Dazu gehört etwa der in Intellisense integrierte Color Picker, über den sich Farbwerte bequem aus einer Farbpalette wählen oder mit einer Pipette durch Anklicken eines beliebigen Bereichs auf dem Bildschirm auslesen lassen. Wie beim HTML-Editor gibt es eine üppige Auswahl an vorgefertigten Snippets. Besonders praktisch ist, dass die Snippet-Funktion falls nötig auch gleich Browser-spezifische Varianten (IE, Webkit, Mozilla und Opera) eines CSS-Properties in den Code einfügt. Gut gelöst ist auch die Validierung der CSS-Syntax, die Hinweise auf Fehler im Code und CSS-Standards liefert.
Der neue Javascript-Editor bringt ähnlichen Komfort wie man ihn bereits aus den Editoren der .Net-Sprachen C# oder Visual Basic kennt. Dazu zählen etwa die Go-To-Definition-Funktion, automatisches Einrücken, Bracket-Matching, Outlining oder XML-Kommentare. Ein echtes Highlight sind die Intellisense-Hilfe und das Syntax-Checking, die nicht nur für Javascript, sondern auch für eingebundene Javascript-Bibliotheken wie zum Beispiel Jquery oder Modernizr funktionieren. Möglich wird die Intellisense-Funktion durch die bereits oben erwähnte Chakra-Javascript-Engine, welche den Code on-the-fly analysieren kann. Ausserdem gibt es besseres Javascript-Debugging mit Support für Watchlists, Breakpoints und Single-Step-Through sowie eine Javascript-Console, über die Javascript-Ausdrücke direkt ausgeführt und vorab getestet werden können.
Mit dem Page Inspector steht nun direkt in Visual Studio ein DOM-Explorer zur Verfügung, der an die Developer Tools des Internet Explorers erinnert. Auf Tastendruck zeigt der Inspector den DOM-Baum, die angewandten CSS-Regeln, die gerenderte Website und den aktuellen Source Code (HTML, CSS, ASP.Net) gleichzeitig in verschiedenen Fenstern. Navigiert man zu einem bestimmten Element, werden in allen Fenstern die abhängigen Codezeilen angezeigt. Sehr nützlich ist, dass Änderungen direkt im DOM oder an den CSS-Regeln vorgenommen werden können, die sich dann auf Tastendruck in der gerenderten Ansicht anzeigen lassen.

Sharepoint- und SQL-Server-Support

Für Sharepoint-Entwickler bringt Visual Studio 2012 einige Verbesserungen. Listen und Content Types lassen sich neu mit Hilfe von Designern definieren – der dazu passende XML-Code wird automatisch generiert. Weitere Sharepoint-Neuerungen sind Projektvorlagen für Site Columns und Silverlight Web Parts sowie Support für das Microsoft Fakes Framework (Automatisierung von Tests) und Remote Deployment von Sharepoint Solutions. Für die SQL-Server-Entwickler enthält Visual Studio 2012 die bislang als Plug-in verfügbaren SQL Server Data Tools (SSDT), welche die Offline-Entwicklung von Datenbanklösungen für SQL Server (ab 2005) und SQL Azure vereinfachen (siehe Artikel «SQL Server 2012», Swiss IT Magazine 04/2012).

Zahlreiche UI-Goodies

Bereits während der Betaphase hat der neue, flache und farblose Look von Visual Studio 2012, der für weniger Ablenkung sorgen soll, in der Entwicklergemeinde für einen Aufschrei gesorgt. Immerhin hat man sich in Redmond ein wenig erweichen lassen und im finalen Release etwas Farbe (einige Icons wurden wieder eingefärbt) zurückgebracht. Die neue Umgebung ist auch in ihrer endgültigen Variante immer noch etwas gewöhnungsbedürftig. Viele Entwickler dürften sich über das neue «Dark»-Theme freuen, mit dem sich nun nicht mehr nur das Editorfenster, sondern die gesamte Umgebung in einem dunklen Look betreiben lässt.
Visual Studio 2012 wartet an allen Ecken und Enden mit praktischen UI-Goodies auf. Dazu zählen etwa die allgegenwärtigen Suchfunktionen, die neu in der Toolbox zum Auffinden eines bestimmten Controls oder im neu überarbeiteten Add-Reference-Dialog zum Aufspüren eines bestimmten Assemblies zur Verfügung stehen. Eine wirklich coole Sache ist das «Quick Launch»-Feature, mit dem nach bestimmten Funktionen und dessen Shortcuts gesucht werden kann. Wer zum Beispiel wissen möchte, wo er die Validierungsoptionen für den CSS-Editor umstellen kann, tippt einfach «CSS Validation» in die Box und erhält einen Link angezeigt, über den man direkt zur entsprechenden Einstellung springen kann.
Überarbeitet wurde auch der Solution Explorer, der jetzt für Codedateien auch deren innere Struktur (Klassen und deren Attribute, Methoden etc.) anzeigt. Ausserdem kann man jetzt verschiedene Instanzen des Solution Explorers erzeugen, die jeweils unterschiedliche Blickwinkel auf die Projektstruktur liefern. Nützlich: Mit der Funktion «Scope to this» lässt sich die Ansicht auf den aktuellen Ast beschränken. Mit einem einfachen Klick auf eine Code-Datei im Solution Explorer lässt sich diese in einem temporären Fenster quasi als Vorschau öffnen. Geöffnete Dateien lassen sich nun permanent anheften und bleiben so immer sichtbar.

.Net 4.5 mit asynchroner Programmierung

Parallel zu Visual Studio 2012 wurde auch das neue .Net Framework 4.5, das neben einigen Erweiterungen an den Sprachen C#, Visual Basic und C++ vor allem Verbesserungen im Bereich Workflow, Windows Communication Foundation (WCF) und bei ASP.Net (ASP.Net 4.5 und ASP.Net MVC 4) bringt. Eine wichtige Neuerung in .Net ist die Unterstützung für die asynchrone Programmierung. Bei vielen Operationen wie beispielsweise beim Lesen einer Datei oder dem Abfragen einer Web API muss erst deren Ende abgewartet werden, bevor der Code weiter ausgeführt werden kann. Das führt zu trägen Antwortzeiten der Anwendung oder blockiert diese sogar. Um solchen Engpässen auszuweichen, macht es Sinn, solche Operationen asynchron abzuwickeln. In C# und Visual Basic stehen dazu die neuen async- und await-Keywörter bereit, mit deren Hilfe man mit sehr wenig Aufwand asynchronen Code schreiben kann. Die eigentliche Arbeit wird dabei vom Compiler erledigt. Eine ganze Reihe von APIs des .Net Framework 4.5 wurde mit Support für asynchrone Aufrufe erweitert (z.B. für Web-Zugriffe, File-Handling oder Verwendung von Sockets). Ebenfalls arbeiten viele der neuen APIs in WinRT ausschliesslich asynchron.
Mit den Portable Class Libraries wird ein neuer Projekttyp eingeführt, mit dem sich Klassenbibliotheken erstellen lassen, die mit unterschiedlichen Frameworks (.Net Framework, Silverlight, Windows Store und Windows Phone Apps) kompatibel sind. Das ist vor allem dann hilfreich, wenn man für verschiedene Ableger einer Anwendung eine gemeinsame, wiederverwendbare Codebasis – die dann in einer Assembly vorliegt – erstellen möchte.
Der Nuget Package Manager, bislang als Add-On erhältlich, gehört nun zum festen Bestandteil von Visual Studio. Damit lassen sich .Net-Projekte sehr bequem mit Zusatzkomponenten und Libraries anreichern. Erweiterungen lassen sich ähnlich wie beim Extension Manager aus einer Online Gallery wählen und werden anschliessend dem Projekt inklusive der benötigten Dateien, Referenzen und Konfigurationseinstellungen hinzugefügt. Dabei werden auch Abhängigkeiten zu anderen Nuget-Paketen berücksichtigt. Die Online Gallery kann mittlerweile mit einem riesigen Angebot aufwarten, darunter auch sehr prominente Erweiterungen wie etwa Jquery, Json.Net, Elmah oder Knockout.js.

Storyboarding mit Powerpoint

Visual Studio kommt neu mit einem Powerpoint-Add-in, das die Präsentations-Software in eine Storyboarding-Lösung umfunktioniert. Auf den einzelnen Slides können mit Hilfe von vorbereiteten Shapes Benutzerumgebungen aufgezeichnet werden. Die einzelnen Slides lassen sich dann zu Wireframes verlinken, durch die man sich Durchklicken kann. Microsoft liefert bereits eine ganze Reihe von Vorlagen für Web-, Sharepoint, Windows-Store- oder Windows-Phone-Anwendungen mit. Ausserdem lassen sich die herkömmlichen Powerpoint-Funktionen nutzen, um Prototypen mit Animationen oder Hinweisen anzureichern. Das Storyboarding-Add-In ist eine sinnvolle Ergänzung, um schnell mal eine Produktidee aufzuzeichnen oder mit den Endusern die Anforderungen besprechen und vertiefen zu können.
Mit der Code Clone Analysis lässt sich eine Visual-Studio-Solution nach Code-Duplikaten durchforsten, um mögliche Kandidaten für ein Refactoring auszumachen. Die Suchergebnisse werden in Form von schwachen, mittleren und schweren Übereinstimmungen klassifiziert. Die in der Vorgängerversion eingeführten Code-Visualisierungs-Funktionen wurden überarbeitet. So werden die Dependency Graphs jetzt wesentlich schneller generiert und können nun direkt vom Solution Explorer ausgehend von einzelnen Typen oder Membern erzeugt werden.
Da Microsofts eigenes Test-Framework Mstest bislang wenig Anklang fand, haben die Redmonder Visual Studio dahingehend geöffnet, dass sich andere Frameworks wie zum Beispiel Nunit oder Xunit nahtlos einbinden lassen. Neu geschaffen wurde der Unit Test Explorer, mit dem sich die Tests ausführen lassen. Für fehlgeschlagene Tests zeigt der Explorer die Ursache und den Stack Trace an. Per Mausklick kann man direkt zum entsprechenden Code springen, nötige Korrekturen vornehmen und den Unit Test neu starten.


Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Was für Schuhe trug der gestiefelte Kater?
GOLD SPONSOREN
SPONSOREN & PARTNER