Windows 8 für Entwickler

30
Microsoft Student Partners © 2012 Microsoft Corporation. Alle Rechte vorbehalten.

Transcript of Windows 8 für Entwickler

Page 1: Windows 8 für Entwickler

Microsoft Student Partners© 2012 Microsoft Corporation. Alle Rechte vorbehalten.

Page 2: Windows 8 für Entwickler

Eine typische Windows 7 Anwendung… Lässt sich mit Tastatur und Maus bedienen

Läuft nur auf x86 und x64 CPUs

Kann Administratorrechte anfordern und dann beliebig auf die Festplatte schreiben

Kann im Hintergrund laufen und dort beliebig die CPU auslasten

Kann uneingeschränkt auf Sensoren (Kamera, Mikrofon, GPS) zugreifen

Kann beliebig Internet-Traffic erzeugen, auch über mobile Datenverbindungen

Page 3: Windows 8 für Entwickler

Ein Anwendungsmodell aus anderen Zeiten.

Page 4: Windows 8 für Entwickler

Neue Formfaktoren wie Tablets sprechen auch Anwender an, die sich bisher vielleicht keinen Computer gekauft hätten.

Page 5: Windows 8 für Entwickler

Eine typische Windows 8 Anwendung… Lässt sich mit Tastatur und Maus bedienen, aber auch mit Touch und Stift

Läuft auf x86, x64 und ARM CPUs

Hat begrenzten Festplattenzugriff

Kann im Hintergrund nur begrenzt die CPU auslasten

Kann nur nach Zustimmung des Benutzers auf Sensoren (Kamera, Mikrofon, GPS) zugreifen

Kann nur mit Zustimmung des Benutzers Internet-Traffic erzeugen

Page 6: Windows 8 für Entwickler

Diese neuen Anforderungen ließen sich mit dem bestehenden Anwendungsmodell nicht umsetzen. Deshalb…

Page 7: Windows 8 für Entwickler

Windows 8 Apps laufen in einer neuen Runtime: WinRT. Für Desktop-Anwendungen ändert sich nichts.

Page 8: Windows 8 für Entwickler

DEMO

Page 9: Windows 8 für Entwickler

Bisher: viele Anwendungen machen zeitaufwändige Operationen (z.B. Web-Service-Abfragen) im UI-Thread, der dadurch blockiert wird.

UI

Thread 1

UI

Thread 2

Web-Service

abfrage

UI reagiert nicht

Page 10: Windows 8 für Entwickler

Bisher: viele Anwendungen machen zeitaufwändige Operationen (z.B. Web-Service-Abfragen) im UI-Thread, der dadurch blockiert wird.

UI

Thread 1

UI

Thread 2

Web-Service

abfrage

UI reagiert weiter

UI

Page 11: Windows 8 für Entwickler

Zu jeder Schnittstelle in WinRT existieren Metadaten. Diese Metadaten werden dazu genutzt, um automatisch Projektionen für die unterstützten Programmiersprachen zu generieren.

WinRT

