WinRT pour les nuls

Description de la plateforme à la base des applications Metro sous Windows 8.

Avec l'interface Metro/Modern UI, Microsoft retient à sa façon les leçons données par Apple et veut changer entièrement son modèle de système d'exploitation. D'une part les applications à installer devront être téléchargées sur la boutique en ligne (l'AppStore) de Microsoft d'autre part leur programmation se fera sur une plateforme entièrement nouvelle, la WinRT (Windows Run Time) et une interface tactile.

Diagramme du modèle de programmation WinRT

L'AppStore permettra à Microsoft de prélever un pourcentage sur les logiciels aussi ce n'est pas une bonne nouvelle pour les développeurs. En outre il sera ainsi plus difficile de diffuser ses programmes.

L'exposé ci-dessous montrera que WindRT sonne le glas d'une certaine liberté pour les développeurs, selon un modèle initié par Apple, tout en offrant des possibilités nouvelles pour ceux qui acceptent d'entrer dans le jeu.

WinRT remplace .NET et Silverlight

Silverlight est un framework qui comprend un sous-ensemble de .NET, et qui est portable. WinRT est prévu pour fonctionner sur Windows 8 uniquement. C'est une plateforme conçue à partir de zéro, sans aucun souci de compatibilité ce qui permet de la rendre performante. Mais aussi cela place Windows 8 en concurrence avec d'autres OS sans l'avantage des applications, tout au moins sur tablettes.

En fait l'API .NET, ou plus précisément un sous-ensemble sera toujours présente dans WinRT. Mais cela ne fonctionnera plus de la même façon à cause du mode asynchrone et de la sandbox.

WinRT fonctionne coté client

Contrairement à .NET qui peut s'installer sur un serveur, WinRT est un consommateur de services web, mais non un fournisseur. Microsoft continuera donc à concevoir des systèmes classiques pour les serveurs.

Plusieurs types d'interfaces sont supportés

Modern UI est une interface tactile, mais on peut aussi utiliser la souris et le clavier. C'est à WinRT qu'incombe la charge de supporter ces périphériques et les connecter aux fonctions des applications.

HTML 5 devient natif dans Modern UI

Le navigateur est une des applications de Modern UI, et donc une application HTML 5 peut fonctionner sur cette interface mais sur d'autres OS aussi. Cependant Microsoft tend à utiliser le terme "HTML 5 natif", ce qui veut dire que l'utilisation de HTML 5 dans Modern UI est liée à Windows 8, l'application ne sera pas portable. Des fichiers sont distribués par Microsoft pour aider à réaliser ces applications HTML pour Modern UI, et comme ils sont interfacés avec l'API de WinRT, bien que dans le standard HTML 5 elles ne fonctionneront pas sur d'autres systèmes

Les applications sont toutes asynchrones

C'est un problème qui n'est pas pris en compte dans l'environement classique parce que la vitesse d'exécution locale ne le rend pas crucial, mais qui peut apparaître dans certains cas: l'utilisateur n'aura jamais à atteindre qu'une tâche soit terminée pour en lancer une autre. Dans le cas de certains logiciels graphiques, c'est utile.

Le mode asynchrone n'est même pas optionnel comme cela l'est avec Ajax (il suffit d'activer un drapeau pour passer en synchrone). Il est automatique et dépend d'un délai: à partir d'un certain temps mis par le système à répondre, l'action devient asynchrone et l'utilisateur reprend la main. C'est la fin des blocages. Les programmeurs devront s'habituer à la programmation asynchrone et peuvent regarder comment fonctionne F# pour un aperçu.

Les applications fonctionnent en sandbox

Autrement dit chaque application à son propre environnement d'exécution avec sa mémoire et ne peut pas interférer avec les autres. Si un programme est bloqué par une bogue dans le code, cela n'affecte pas le système ni les autres programmes.

Les projections permettent de réaliser des composants universels

Une projection dans le langage de Microsoft est la façon dont l'API est utilisée. Elle peut l'être avec un langage compilé, interprété ou les deux à la fois ce qui est le cas de C#. C'est aussi une interface (binding) pour un langage particulier. Le système définit lui-même la projection qui convient, et cela permettra d'offrir une plateforme unique pour les divers types d'applications: les applications XAML avec différents langages, les applications HTML et JavaScript.

Un avantage de ces projections automatiques est que les composants construits dans un langage (par exemple C#, C++) sont utilisables directement par les autres langages (C#, C++, HTML 5 et JavaScript). La création des composants a par ailleurs été simplifiée.

Voir aussi