Entwickeln für Windows 8

Werbung
ITMAGAZINE
Entwickeln für Windows 8
29. September 2012 - 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. 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
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.
Copyright by Swiss IT Media 2017 
Herunterladen