(C++, C#, VisualBasic)

Metadaten

C++ C# / Visual Basic JavaScript

Projektion Projektion Projektion

Page 12: Windows 8 für Entwickler

WinRT sieht in jeder Programmiersprache so aus, wie man es dort erwarten würde

var filePicker = new Windows.Storage.Pickers.FileOpenPicker();filePicker.fileTypeFilter.push(".jpg");

filePicker.pickSingleFileAsync().done(function (file) {if (file) {

WinJS.Utilities.query("img").setAttribute("src", URL.createObjectURL(file));

}});

var filePicker = new FileOpenPicker();filePicker.FileTypeFilter.Add(".jpg");

var file = await filePicker.PickSingleFileAsync();

if (file != null) {var stream = await file.OpenReadAsync();

var bitmap = new BitmapImage();bitmap.SetSource(stream);

MyImage.Source = bitmap;}

auto filePicker = ref new FileOpenPicker();filePicker->FileTypeFilter->Append(".jpg");

task<StorageFile^>(filePicker->PickSingleFileAsync()).then([this](StorageFile^ file)

{if (file) {

task<IRandomAccessStreamWithContentType^>(file->OpenReadAsync()).then([this](IRandomAccessStreamWithContentType^ stream)

{auto bitmap = ref new BitmapImage();bitmap->SetSource(stream);MyImage->Source = bitmap;

});}

});

C++ C#

JavaScript

Page 13: Windows 8 für Entwickler

Zwei UI-Technologien

XAML

Für C#, VisualBasic und C++

HTML5, CSS3

Für JavaScript

Page 14: Windows 8 für Entwickler

Der Lebenszyklus einer Windows 8 App unterscheidet sich deutlich von einer Windows 7 Anwendung

Page 15: Windows 8 für Entwickler

Apps lassen sich unter Windows 8 nur über den neuen Windows Store installieren (Ausnahme: Desktop-Anwendungen)

Page 16: Windows 8 für Entwickler

Windows 8 Apps benutzen ein einheitliches Paketformat. Dieses ist digital signiert um Manipulation während des Downloads zu verhindern.

Files / Assets

AppXManifest.xml

BlockMap

Signatur

Zip Central Directory

.appx package

Page 17: Windows 8 für Entwickler

Windows 8 Apps laufen in einer Sandbox und haben eingeschränkten Zugriff auf Betriebssystem-Ressourcen.

App 1 App 2

Betriebssystem

Contracts

Dire

kte

r

AP

I Zu

griff

Bro

ker

Windows APIs (WinRT)

Lokaler kontext Lokaler kontext

Page 18: Windows 8 für Entwickler

Will eine App auf eine Ressource zugreifen, benötigt sie dafür die Berechtigung (Capability).

Page 19: Windows 8 für Entwickler

Jede Anwendung muss deklarieren, welche Capabilities sie benötigt.

Page 20: Windows 8 für Entwickler

Die Capabilities, die von einer App genutzt werden, werden im Windows Store aufgelistet.

Page 21: Windows 8 für Entwickler

Bei Capabilities, die die Privatsphäre des Benutzers betreffen, fragt Windows explizit, wenn eine Anwendung diese zum ersten Mal benutzen möchte (z.B. Geolocation, WebCam, Mikrofon).

Page 22: Windows 8 für Entwickler

Apps können nicht frei auf das Dateisystem zugreifen. Der Benutzer kann ihnen aber über FilePicker und FolderPicker Lese-und/oder Schreibrechte an bestimmten Dateien und Ordnern geben.

Page 23: Windows 8 für Entwickler

Jede App hat einen lokalen und isolierten Speicherbereich, auf den sie uneingeschränkt zugreifen kann.

Apps können außerdem Zugriff auf den Eigene-Dateien-Ordner des Benutzers beantragen.

Page 24: Windows 8 für Entwickler

Apps können ihre Einstellungen über den Microsoft Account des Benutzers mit anderen Rechnern synchronisieren.

AppLocal Storage

Microsoft

Account

Page 25: Windows 8 für Entwickler

Unter Windows 8 läuft im Normalfall nur eine, mit Snapping zwei Apps zur selben Zeit. Apps im Hintergrund werden automatisch pausiert und wieder aufgeweckt, wenn sie in den Vordergrund geholt werden.

Laufende AppAngehaltene

App

anhaltenBeendete

AppWenig ressourcen

App läuft App angehalten App läuft nicht

fortsetzen

App hat 5s Zeit, bevor sie

angehalten wird

App wird nicht

benachrichtigt, bevor sie

beendet wird

Apps warden benachrichtigt,

wenn die fortgesetzt werden

Benutzer

startet App

Splash screen

Page 26: Windows 8 für Entwickler

Aber es gibt vielfältige Möglichkeiten für Apps, doch im Hintergrund zu laufen. Etwa um Audio wiederzugeben, Daten herunterzuladen, GPS Spuren aufzuzeichnen usw.

Page 27: Windows 8 für Entwickler

Frage

Wer von euch hat schon einmal mit C# gearbeitet?

Page 28: Windows 8 für Entwickler

Windows 8 Apps können nur einen Teil des .NET Frameworks nutzen.

Page 29: Windows 8 für Entwickler

.NET und WinRT-Datentypen lassen sich problemlos kombinieren, wie hier der WinRT Datentyp IRandomAccessStream und der .NET Datentyp Stream.

var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("dummy.dat", CreationCollisionOption.ReplaceExisting);

using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite)) { using (Stream outStream = stream.AsStreamForWrite()) {

outStream.Write(buffer, 0, buffer.Length); outStream.Flush();

} }

C#

Page 30: Windows 8 für Entwickler

Die WinRT Projektion für C# und VisualBasic unterstüzt die neuen Sprachkonzepte für asynchrone Programmierung.

async void Methode(){

var ergebnis1 = await AsynchroneOperation1();var ergebnis2 = await AsynchroneOperation2();var ergebnis3 = await AsynchroneOperation3();

}

C#