WinRT und .NET native oder IL?

Immer wieder kommt es zu Diskussionen was denn nun? Ist eine Windows 8 METRO APP native oder .NET? Die berühmte Marketing Grafik von Microsoft zu dem Thema finde ich persönlich wenig erhellend.

Es gibt aber auch eine bessere.

image

Die Runtime bietet eine Reihe von Funktionen per API an, wie z.B. Datei lesen und schreiben. Wer Komponenten für die WinRT schreiben möchte, kann dies per C++ tun. Das Modell ist an COM angelehnt.

Auf der Runtime kann stand heute in mindestens drei verschiedenen Frameworks programmiert werden. Dabei handelt es sich bei der CRT (Common Runtime) um echtes .NET mit all seinen Eigenschaften wie automatische Garbage Collection, Intermediate Language und den Sprachen VB.NET und C#. Microsoft spricht von einem limitierten .NET Profil, da der Funktionsumfang erheblich geringer ist. Es ist auch nicht möglich .NET Assemblies außerhalb des Profils zu referenzieren. Die Beschreibung derselben erfolgt in einem neuen Format WinMD (Windows Metadata).

Für den Entwickler ist es oft nicht ganz leicht zu erkennen ob er gerade einen WinRT API Call durchführt oder eine .NET Funktion aufruft. Wichtigster Hinweis sind die Namensräume die mit System für .net und Windows für WinRT beginnen. Dies ist von erheblicher Bedeutung, da die Datentypen zwischen WinRT und .NET unterschiedlich sind und vom System per Projektion automatisch gemappt werden müssen. In der folgende Tabelle werden einige davon genannt und man sieht das die WinRT Typen gerne mit I beginnen.

Windows Runtime

.NET Framework

IIterable<T>

IEnumerable<T>

IIterator<T>

IEnumerator<T>

IVector<T>

IList<T>

IVectorView<T>

IReadOnlyList<T>

IMap<K, V>

IDictionary<TKey, TValue>

IMapView<K, V>

IReadOnlyDictionary<TKey, TValue>

IBindableIterable

IEnumerable

IBindableVector

IList

IObserableVector

ObservableCollection


Offene Frage ist, welche Performance Auswirkungen der zusätzliche .NET Framework Layer hat. Nicht verifizierte Aussagen behaupten, das HTML/JavaScript Anwendungen schneller sein könnten. Grundsätzlich ist ziemlich wahrscheinlich, das es unterschiede gibt. Wenig wahrscheinlich ist, das diese eine Rolle spielen.

Kommentar schreiben