How-to: become fast and fluid

Herausforderungen und Möglichkeiten bei der Entwicklung von Windows 8 Apps (Teil 3)
Kommentare

Windows Developer

Der Artikel „How-to: become fast and fluid“ von Roman Schacherl ist erstmalig erschienen im Windows Developer 4.2012
Reagieren
Jetzt ist es uns Entwicklern endlich gelungen, die Benutzer

Windows Developer

Der Artikel „How-to: become fast and fluid“ von Roman Schacherl ist erstmalig erschienen im Windows Developer 4.2012

Reagieren

Jetzt ist es uns Entwicklern endlich gelungen, die Benutzer mit schön animierten Ladebalken daran zu gewöhnen, dass manche Aktionen eben einige Sekunden dauern und unsere Anwendung während dieser Wartezeit auch auf nichts anderes reagieren möchte – und dann kommt Touch. Touch-Oberflächen müssen reaktiv sein. Wo bisher Sekunden akzeptiert wurden, sprechen wir nun von Millisekunden, bis ein Benutzer die erste sichtbare Reaktion erwartet. Bleibt diese aus, glaubt er, dass entweder die Berührung nicht fest genug war, der vermeintliche Touch-Monitor vielleicht gar keiner ist oder die Anwendung abgestürzt ist. Die Lösung für nicht reaktive Benutzeroberflächen kennen wir schon lange: asynchrones Programmieren; den UI-Thread von rechenintensiven Aufgaben befreien. Die Umsetzung war aber mühsam, denn das Registrieren von Callback-Methoden trägt nicht unbedingt zur Lesbarkeit des Quellcodes bei. Mit .NET 4.5 (also auch für die „klassische“ .NET-Entwicklung verfügbar) wird in C# und VB ein neues Schlüsselwort eingeführt, das Sie lieben werden: await. Vor den Aufruf einer asynchronen Methode geschrieben, bewirkt es, dass der Compiler den nachfolgenden Quellcode in einen Callback verschiebt. Hinter den Kulissen bleibt alles wie bisher, aber die Lesbarkeit des Programms steigt enorm. Aber Achtung: await erstellt keine Threads, es hilft nur, die Asynchronität zu verwalten. Listing 1 zeigt einen synchronen beziehungsweise asynchronen Aufruf ohne await, im Vergleich dazu sehen Sie in Listing 2 einen asynchronen Aufruf unter Verwendung von await.

Listing 1: Synchroner / Asynchroner Aufruf ohne await

private static void AsynchronousProgrammingBeforeAwait()
{
  // Synchroner Aufruf
  // Die Service-Methode wird synchron aufgerufen und blockiert
  MyServiceClient service = new MyServiceClient();
  var resultSync = service.GetMyData();

  // Asynchroner Aufruf
  service.GetMyDataCompleted += (sender, eventArgs) =>
    {
      // Dieser Bereich wird ausgeführt, 
      // sobald die Antwort des asynchronen Aufrufs eintrifft.
      var resultAsync = eventArgs.Result;
    };
 
  // Die Service-Methode wird asynchron aufgerufen,
  // die Antwort wird über das Completed-Event bereitgestellt.
  service.GetMyDataAsync();
}  
Listing 2: Asynchroner Aufruf mit await

private async static void AsynchronousProgrammingWithAwait()
{
  // Asynchroner Aufruf
  // Die Service-Methode wird asynchron aufgerufen
  MyServiceClient service = new MyServiceClient();
  var resultSync = await service.GetMyData();
  // Dieser Bereich wird ausgeführt, 
  // sobald die Antwort des asynchronen Aufrufs eintrifft.
}  
Interagieren

Erinnern Sie sich an die Zeiten, als Smartphones noch keine Zwischenablage kannten? Apps waren Insellösungen, eine Telefonnummer aus der einen App in die andere App zu bringen, war nur durch eine manuelle Zwischenablage in Form eines Notizblocks möglich. Und selbst seit unsere Handys dazugelernt haben, so richtig praktikabel ist die Miniaturzwischenablage auch nicht. Windows 8 Apps sollen anders sein. Als Entwickler können Sie verschiedenste „Contracts“ implementieren und dadurch mit anderen Apps interagieren beziehungsweise Ihre App noch besser in das Windows-8-Ökosystem integrieren. Einer für alle, alle für einen. So ist es beispielsweise möglich, Ihre Anwendung als Anbieter für die Suchfunktionalität unter Windows 8 zu registrieren. Sucht der Benutzer nach einem Begriff, hat er die Wahl, ob er das Betriebssystem, den Internet Explorer oder eben Ihre App mit der Suche betrauen will. Die Implementierung ist denkbar einfach: Fügen Sie einen SearchContract zu Ihrem Projekt hinzu, Sie erhalten automatisch eine Vorlage für die Ergebnisseite und eine überladene Methode in der App-Klasse namens OnSearchActivated.

