Windows 8 Metro App Entwicklung - Fragen und Antworten (FAQ)

Die folgende Beschreibung bezieht sich nur auf Metro-Apps - also die Anwendungen die auf Basis der WinRT für das neue Touch-freundliche Metro-Interface geschrieben werden. Im Desktop-Modus sollten auf x86 basierten Tablets hingegen alle unter Windows 7 lauffähigen Anwendungen ohne Probleme funktionieren.

Was brauche ich um für Windows 8 entwickeln zu können und woher kriege ich das?
Benötigt wird Visual Studio 11 und natürlich auch eine Windows 8 Installation um die Apps darauf ausführen und testen zu können. Diese beiden Dinge sind momentan ohnehin nur gemeinsam erhältlich und aktuell nur in einer 64-bit Version. Sie können unter http://msdn.microsoft.com/en-us/windows/apps/br229516 heruntergeladen werden. Wichtig ist hierbei, dass es nur möglich ist beides in einer kombinierten Version zu installieren. Nimmt man eine Installation rein mit dem Betriebssystem kann man Visual Studio momentan noch nicht im Nachhinein einspielen. Weiters ist auch eine Entwicklung von Metro Apps unter älteren Windows-Versionen nicht möglich.

In welchen Sprachen können Windows 8 Metro Apps geschrieben werden?
Von Microsoft werden alle offiziellen .Net-Sprachen (C#, Visual Basis .Net, F#), sowie C++ in Kombination mit XAML zur Beschreibung der Oberfläche und HTML 5 + JavaScript unterstützt.

Handelt es sich bei den HTML5+JavaScript Apps um standardkonformes HTML?
Jede mit dem IE10 lauffähige HTML5-Anwendung kann auch als Windows 8 App verwendet werden. Um jedoch weitere Systemfunktionen wie die Charms oder den Zugriff auf WebCam, etc. zu nutzen ist die Verwendung von WinRT aus dem JavaScript-Code aus nötig und nachdem diese auf anderen Platformen nicht zur Verfügung stehen ist eine solche App dort dann nicht ohne weiteres lauffähig. Also kurz: sobald die App erweiterte Bibliotheken nutzt bindet sie sich an Windows 8 aber alles was im Browser möglich ist (aufgrund der Unterstützung im IE10) klappt auch in den Apps.

XAML in C++? D.h. es gibt nur Managed Code?
Nein, das Metro UI von Windows 8 wurde anders als die Windows Presentation Foundation (WPF) und Silverlight, die auch XAML zur Definition von Benutzeroberflächen nutzen, komplett in Native Code geschrieben, was ein Ansprechen direkt aus C++ vereinfacht und auch der Performance zugutekommt.

Die Oberfläche ist Native Code, d.h. das Ansprechen aus den .Net-Sprachen (C#, Visual Basic.Net, F#) wird mühsam?
Nein, Microsoft bietet mittels sogenannter "Projections" für alle Sprachen ein für diese übliches Interface. In den .Net Sprachen stehen also übliche Events, etc. zu Verfügung. Die APIs der Oberfläche stimmen jedoch trotz XAML nicht mit denen von WPF überein. Es handelt sich also wie bei Silverlight um eine verwandte aber nicht identische Technologie.

Was ist WinRT?
WinRT ist die neue Windows Runtime und soll laut Aussage von Microsoft in Zukunft das Win32-API ersetzen. Technisch ist das ganze eine Weiterentwicklung von COM, was vor dem Programmierer jedoch durch "Projections" in die jeweilige Zielumgebung (C++, C#, etc.) verborgen wird.

Ist WinRT also der Nachfolger des .Net-Framework?
Nein, WinRT besteht parallel zu .Net, es ist jedoch mit dem .Net Framework nicht möglich Metro-Apps zu entwickeln.

Welche Unterschiede gibt es zwischen der Entwicklung mit WinRT und dem .Net Framework?
Die WinRT geht einen Weg weiter, der schon mit Silverlight erstmalig eingeschlagen wurde und erlaubt es nicht mehr Methoden synchron aufzurufen die zu ihrer Ausführung länger als 50 ms brauchen. Dadurch sind zwangsläufig etliche APIs die Teil des .Net Framework sind nicht mehr verfügbar.

Was hat es mit den "Charms" in Windows 8 auf sich?
Die Charms wie Suche oder Share stellen sich dem Programmierer als Interfaces zur Verfügung die ihre App implementiert und somit einer App erlauben sich dem System gegenüber als z.B. Durchsuchbar zu präsentieren. Damit ist es einfach möglich sich in die globale Suche des Systems zu integrieren oder von beliebigen Anwendungen aus zur Bearbeitung von Bildern gestartet zu werden.

Werde ich meine bisherigen Anwendungen einfach mit einer Metro-Oberfläche ausstatten können?
Das kommt sehr stark darauf an welche Bibliotheken diese Anwendungen nutzen. Einiges was in Win32 oder .Net möglich ist, ist in der WinRT so nicht möglich und die entsprechenden Komponenten gehören dann in jedem Fall ausgetauscht.