Die Entwicklung von Windows 8
Windows Store-Blog für Entwickler
IEBlog – Deutsch
Visual Studio-Blog
Windows-Teamblogs
Blog „Inside Windows Live“
Windows 8 Release Preview herunterladen
Dev Center – Apps im Metro-Stil
Folgen Sie uns @windevs
//build/-Konferenz
Foren zu Windows-Apps im Metro-Stil
Es ist soweit: Mit der neuen Release Preview und den neuen Entwicklungstools ist Windows 8 der endgültigen Veröffentlichung wieder einen Schritt näher gerückt. Unser Entwicklerteam hat, genau wie bei der Consumer Preview, die Entwicklungsplattform überarbeitet, um Ihnen die bestmögliche Entwicklungsumgebung für Windows 8 zu bieten. In diesem Beitrag werde ich einige der neuen Funktionen hervorheben, an denen wir gearbeitet haben, und ich werden auch erläutern, wie Sie vorhandene Apps der Consumer Preview in die Release Preview migrieren können.
Bevor ich auf die neuen Funktionen der Release Preview zu sprechen komme, möchte ich Ihnen einen kleinen Einblick darin geben, wie unser Team Änderungen an den Funktionen im Release Preview-Meilenstein in Betracht gezogen hat. In dieser Phase des Entwicklungsprozesses ist eine Mehrzahl der Funktionen von Windows bereits in der Plattform enthalten. Unser Ziel für die Release Preview war es, diese vorhandenen Funktionen zu verfeinern.
Was bedeutet das für Sie als Entwickler? Die meisten Änderungen in der Release Preview sind wesentlich geringfügiger als in vorherigen Versionen von Windows 8. Die neuen Features konzentrieren sich auf bestimmte Anforderungen. Viele Änderungen verbessern einfach die Funktionsfähigkeit der Consumer Preview. Wir haben Fehler in der Plattform behoben, die Leistung der Plattform gesteigert (durch winzige Codeänderungen können einfach schnellere Apps erstellt werden) und die Entwicklungsumgebung verbessert, bis wir mit den Ergebnissen zufrieden waren.
Dadurch können Sie Kenntnisse und Fähigkeiten, die Sie bei der App-Entwicklung in der Consumer Preview erworben haben, weiterhin in der Release Preview anwenden. Es bedeutet auch, dass Sie an Ihren vorhandenen Apps nur minimale Änderungen vornehmen müssen. Zugleich ist die Entwicklungsplattform ausgefeilter denn je. Sehen Sie sich die Änderungen an, und Sie erhalten eine gute Übersicht unserer Entwicklungstätigkeit.
Windows 8-Anwendungsdaten sind Roaming-fähig, die App-Einstellungen müssen dann nur einmal konfiguriert werden und sind anschließend überall verfügbar. Mit nur geringem Aufwand Ihrerseits erhalten Ihre Benutzer Apps, die auf allen Windows 8-PCs fertig eingerichtet sind. Mit der Release Preview haben wir diese Funktion durch HighPriority-Roamingeinstellungen für Apps erweitert. Das Roaming mit hoher Priorität muss nur einen kleinen Teil der App-Statusdaten (mit hoher Frequenz) enthalten, damit Apps stets auf allen PCs gleich ausgeführt werden.
Beispielsweise kann eine Nachrichten-App die HighPriority-Einstellung verwenden, um zu dem vom Benutzer gelesenen Artikel zu wechseln. Sobald der Benutzer einen anderen Artikel liest, ändert die Nachrichten-App diese Einstellung für alle PCs. Wenn der Benutzer auf einem anderen Windows 8-PC die Nachrichten-App aufruft, wird der zuletzt gelesene Artikel angezeigt. Der Benutzer kann dort weiterlesen, wo er auf dem anderen Gerät aufgehört hat.
Und das Beste ist: Diese Funktion lässt sich einfach implementieren. Eine Einstellung oder ein Verbund mit dem Namen „HighPriority“ im Stammcontainer der Roamingeinstellungen reicht vollkommen aus. Die Einstellung ist sofort verfügbar und ermöglicht Ihnen, die wichtigsten App-Statusdaten für alle PCs zu übernehmen, damit ein Benutzer dort fortfahren kann, wo er auf einem anderen PC aufgehört hat. Roaming mit hoher Priorität funktioniert mit nur einer Einstellung. Soll das Roaming auf mehrere Datenkomponenten angewendet werden, z. B. Artikel und Seitenzahl, können Sie einen zusammengesetzten Wert verwenden. Der „HighPriority“-Verbund darf 8 k nicht überschreiten. Größere Datenmengen werden als normale Einstellung behandelt.
Die ersten Schritte finden Sie im aktualisierten Beispiel für App-Daten, das nun ein Beispiel für App-Roamingeinstellungen mit hoher Priorität enthält.
Des Weiteren haben wir die Vorlagen in Visual Studio erheblich verbessert. Wir haben unsere Vorlagen aktualisiert und sogar eine neue Vorlage hinzugefügt, damit Sie ein neues Projekt einfacher beginnen und rasch tolle Apps erstellen und ausführen können.
In der Release Preview haben die XAML-Vorlagen viel Aufmerksamkeit erhalten. Hier sind einige der wichtigsten Änderungen:
Wir haben die Navigation für alle Vorlagen verbessert. In der Consumer Preview war die Navigation in den Vorlagen hauptsächlich auf die Fingereingabe ausgelegt. Nun unterstützen die Vorlagen die Navigation mit Maus und Tastatur vollständig (Schaltflächen „Zurück“ und „Weiter“, Tastenkombinationen). Wenn Sie die Vorlagen verwenden, wird die Navigationsstruktur der Apps automatisch so konfiguriert, dass alle Eingabemethoden unterstützt werden.
Zusätzlich zur Aktualisierung unserer vorhandenen Vorlagen wollten wir es Ihnen erleichtern, eigene Komponenten für Windows-Runtime zu erstellen. Hierfür haben wir eine neue C#/VB-Vorlage hinzugefügt, die Ihnen den Großteil der Arbeit abnimmt. Mit dieser Vorlage lässt sich schnell eine neue Komponente für Windows-Runtime erstellen, die dann in der Haupt-App verwendet werden kann. Sie müssen diese Komponenten nicht mehr von Grund auf neu erstellen, denn die Vorlage übernimmt die Einrichtung. Fügen Sie einfach Ihre benutzerdefinierte Logik hinzu – das ist schon alles.
Seit der Veröffentlichung der Windows 8 Consumer Preview haben wir uns intensiv mit der Leistungsoptimierung und dem Erstellen von schnellen und flüssigen Apps beschäftigt. Bei Apps, die das Dateisystem für Miniaturansichten verwenden, beispielsweise für Fotoalben, Musikwiedergabelisten oder Dokumentübersichten, war das zentrale Problem der Dateizugriff, den wir nun verbessert haben.
In Customer Preview-Builds dauert das Abrufen von Dateieigenschaften und Miniaturansichten manchmal sehr lang. Da das Modell zum Abrufen von Eigenschaften bedarfsabhängig ist, erhöhen Apps, die auf viele Dateien zugleich zugreifen, den Backend-Overhead durch wiederholte prozessübergreifende Kommunikation. Zusätzlich sind nicht alle Eigenschaften für einen Schnellzugriff optimiert. Wenn Sie also weniger häufig verwendete Eigenschaften einsetzen, wird Ihre App sozusagen bestraft.
Um dies zu beheben, ohne dass umfangreiche Änderungen am App-Code erforderlich sind, haben wir zwei neue Funktionen zu den Datenmodell-APIs hinzugefügt.
Windows.Storage.Search.QueryOptions.SetPropertyPrefetch
Windows.Storage.Search.QueryOptions.SetThumbnailPrefetch
Dies sieht in JavaScript dann so aus:
var search = Windows.Storage.Search;var fileProperties = Windows.Storage.FileProperties;// Create query options with common query sort order and file type filter.var fileTypeFilter = [".jpg", ".png", ".bmp", ".gif"];var queryOptions = new search.QueryOptions(search.CommonFileQuery.orderByName, fileTypeFilter);// Set up property prefetch - use the PropertyPrefetchOptions for top-level properties// and an array for additional properties.var imageProperties = fileProperties.PropertyPrefetchOptions.imageProperties;var copyrightProperty = "System.Copyright";var colorSpaceProperty = "System.Image.ColorSpace";var additionalProperties = [copyrightProperty, colorSpaceProperty];queryOptions.setPropertyPrefetch(imageProperties, additionalProperties);// Set up thumbnail prefetch.var thumbnailMode = fileProperties.ThumbnailMode.picturesView;var requestedSize = 190;var thumbnailOptions = fileProperties.ThumbnailOptions.useCurrentScale;queryOptions.setThumbnailPrefetch(thumbnailMode, requestedSize, thumbnailOptions);// Query the Pictures libraryvar query = Windows.Storage.KnownFolders.picturesLibrary.createFileQueryWithOptions(queryOptions);query.getFilesAsync().done(function (files) { // Output the query results files.forEach(function (file) { // getImagePropertiesAsync returns synchronously when prefetching // retrieved the properties in advance. file.properties.getImagePropertiesAsync().done(function (properties) { // Use image properties }); // Similarly, extra properties are retrieved asynchronously but may // return immediately when prefetching completed. file.properties.retrievePropertiesAsync(additionalProperties).done(function (properties) { // Use additional properties }); // You can also retrieve and use thumbnails file.getThumbnailAsync(thumbnailMode, requestedSize, thumbnailOptions).done(function (thumbnail) { // Use the thumbnail }); });});
Ähnlicher Code in C# sieht in etwa so aus:
const string CopyrightProperty = "System.Copyright";const string ColorSpaceProperty = "System.Image.ColorSpace";// Set up file type filter.List<string> fileTypeFilter = new List<string>();fileTypeFilter.Add(".jpg");fileTypeFilter.Add(".png");fileTypeFilter.Add(".bmp");fileTypeFilter.Add(".gif");// Create query options.var queryOptions = new QueryOptions(CommonFileQuery.OrderByName, fileTypeFilter);// Set up property prefetch - use the PropertyPrefetchOptions for top-level properties// and a list for additional properties.List<string> propertyNames = new List<string>();propertyNames.Add(CopyrightProperty);propertyNames.Add(ColorSpaceProperty);queryOptions.SetPropertyPrefetch(PropertyPrefetchOptions.ImageProperties, propertyNames);// Set up thumbnail prefetch.const uint requestedSize = 190;const ThumbnailMode thumbnailMode = ThumbnailMode.PicturesView;const ThumbnailOptions thumbnailOptions = ThumbnailOptions.UseCurrentScale;queryOptions.SetThumbnailPrefetch(thumbnailMode, requestedSize, thumbnailOptions);// Set up the query and retrieve files.var query = KnownFolders.PicturesLibrary.CreateFileQueryWithOptions(queryOptions);IReadOnlyList<StorageFile> fileList = await query.GetFilesAsync();foreach (StorageFile file in fileList){ // GetImagePropertiesAsync returns synchronously after prefetching // retrieves the properties in advance. var properties = await file.Properties.GetImagePropertiesAsync(); // Use image properties // similarly, extra properties are retrieved asynchronously but may // return immediately when prefetching completes. IDictionary<string, object> extraProperties = await file.Properties.RetrievePropertiesAsync(propertyNames); // Use additional properties // You can also retrieve and use thumbnails. var thumbnail = await fle.GetThumbnailAsync(thumbnailMode, requestedSize, thumbnailOptions); // Use thumbnail}
Beim Testen der Apps mit diesen neuen Funktionen konnten wir erhebliche Verbesserungen feststellen: Eine Ansicht der Fotos in der Bildbibliothek des Benutzers wird mit StorageDataSourceAdapter nun 70 % schneller angezeigt als zuvor. Die Leistung einer App, die Dateieigenschaften aus dem Dateisystem in eine Datenbank speichert, wurde um 400 % gesteigert.
Wenn Sie eine App entwickeln, die auf viele Dateien zugreifen muss, verwenden Sie einfach diese neuen Funktionen, um Ihre App schneller zu machen. Weitere Informationen finden Sie in der API-Dokumentation Windows.Storage.Search.QueryOptions im Entwicklungscenter.
Seit der Consumer Preview haben wir an der Verbesserung unserer Entwurfs-Tools gearbeitet. Wir wissen, dass die Benutzeroberfläche das Haupterkennungsmerkmal Ihrer App ist. Deshalb wollten wir es Ihnen so einfach wie möglich machen, die neuen Metro-Stil-Entwurfskonzepte in Ihre App zu integrieren.
Der Ansichtszustand ist ein wichtiges Benutzeroberflächenkonzept für Apps im Metro-Stil. In der Release Preview wurden sowohl der VS XAML-Designer als auch Blend aktualisiert. So können Sie eine Seitenvorschau anzeigen und bearbeiten sowie visuelle Zustände verwenden, um die Ansichtszustände von Plattform-Apps (Vollbildansicht im Querformat, Vollbildansicht im Hochformat, Fenstermodus und Andockmodus) im Bereich [Device] (Gerät) (vormals [Platform] (Plattform)) zu definieren. Der Bereich Bereich [Device] (Gerät) ändert den visuellen Zustand jetzt automatisch, wenn Sie die Ansicht verändern. Wenn Sie den Aufzeichnungsmodus verwenden, werden Änderungen am aktuell gewählten visuellen Zustand übernommen, die Sie in der Entwurfsoberfläche oder mit der Eigenschaftenanalyse vorgenommen haben, um den aktuell gewählten visuellen Zustand zu aktualisieren (anstelle von wiederholten Änderungen der Basis).
Der neue Bereich [Device] (Gerät) mit vollständiger Entwurfsunterstützung für den Ansichtszustand
Zusätzlich können Sie jetzt mithilfe der Entwurfsfunktion für visuelle Zustände von Blend visuelle Zustände mit Designanimationen aus der Animationsbibliothek entwerfen und eine entsprechende Vorschau anzeigen. Bei der Animationsbibliothek handelt es sich um eine Sammlung von Metro-Stil-Animationen, die speziell für den Zweck zusammengestellt wurde, die Vorteile der plattformeigenen Animationsfunktion zu nutzen. Diese Animationen finden Sie in der gesamten Windows-UI und stehen auch für Ihre Apps im Metro-Stil zur Verfügung.
In der Consumer Preview haben wir viele großartige Funktionen in unser Blend für HTML-Erstellungstool eingearbeitet. In der Release Preview konzentrieren wir uns darauf, die Verwendung dieser Funktionen in Blend einfacher und produktiver zu gestalten. Wir haben verschiedene Verbesserungen am allgemeinen HTML/CSS-Entwurf in Blend vorgenommen, die das Erstellen von Apps in der Release Preview vereinfachen. Hier einige Beispiele:
Der HTML-Designer von Blend mit den neuen Funktionen zum Ausschneiden, Kopieren und Einfügen
Darüber hinaus haben wir noch einige spezifischere Verbesserungen vorgenommen, um das Erstellen von Apps noch produktiver zu machen. Es ist jetzt zum Beispiel einfacher, in Blend die WinJS-Steuerelemente zu verwenden.
Unabhängig davon, ob Sie in HTML/CSS oder in XAML entwerfen, werden Sie viele Verbesserungen an unseren Entwurfstools für Apps im Metro-Stil vorfinden. Die neuen Funktionen, die wir hier beschreiben, zeigen natürlich nur einen kleinen Ausschnitt unserer Arbeit. Probieren Sie das Tool selbst aus, um alle Verbesserungen zu entdecken.
Zudem haben wir die Funktionalität des Gestenereignismodells für JavaScript-Apps erheblich verbessert. Unser Ziel war es, die Verarbeitung von Gesten in Ihren Apps flexibler und leistungsfähiger zu gestalten. Die Änderungen im Einzelnen:
Mit diesen Änderungen wird die Gesteneingabe in Ihrer App noch einfacher. Weitere Informationen finden Sie unter Reaktion auf Benutzereingaben im Entwicklungscenter und im Beispiel über instanziierbare Gesten.
Wir haben neben der Arbeit an der Entwicklungsplattform auch viel Zeit in die Verbesserung der Dokumentation im Entwicklungscenter investiert. Das Entwicklungscenter ist Ihr Zugang zu allem nötigen Wissen über die Entwicklung von Apps im Metro-Stil. Im Hinblick auf die Release Preview haben wir versucht, alle Bereiche möglichst vollständig abzudecken.
Zum einen stehen nun mehr Inhalte im Entwicklungscenter zur Verfügung. Im Entwicklungscenter der Consumer Preview haben wir Ihnen die Grundlagen für die ersten Schritte bereitgestellt. Mit der Release Preview ist es nun viel einfacher, Anleitungen für fortgeschrittene Themen zu finden, mit denen Sie einzigartige Apps im Metro-Stil erstellen können. Dies sind die wichtigsten Neuerungen:
Zusätzlich zu den neuen Inhalten haben wir auch die Informationssuche und die ersten Schritte der App-Entwicklung vereinfacht. Beispielsweise gibt es viele Querverweise zwischen Beispielen und der dazugehörigen Dokumentation. Sie können jetzt nach einen Beispiel suchen, sich den Code ansehen und dann einfach zur Dokumentation springen, in der Sie ausführliche Informationen zum Code finden. Falls Sie bei der Dokumentation beginnen möchten, haben wir vorhandene „Erste Schritte“-Themen verbessert und weitere grundlegende Tutorien hinzugefügt, um Sie bei der Entwicklung von Apps zu unterstützen.
Am besten besuchen Sie gleich nach der Installation der Release Preview das Entwicklungscenter und sehen sich die neuen Inhalte selbst an. Diese und weitere Verbesserungen erleichtern Ihnen die Entwicklung von Apps im Metro-Stil.
Wir haben bei der Entwicklung der Release Preview versucht, grundlegende Änderungen an Apps auf ein Minimum zu reduzieren. Wir sind uns darüber bewusst, dass Sie viel Arbeit in die Apps investiert haben, und wir wollten beim Wechsel zur Release Preview so wenig Umstände wie möglich verursachen. Wenn eine neue Entwicklungsplattform auf ein höheres Qualitätsniveau gebracht werden soll, bedarf es natürlich immer der Optimierung einiger Funktionen.
Die größten Veränderungen wurden an den Visual Studio-Projekten selbst vorgenommen. (Einige davon habe ich am Anfang dieses Beitrags beschrieben). Um Ihre App bereit zu machen, starten Sie am Besten ein neues Projekt in Visual Studio, wählen Sie die Vorlage Ihrer App und portieren Sie Ihr altes Projekt in das neue. Das Layout der Vorlagen hat sich kaum verändert, sodass Ihr bestehender Code weiterhin passt. Vergessen Sie hierbei nicht, auch Ihr altes Manifest zu portieren.
Nachdem Sie Ihr Projekt portiert haben, führen Sie Ihre App aus, und suchen Sie nach Fehlern, die durch API-Änderungen verursacht wurden. Als Hilfestellung haben wir einen Migrationshandbuch erstellt, in dem die meisten der API-Änderungen dokumentiert sind, die zwischen Consumer Preview und Release Preview vorgenommen wurden.
Durch das Erstellen eines neuen VS-Projekts und unter Zuhilfenahme des Migrationshandbuchs für API-Änderungen, können Sie Apps rasch einsatzbereit machen.
Wir hoffen, dass Sie sich darauf freuen, Apps für die Release Preview zu entwickeln. Die in diesem Beitrag beschriebenen Änderungen zeigen nur einen kleinen Ausschnitt unserer Arbeit an dieser neuen Veröffentlichung. Dank dieser Änderungen können Sie mit Windows 8 einfacher als je zuvor leistungsstarke Apps entwickeln. Mithilfe des Migrationshandbuchs können Sie sowohl bei neuen als auch bei vorhandenen Apps von diesen Änderungen profitieren.
Laden Sie die Release Preview und die Entwicklungstools einfach herunter, und beginnen Sie mit der Entwicklung von Apps. Besuchen Sie auch den Windows Store-Blog für Entwickler. Bei Fragen stehen Ihnen das Entwicklungscenter, die Foren und unser Blog zur Verfügung. Viel Spaß bei der App-Entwicklung!
– Jake Sabulsky Program Manager, Windows
Vielen Dank an Dave Bennett, Marc Wautier, Paul Chapman, Heather Brown, Keith Boyd und Steve Wright für Ihre Hilfe bei diesem Beitrag.