Zum Austausch von Daten bietet sich der Share-Contract an. Egal, ob Sie die Quelle sind (Daten anbieten) oder das Ziel (Daten empfangen): Von einfachen Texten und Bildern bis hin zu strukturierten Datensätzen (z. B. von [4]) können Informationen zwischen Apps übermittelt werden, die keinerlei Kenntnis voneinander haben. Es bleibt spannend, wie ausgiebig die App-Entwickler dieses Feature nutzen werden. Theoretisch könnte man damit ein markiertes Zitat im Internet Explorer zur Twitter App, Bilder von der Flickr App zum Puzzlespiel oder Adressdaten von der Telefonbuch-App zur CRM App wandeln. Die klare Empfehlung lautet: Sorgen Sie dafür, dass Ihre App möglichst viele Informationen als Quelle bereitstellt, aber nur für sehr ausgewählte Formate als Zielanwendung auftritt.

Noch einen Schritt weiter als der Share-Contract geht der FilePicker-Contract. Er ermöglicht die Integration in den Standarddateiauswahldialog und gibt Ihrer App die Möglichkeit, quasi als Datenlieferant aufzutreten. Ihre App könnte beispielsweise Vorschaubilder von Produkten anzeigen: Sobald der Benutzer ein Bild ausgewählt hat, kümmern Sie sich um den Download des hochauflösenden Bildes und übergeben es an das Betriebssystem. Wenn der Benutzer in Zukunft ein Produktfoto benötigt, verwendet er bequem Ihre App zur Suche und fügt das gewünschte Bild direkt in der Ziel-App (E-Mail-Client, Bildbearbeitung, Facebook) ein, ohne lästiges manuelles Zwischenspeichern. Der Vorteil gegenüber dem Share-Contract: Dateiauswahldialoge hat so ziemlich jede Anwendung, für den Share-Contract sind Sie auf die Hilfe der Gegenseite angewiesen. Versuchen Sie in der „World of Apps“ mitzuspielen und interagieren Sie mit Windows 8 und anderen Apps. Ihre Benutzer werden es Ihnen danken.

Animieren

Die schönste App ist nutzlos, wenn sie nicht aufgerufen wird. Bisher hatten wir als Entwickler nur die Möglichkeit, unsere Anwendung mit einem prächtigen Icon beim Setup möglichst penetrant an allen Orten zu platzieren: Desktop, Schnellstartleiste, Startmenü. In Windows 8 können Sie die starren, pixeligen Icons zum Leben erwecken: Die so genannten Live Tiles sollen den Benutzer einladen, die App zu starten. Zeigen Sie aktuelle oder userspezifische Inhalte an (Abb. 2), im besten Fall mit Fotos unterstützt. Natürlich können Sie auch weiterhin ein schlichtes Bild als Start-Icon wählen, aber der erste Eindruck … Sie wissen schon. Und apropos erster Eindruck: Wenn es Sinn macht, können Sie sogar bereits auf der Anmeldeseite des Benutzers Präsenz zeigen und wichtige Hinweise hinterlassen (z. B. die Anzahl der ungelesenen Nachrichten).

Abb. 2: Live Tiles ermöglichen die Anzeige aktueller oder userspezifischer Inhalte
Abb. 2: Live Tiles ermöglichen die Anzeige aktueller oder userspezifischer Inhalte
Resümee

Gehört unser Ururenkel des Xerox Alto nun endgültig ins Museum? Nein, natürlich nicht. Es wird weiterhin zahlreiche Anwendungen geben, in denen Maus und Tastatur perfekt Sinn machen; in denen man den Cursor präzise positionieren möchte und nicht „irgendwo in der Nähe“; in denen Dateneingabe eine zentrale Rolle spielt. Verwenden Sie weiterhin die gewohnten Technologien, alle Anwendungen, die unter Windows 7 funktioniert haben (genauer: Windows 7-zertifiziert sind), funktionieren auch unter Windows 8 (das versicherte Steven Sinofsky in seiner Keynote auf der BUILD-Konferenz). Aber mit Windows 8 Apps kommt eine zusätzliche Option für die Entwicklung von Anwendungen ins Spiel:

  • Wenn Touch-Bedienung eine zentrale Rolle spielt,
  • wenn es eher um die Anzeige vorhandener Daten, als um die Eingabe neuer Daten geht,
  • wenn die Anwendung auf Tablets genauso funktionieren soll, wie auf gewöhnlichen Desktop-PCs, oder
  • wenn Sie die Software über den Windows Store verteilen wollen:
    dann sollten Sie Windows 8-Apps für ihr nächstes Projekt im Hinterkopf haben. Nur ein Downloadlink trennt Sie von den ersten Versuchen [5].

Viel Spaß in der neuen Welt!

Roman Schacherl ist Gründer der Firma smilecompany software solutions (www.smilecompany.at) und entwickelt individuelle Lösungen auf Basis von Microsoft-Technologien. Er ist Autor mehrerer Fachartikel zum Thema Windows 8, nebenberuflich Lehrender an der FH Hagenberg (Österreich) und als Sprecher auf Entwicklerkonferenzen tätig.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -