2. 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
4. Neue Formfaktoren wie Tablets sprechen auch Anwender an,
die sich bisher vielleicht keinen Computer gekauft hätten.
5. 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
9. Bisher: viele Anwendungen machen zeitaufwändige Operationen
(z.B. Web-Service-Abfragen) im UI-Thread, der dadurch blockiert
wird.
Thread 1 Thread 2
UI
Web-Service
abfrage
UI reagiert nicht
UI
10. Bisher: viele Anwendungen machen zeitaufwändige Operationen
(z.B. Web-Service-Abfragen) im UI-Thread, der dadurch blockiert
wird.
Thread 1 Thread 2
UI
UI Web-Service
abfrage
UI reagiert weiter
UI
11. 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
Projektion Projektion Projektion
C++ C# / Visual Basic JavaScript
12. WinRT sieht in jeder Programmiersprache so aus, wie man es
dort erwarten würde
C++ C#
auto filePicker = ref new FileOpenPicker(); var filePicker = new FileOpenPicker();
filePicker->FileTypeFilter->Append(".jpg"); filePicker.FileTypeFilter.Add(".jpg");
task<StorageFile^>(filePicker->PickSingleFileAsync()).then( var file = await filePicker.PickSingleFileAsync();
[this](StorageFile^ file)
{ if (file != null) {
if (file) var stream = await file.OpenReadAsync();
{
task<IRandomAccessStreamWithContentType^>(file->OpenReadAsync()).then( var bitmap = new BitmapImage();
[this](IRandomAccessStreamWithContentType^ stream) bitmap.SetSource(stream);
{
auto bitmap = ref new BitmapImage(); MyImage.Source = bitmap;
bitmap->SetSource(stream); }
MyImage->Source = bitmap;
});
}
});
JavaScript
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));
}
});
15. Apps lassen sich unter Windows 8 nur über den neuen Windows
Store installieren (Ausnahme: Desktop-Anwendungen)
16. 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
17. Windows 8 Apps laufen in einer Sandbox und haben
eingeschränkten Zugriff auf Betriebssystem-Ressourcen.
App 1 App 2
Contracts
Lokaler kontext Lokaler kontext
API Zugriff
Direkter
Broker
Betriebssystem
Windows APIs (WinRT)
18. Will eine App auf eine
Ressource zugreifen, benötigt
sie dafür die Berechtigung
(Capability).
20. Die Capabilities, die von einer App genutzt werden, werden im
Windows Store aufgelistet.
21. 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).
22. 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.
23. 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.
24. Apps können ihre Einstellungen über den Microsoft Account des
Benutzers mit anderen Rechnern synchronisieren.
Microsoft
App
Local Storage Account
25. 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.
App hat 5s Zeit, bevor sie App wird nicht
angehalten wird benachrichtigt, bevor sie
beendet wird
anhalten
Benutzer Angehaltene Beendete
Laufende App Wenig ressourcen
startet App App App
fortsetzen
Apps warden benachrichtigt,
wenn die fortgesetzt werden
Splash screen App läuft App angehalten App läuft nicht
26. 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.
28. Windows 8 Apps können nur
einen Teil des .NET Frameworks
nutzen.
29. .NET und WinRT-Datentypen lassen sich problemlos kombinieren,
wie hier der WinRT Datentyp IRandomAccessStream und der
.NET Datentyp Stream.
C#
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();
}
}
30. Die WinRT Projektion für C# und VisualBasic unterstüzt die neuen
Sprachkonzepte für asynchrone Programmierung.
C#
async void Methode()
{
var ergebnis1 = await AsynchroneOperation1();
var ergebnis2 = await AsynchroneOperation2();
var ergebnis3 = await AsynchroneOperation3();
}
Notes de l'éditeur
Das Windows 7 Anwendungsmodell stammt aus einer Zeit, als Computer stationäre Geräte mit festem Strom- und Internetanschluss waren. Es ist optimiert auf Flexibilität und Leistungsfähigkeit.Heute sind Computer aber vielfach tragbar, haben Touchscreens, Akkus und mobile Datenverbindungen.
Der Windows Store installiert die App-Pakete ohne Benutzerinteraktion und kann sie spurlos wieder deinstallieren.
Hat eine App auf diesem Weg Rechte an einer Datei oder einem Ordner bekommen, kann sie sich diese Rechte „merken“ und muss beim nächsten Mal nicht mehr fragen.
Windows 8 erlaubt es Benutzern, sich mit einem Microsoft Account an Windows anzumelden. Macht der Benutzer von dieser Möglichkeit gebrauch, können Anwendungen ihre Einstellungen mit dessen Microsoft Account und damit mit allen Geräten des Benutzers synchronisieren.
Windows stellt dabei sicher, dass die Akkulaufzeit nicht leidet.
Das .NET-Framework folgt in weiten Teilen dem klassischen Anwendungsmodell von Windows. Es erlaubt z.B. freien Zugriff auf Systemressourcen und kennt kein Capability-Konzept.Windows 8 Apps können deshalb nur einen Teil von .NET nutzen. Die fehlenden Funktionen werden durch die neuen WinRT-Namespaces ergänzt.
await startet die Ausführung einer asynchronen Operation und pausiert die umgebende Methode so lange, bis das Ergebnis da ist. Anschließend wird die Methode an derselben Stelle fortgesetzt.Eine Methode die await nutzt wird selbst wieder asynchron und muss entsprechend mit dem async-Schlüsselwort markiert werden.