Windows 8 Store Apps (HTML5/JavaScript) – CSS ist nicht gleich CSS

imageBei der Arbeit an einer Windows 8 Store App die ich mit HTML5 und JavaScript realisiere, bin ich auf folgendes Problem gestoßen (welches ich hier bereits auf Facebook gepostet habe):

Doch zuerst einmal ein kurzer Ausschnitt des Markup bei welchem das Problem auftritt:

<body>
	<div id="itemTemplate">
		<figure>
			<img id="profile-image" src="images/smalllogo.png" />
		</figure>
		<div>
			<span data-win-bind="innerText: text">Testen</span>
		</div>
	</div>
</body>

Im zugehörigen Stylesheet sind unter anderem folgende Styles definiert:

figure {
    margin: 0px;   
}

#itemTemplate figure img {
    margin: 30px;
}

So wie die Styles definiert sind, sollte das Image Element mit der ID “profile-image” eine Margin von 30px auf allen Seiten vorweisen.

Das funktioniert auch wenn man es in einem Browser aufruft (Sogar der IE funktioniert hierbei korrekt Smiley ).

imageWenn man diese Formatierung allerdings in einem “HTML5/JavaScript Windows a Store App” (was für ein BegriffTrauriges Smiley ) verwendet, greift der Style “#itemplate figure img” nicht in dem Image Element, welches in dem Figure Element eingebettet ist, sondern die Margin Einstellung des übergeordneten Elementes Figur hebt die Formatierung des darin eingebetteten Image Elementes auf.

Ein erstes kleines Fazit dabei ist, dass man sich nicht darauf verlassen kann, dass der zuletzt definierte Style tatsächlich Verwendung findet.
Wenigstens dann nicht wenn man übergeordnete globale Element Formatierungen verwendet.

Windows 8 – Irrweg oder einfach ein Irrer Weg

Es ist nun eine Woche her (13.09.2011), das Microsoft in Anaheim / Florida auf der “BUILD Windows” das Geheimnis um Windows 8 gelüftet hat.

Nun liegen die Fakten um Windows 8 auf dem Tisch!

  • Doch stehen die Fakten mit der Präsentation von Windows 8 wirklich fest?
  • Was wurde uns eigentlich als Windows 8 verkauft?
  • Worüber freuen wir uns?
  • Worüber ist die eine oder andere Gruppe betrübt?

Um diese Fragen und die meine Wahrheit um Windows 8 zu klären,  müssen wir aber auch die jüngere Vergangenheit vor der Öffentlichen Präsentation von Windows mit einbeziehen.

Denn die eigentliche Geschichte um Windows 8 beginnt bereits einige Wochen vor der BUILD in Anaheim.

Was ist in den letzten Wochen wirklich geschehen:

In den Tagen und Wochen vor der BUILD wurde viel Spekuliert.
Teilweise wurden echte Schreckensszenarien vermittelt.
Leider wurde auch von, sonst sachlich und nüchtern berichtenden Kollegen, mit Meldungen wie den folgenden Schlagzeilen gemacht:

  • HMTL 5 und JavaScript werden zur Standard Sprache zur Entwicklung von Desktop Anwendungen
  • Silverlight wird als Technologie nicht mehr unterstützt
  • Die Zukunft um WPF ist ungewiss
  • .NET wird es nicht mehr geben oder aussterben und damit wird auch C# und VB verschwinden
  • HTML 5 und vor allem JS sind die “must be” Sprachen für jeden Entwickler, sonst ist für Ihn/Sie der Zug abgefahren.
  • …. und ganz vieles Mehr.

Unabhängig davon, ob und wie viel davon tatsächlich irgendeiner Wahrheit nahe kommt, haben all diese Überlegungen und Gerüchte darauf basiert, dass davon ausgegangen wurde,  dass mit Windows 8 direkt von einem Nachfolger des Windows 7 wie wir es Heute kennen, einem reinen Desktopbetriebssystem,  gesprochen wird.

Doch was haben wir auf der BUILD wirklich vorgestellt bekommen?

  • Eine zu groß geratene Ausgabe von Windows Phone WP7
  • Ein neues Tablet Betriebssystem
  • Der Nachfolger des Windows 7 Desktop Betriebssystems

Ein wenig von allem!

Präsentiert hat uns Microsoft natürlich “das Neue”, das was man direkt sieht, das was vollkommen anders ist wie bisher, das was dem aktuellen Trend entspricht, das was Hype verspricht, das was ….

Das was präsentiert wurde, war die “Metro Style Oberfläche”

win8 - metro

Und dieses neue, ist doch genau das, was uns entweder empört oder begeistert hat.

Je nachdem welcher Zielgruppe man angehört, findet man diese Neuerung als “vollkommen abgefahren”, “Super Innovativ”“vollkommen daneben” oder als “Weltuntergang”.

Und ich glaube es gibt mehr Zielgruppen als wir uns das momentan überhaupt vorstellen können.

Allerdings sind die Zielgruppen, die sich bisher mit Windows 8 beschäftigt haben und sich öffentlich darüber geäußert haben, doch eher die aus dem Umfeld derer, welche sich mit der Entwicklung von Software beschäftigen, und für all diese, oder besser gesagt für die meisten von diesen, bedeutet Neuerung und Veränderung natürlich erst einmal die Angst vor Verlust.

Angst vor Verlust, Angst davor dass Wissen das man sich Jahrelang angeeignet hat, nicht weiter verwenden zu können.

Und wenn ich mir das anschaue, was Microsoft uns auf der BUILD als WIN 8 präsentiert hat, dann habe ich als Entwickler von Business Anwendungen (Egal ob als Web Anwendung, Desktopanwendung oder im Backend als Server Anwendung) im ersten Moment auch diese Angst (ganz kurz) verspürt.

Doch als analytischer Mensch lässt man sich natürlich nicht von einem Schauer der einem über den Rücken läuft lähmen und man beginnt die Sache, in diesem Fall Windows 8, mit dem notwendigen Abstand und der notwendigen Sorgfalt von den verschiedensten Seiten zu betrachten.

Ich habe die letzte Woche genutzt um mir Windows 8 genauer anzuschauen und mir Gedanken über die Auswirkungen von Windows 8 auf meinen Job als Entwickler zu machen.

Nachfolgend hierzu meine Gedanken und Thesen.

Metro Style Apps

Metro Style Apps sind nur auf Geräten mit Touch Bedienung sinnvoll einzusetzen.

Microsoft hat als Vision, dass es in Zukunft nur noch Geräte mit Touch Interface geben wird, und daher auf jedem Gerät Metro Style Apps sinnvoll eingesetzt werden können. Dem möchte ich auch nicht wiedersprechen, doch denke ich nicht, dass wir diese Zukunft noch dieses Jahrzehnt erleben werden.

Metro Style Apps werden für mich, meinen Job und meine Kunden mit oder ohne Windows 8 (damit meine ich die nächsten 2 – 3 Jahre) noch nicht wirklich eine entscheidende Rolle spielen.

Metro Style Apps werden weder Heute noch Morgen (mal schauen was übermorgen geschieht und ob dann noch jemand von Metro Style Apps spricht) als Ersatz für Rich Client Desktop Anwendungen im Büro und Produktionsstätten geeignet sein.

Wenn solche Art von Apps überhaupt für Rich Client Anwendungen eingesetzt werden sollten, wird das sicherlich noch bis Ende des Jahrzehnts und darüber hinaus dauern.

Um es nicht später zu vergessen:

Einen Wunsch an Microsoft bezüglich Windows 8 und der Metro Style Oberfläche hätte ich aber schon:

Hallo Microsoft, lasst bei der Installation von Windows 8 per Option entscheiden, welchen Desktop man als Standard verwenden möchte, den Metro Style oder den Standard Desktop  (WIN 7 Like)

Und eines noch Microsoft, solltet Ihr auf die Idee kommen, die in der Windows 8 Preview vorhandenen Möglichkeit, durch Änderung eines Registry Eintrags ein “Windows 7 Like” Startmenü zu bekommen, aus dem Final Release von WIN 8 gänzlich zu entfernen, sage ich euch mit WIN 8 ein zweites VISTA voraus (auf  jeden Fall auf Desktop PCs)

win8 - api

WinRT

Mit der WinRT stellt Microsoft den zentralen Baustein für die neue Metro Style Oberfläche zur Verfügung.

WinRT wird nicht als zusätzlicher Framework sondern als integraler Bestandteil des Betriebssystems betrachtet.

Ob WinRT wirklich eine Lösung oder mehr ein Problem ist, wird sich im Laufe der Zeit zeigen.
Ich finde es, Stand Heute sehr gewagt mit WinRT auf eine Technik wie COM (auch wenn es ein objektorientierter modernerer Ansatz ist) zurückzugreifen, die man vor fast 10 Jahren, aus guten Gründen, durch die .NET Technologie abgelöst hatte.
Einzig die Tatsache dass es in WinRT außer den WinRT eigenen DLLs keine gemeinsamen Bibliotheken gibt lässt mich hoffen, dass es kein zweite DLL Hölle geben wird.

Wer in Manage Code C# oder VB Metro Style Apps schreiben will muss sich im klaren sein, dass man dabei starken Beschränkungen unterliegt, da die WinRT nur eine Teilmenge der .NET Klassen zur Verfügung stellt.

Dinge wie direkte Dateizugriffe, Zugriffe aufs Dateisystem oder auch zugriffe auf eine Datenbank wie SQL oder andere sind nicht direkt möglich.

Um Beispielsweise auf eine Datenbank zugreifen zu können muss man sich zuerst einen Web Service erstellen, den man dann über die WinRT aufrufen kann.

Damit die Metro Style Apps immer den Eindruck hervorrufen dass Sie auf Benutzereingaben sofort reagieren, wurde in der WinRT darauf geachtet, dass alle Aufrufe die im allgemeinen länger als 50 ms dauern Asynchron aufgerufen werden.

.NET (C# 5 und VB)

.NET ist also noch nicht tot.

Neben Metro Style und dem damit zusammenhängenden WinRT wurde auch am .NET Framework gearbeitet.

Das .NET Framework 4.5 wird zusammen mit Windows 8 ausgeliefert (gibt es aber auch für Windows 7).

Zusammen mit dem Framework gehen auch die Managed Code Sprachen C# und VB in die nächste Versionsrunde.

  • C# 5.0
  • Visual Basic 11.0

Die umfangreichste Erweiterung der Sprachen besteht wohl in der Implementierung der await und async Schlüsselwörter und der damit einhergehenden Vereinfachung der Asynchronen Programmierung.

Die Zukunft von .NET dürfte wohl für die nächsten Jahre zumindest für “echte” Desktop Anwendungen” sowie natürlich für Web und Backend Anwendungen, gesichert sein.

HMTL 5 und JavaScript

Weder HMTL 5 noch JavaScript, und auch nicht die Kombination der beiden Sprachen, sind eine Erfindung von Windows 8.

Jedoch wird diese Kombination sicherlich nicht nur für die Web Entwicklung immer interessanter und wer sich bis Heute nicht damit beschäftigt hat, ist sicherlich gut beraten sich mit diesem Thema in näherer Zukunft auch ein wenig auseinanderzusetzen.

Ganz sicher dann, wenn man nicht nur Backend Programmierung betreibt.

Silverlight

Meiner ganz persönlichen Meinung nach, sieht die Zukunft von Silverlight nicht so rosig aus. Ich denke dass Silverlight mittelfristig zu den Klassischen Verlierern zählen wird und weder weiter entwickelt noch auf ewig weiter unterstützt werden wird.

Rich Web Applikationen können mit anderen Technologien wie HTML 5 zusammen mit JS auf der Client Seite erstellt und zusätzlich noch durch MVC oder ähnliche Technologien (evtl. auch mal durch node.JS) Serverseitig unterstützt werden.

Wenn man sieht, dass der IE10 in der Metro Style Variante keine Add Ins und somit kein Silverlight und kein Flash mehr unterstützt, muss man nur 1 und 1 addieren um sich über die Zukunft on SL seine Gedanken machen zu können.

Mein Tipp: Wenn du merkst, dass du ein totes Pferd reitest, steig ab!

Resümee und Weisheiten

Die Suppe wird nie so heiß gegessen wie Sie gekocht wird.
.NET lebt auch nach Windows 8 weiter, wir müssen nicht alle sofort nur noch HTML 5 und JS Programme schreiben

Der Markt und die Akzeptanz regelt im allgemeinen ganz viel alleine (Siehe VISTA), also wenn Windows 8 letztendlich wirklich nur per Touch ordentlich zu bedienen sein wird, dann wird es vermutlich ein Tablet OS aber kein Nachfolger für Windows 7

Warten wir mal ab wie Windows 8 in der Final Release dann wirklich auf den Markt kommt.

Eines habe ich übrigens vergessen, und das ist der bisher positivste Aspekt des neuen Windows:

Windows 8 startet um ein vielfaches schneller als jede andere Windows Version die es bisher gab.

Abschließen möchte ich, auch wenn dies kein Bericht über ein Fußballspiel war, mit den Worten eines großen Deutschen Fußballers:

Nach dem Spiel ist vor dem Spiel!

Freuen wir uns schon mal auf die Gerüchte und Aufregung um Windows 9.