SlideShare une entreprise Scribd logo
1  sur  30
© 2012 Microsoft Corporation. Alle Rechte vorbehalten.   Microsoft Student Partners
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
Ein Anwendungsmodell aus
anderen Zeiten.
Neue Formfaktoren wie Tablets sprechen auch Anwender an,
die sich bisher vielleicht keinen Computer gekauft hätten.
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
Diese neuen Anforderungen
ließen sich mit dem
bestehenden
Anwendungsmodell nicht
umsetzen. Deshalb…
Windows 8 Apps laufen in einer neuen Runtime: WinRT. Für
Desktop-Anwendungen ändert sich nichts.
DEMO
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
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
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
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));
    }
});
Zwei UI-Technologien

XAML                          HTML5, CSS3




Für C#, VisualBasic und C++   Für JavaScript
Der Lebenszyklus einer
Windows 8 App unterscheidet
sich deutlich von einer Windows
7 Anwendung
Apps lassen sich unter Windows 8 nur über den neuen Windows
Store installieren (Ausnahme: Desktop-Anwendungen)
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
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)
Will eine App auf eine
Ressource zugreifen, benötigt
sie dafür die Berechtigung
(Capability).
Jede Anwendung muss deklarieren, welche Capabilities sie
benötigt.
Die Capabilities, die von einer App genutzt werden, werden im
Windows Store aufgelistet.
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).
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.
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.
Apps können ihre Einstellungen über den Microsoft Account des
Benutzers mit anderen Rechnern synchronisieren.




                                               Microsoft
     App
                         Local Storage         Account
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
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.
Frage
Wer von euch hat schon einmal mit C# gearbeitet?
Windows 8 Apps können nur
einen Teil des .NET Frameworks
nutzen.
.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();
    }
}
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();
}

Contenu connexe

Tendances

Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8gedoplan
 
Web-GUIs mit Vaadin
 Web-GUIs mit Vaadin Web-GUIs mit Vaadin
Web-GUIs mit Vaadingedoplan
 
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET CoreElectron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET CoreGregor Biswanger
 
dotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile Servicesdotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile ServicesSascha Dittmann
 
Gwt Techtalk Präsentation
Gwt Techtalk PräsentationGwt Techtalk Präsentation
Gwt Techtalk Präsentationmlegenhausen
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web ToolkitTorben Brodt
 
Applikationsentwicklung für Android
Applikationsentwicklung für AndroidApplikationsentwicklung für Android
Applikationsentwicklung für AndroidThorsten Weiskopf
 
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Christian Janz
 
JavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen AnwendungenJavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen Anwendungenmolily
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesGregor Biswanger
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Gregor Biswanger
 
UI5 Custom Controls (German language!) - Präsentation von den DSAG Thementage...
UI5 Custom Controls (German language!) - Präsentation von den DSAG Thementage...UI5 Custom Controls (German language!) - Präsentation von den DSAG Thementage...
UI5 Custom Controls (German language!) - Präsentation von den DSAG Thementage...Andreas Kunz
 
Progressive Web Apps mit Angular
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit AngularJens Binfet
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresMatthias Jauernig
 
Einführung in die Android Applikationsentwicklung
Einführung in die Android ApplikationsentwicklungEinführung in die Android Applikationsentwicklung
Einführung in die Android ApplikationsentwicklungThorsten Weiskopf
 

Tendances (20)

Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8
 
Web-GUIs mit Vaadin
 Web-GUIs mit Vaadin Web-GUIs mit Vaadin
Web-GUIs mit Vaadin
 
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET CoreElectron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
 
dotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile Servicesdotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile Services
 
MVVM mit WPF
MVVM mit WPFMVVM mit WPF
MVVM mit WPF
 
Gwt Techtalk Präsentation
Gwt Techtalk PräsentationGwt Techtalk Präsentation
Gwt Techtalk Präsentation
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Applikationsentwicklung für Android
Applikationsentwicklung für AndroidApplikationsentwicklung für Android
Applikationsentwicklung für Android
 
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
 
JavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen AnwendungenJavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen Anwendungen
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
UI Testing mit Xcode 7
UI Testing mit Xcode 7UI Testing mit Xcode 7
UI Testing mit Xcode 7
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
 
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetproTest-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
 
UI5 Custom Controls (German language!) - Präsentation von den DSAG Thementage...
UI5 Custom Controls (German language!) - Präsentation von den DSAG Thementage...UI5 Custom Controls (German language!) - Präsentation von den DSAG Thementage...
UI5 Custom Controls (German language!) - Präsentation von den DSAG Thementage...
 
Iks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-Tests
Iks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-TestsIks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-Tests
Iks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-Tests
 
Progressive Web Apps mit Angular
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit Angular
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core Middlewares
 
Einführung in die Android Applikationsentwicklung
Einführung in die Android ApplikationsentwicklungEinführung in die Android Applikationsentwicklung
Einführung in die Android Applikationsentwicklung
 

Similaire à Windows 8 für Entwickler

Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenHendrik Lösch
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptRalf Schwoebel
 
Ueberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsUeberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsGünther Haslbeck
 
Top 10 Internet Trends 2008
Top 10 Internet Trends 2008Top 10 Internet Trends 2008
Top 10 Internet Trends 2008Jürg Stuker
 
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)Wiest Simon
 
iOS Apps mit Webtechnologien erstellen
iOS Apps mit Webtechnologien erstelleniOS Apps mit Webtechnologien erstellen
iOS Apps mit Webtechnologien erstellenMichael Kühnel
 
Das neue Windows 8 UI und wichtige Apps
Das neue Windows 8 UI und wichtige AppsDas neue Windows 8 UI und wichtige Apps
Das neue Windows 8 UI und wichtige AppsDigicomp Academy AG
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Wiest Simon
 
Citrix XenDesktop 4
Citrix XenDesktop 4Citrix XenDesktop 4
Citrix XenDesktop 4netlogix
 
Programmierung von Mobiltelefonen mit Python
Programmierung von Mobiltelefonen mit PythonProgrammierung von Mobiltelefonen mit Python
Programmierung von Mobiltelefonen mit PythonAndreas Schreiber
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
Open Source und Free Software unter Windows
Open Source und Free Software unter WindowsOpen Source und Free Software unter Windows
Open Source und Free Software unter WindowsMartin Leyrer
 
Projekte und Produkte in Python
Projekte und Produkte in PythonProjekte und Produkte in Python
Projekte und Produkte in PythonAndreas Schreiber
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenChristian Münch
 

Similaire à Windows 8 für Entwickler (20)

Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit Javascript
 
Ueberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsUeberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web Applications
 
Top 10 Internet Trends 2008
Top 10 Internet Trends 2008Top 10 Internet Trends 2008
Top 10 Internet Trends 2008
 
Titanium Vs Phonegap
Titanium Vs PhonegapTitanium Vs Phonegap
Titanium Vs Phonegap
 
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
 
iOS Apps mit Webtechnologien erstellen
iOS Apps mit Webtechnologien erstelleniOS Apps mit Webtechnologien erstellen
iOS Apps mit Webtechnologien erstellen
 
Ionic 3
Ionic 3Ionic 3
Ionic 3
 
Das neue Windows 8 UI und wichtige Apps
Das neue Windows 8 UI und wichtige AppsDas neue Windows 8 UI und wichtige Apps
Das neue Windows 8 UI und wichtige Apps
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
 
Citrix XenDesktop 4
Citrix XenDesktop 4Citrix XenDesktop 4
Citrix XenDesktop 4
 
Programmierung von Mobiltelefonen mit Python
Programmierung von Mobiltelefonen mit PythonProgrammierung von Mobiltelefonen mit Python
Programmierung von Mobiltelefonen mit Python
 
iOS Network Extensions
iOS Network ExtensionsiOS Network Extensions
iOS Network Extensions
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
GWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der Praxis
 
Windows 8
Windows 8Windows 8
Windows 8
 
Was ist neu in .NET 4.5?
Was ist neu in .NET 4.5?Was ist neu in .NET 4.5?
Was ist neu in .NET 4.5?
 
Open Source und Free Software unter Windows
Open Source und Free Software unter WindowsOpen Source und Free Software unter Windows
Open Source und Free Software unter Windows
 
Projekte und Produkte in Python
Projekte und Produkte in PythonProjekte und Produkte in Python
Projekte und Produkte in Python
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisieren
 

Plus de Jan Hentschel

Cool NoSQL on Azure with DocumentDB
Cool NoSQL on Azure with DocumentDBCool NoSQL on Azure with DocumentDB
Cool NoSQL on Azure with DocumentDBJan Hentschel
 
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der PraxisMehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der PraxisJan Hentschel
 
Agile Virtualisierung
Agile VirtualisierungAgile Virtualisierung
Agile VirtualisierungJan Hentschel
 
Datenbindung mit XAML in Windows 8
Datenbindung mit XAML in Windows 8Datenbindung mit XAML in Windows 8
Datenbindung mit XAML in Windows 8Jan Hentschel
 
Was macht eine gute App aus
Was macht eine gute App ausWas macht eine gute App aus
Was macht eine gute App ausJan Hentschel
 
Was ist neu an Windows 8
Was ist neu an Windows 8Was ist neu an Windows 8
Was ist neu an Windows 8Jan Hentschel
 
Grundlagen des UI Designs
Grundlagen des UI DesignsGrundlagen des UI Designs
Grundlagen des UI DesignsJan Hentschel
 
Einführung in Blend
Einführung in BlendEinführung in Blend
Einführung in BlendJan Hentschel
 
Windows Azure SQL Databases
Windows Azure SQL DatabasesWindows Azure SQL Databases
Windows Azure SQL DatabasesJan Hentschel
 
Windows Azure Mobile Services
Windows Azure Mobile ServicesWindows Azure Mobile Services
Windows Azure Mobile ServicesJan Hentschel
 
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreibenSQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreibenJan Hentschel
 
MongoDB on Linux VM in Windows Azure
MongoDB on Linux VM in Windows AzureMongoDB on Linux VM in Windows Azure
MongoDB on Linux VM in Windows AzureJan Hentschel
 

Plus de Jan Hentschel (14)

Cool NoSQL on Azure with DocumentDB
Cool NoSQL on Azure with DocumentDBCool NoSQL on Azure with DocumentDB
Cool NoSQL on Azure with DocumentDB
 
Api services
Api servicesApi services
Api services
 
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der PraxisMehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
 
Agile Virtualisierung
Agile VirtualisierungAgile Virtualisierung
Agile Virtualisierung
 
Windows 8 Features
Windows 8 FeaturesWindows 8 Features
Windows 8 Features
 
Datenbindung mit XAML in Windows 8
Datenbindung mit XAML in Windows 8Datenbindung mit XAML in Windows 8
Datenbindung mit XAML in Windows 8
 
Was macht eine gute App aus
Was macht eine gute App ausWas macht eine gute App aus
Was macht eine gute App aus
 
Was ist neu an Windows 8
Was ist neu an Windows 8Was ist neu an Windows 8
Was ist neu an Windows 8
 
Grundlagen des UI Designs
Grundlagen des UI DesignsGrundlagen des UI Designs
Grundlagen des UI Designs
 
Einführung in Blend
Einführung in BlendEinführung in Blend
Einführung in Blend
 
Windows Azure SQL Databases
Windows Azure SQL DatabasesWindows Azure SQL Databases
Windows Azure SQL Databases
 
Windows Azure Mobile Services
Windows Azure Mobile ServicesWindows Azure Mobile Services
Windows Azure Mobile Services
 
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreibenSQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
 
MongoDB on Linux VM in Windows Azure
MongoDB on Linux VM in Windows AzureMongoDB on Linux VM in Windows Azure
MongoDB on Linux VM in Windows Azure
 

Windows 8 für Entwickler

  • 1. © 2012 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft Student Partners
  • 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
  • 6. Diese neuen Anforderungen ließen sich mit dem bestehenden Anwendungsmodell nicht umsetzen. Deshalb…
  • 7. Windows 8 Apps laufen in einer neuen Runtime: WinRT. Für Desktop-Anwendungen ändert sich nichts.
  • 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)); } });
  • 13. Zwei UI-Technologien XAML HTML5, CSS3 Für C#, VisualBasic und C++ Für JavaScript
  • 14. Der Lebenszyklus einer Windows 8 App unterscheidet sich deutlich von einer Windows 7 Anwendung
  • 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).
  • 19. Jede Anwendung muss deklarieren, welche Capabilities sie benötigt.
  • 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.
  • 27. Frage Wer von euch hat schon einmal mit C# gearbeitet?
  • 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

  1. 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.
  2. https://github.com/HorizonNet/DEMO-Windows8-FilePicker
  3. Der Windows Store installiert die App-Pakete ohne Benutzerinteraktion und kann sie spurlos wieder deinstallieren.
  4. 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.
  5. 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.
  6. Windows stellt dabei sicher, dass die Akkulaufzeit nicht leidet.
  7. 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.
  8. 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.