Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

De Silverlight à WinRT : Mesurez les différences grâce au “WinRT Genome Project”

[new:30/08/2012]Passer de Silverlight à WinRT est encore plus simple que depuis WPF tant les deux plateformes se ressemblent. Les deux sont sandboxées, et pour développer de Windows Phone 8 à Windows 8 Pro en passant par RT, C# et Xaml sont aujourd’hui clairement poussés par Microsoft (contre tout ce qui a été dit auparavant sur Html...). Mais quelle distance sépare Silverlight de WinRT ? C’est tout l’intérêt du “WinRT Genome Project” de répondre, au moins partiellement, à cette question.

WinRT Genome Project

Il s’agit d’un projet visant à comprendre le cœur de WinRT. Et puisque Silverlight en est si proche, le mieux est de comparer ces deux plateformes.

La question qui se pose d’emblée est de savoir jusqu’à quel point ces plateformes sont similaires ? Quelle est la quantité de choses nouvelles qu’il faudra apprendre pour qui connait Silverlight ou WPF ?

Tim Greenfield a tenté de répondre à ces questions. Il a commencé par écrire un programme qui balaye tous les assemblages par défaut de WinRT pour les comparer à leurs équivalents Silverlight.

Vous pouvez lire son analyse (en anglais) sur son blog “Programmer Payback”.

Types en commun

La première comparaison consiste à voir combien de types sont communs. Tim résume la situation par le schéma suivant :

image

WinRT est farci de milliers types différents ! 5978 comptés par Tim, ce qui est beaucoup au vu des 2189 que compte Silverlight, plus du double.

Mais cela est trompeur. Silverlight peu compter bien plus de types que cela dès qu’on ajoute toutes les librairies utiles à une vraie application : WCF Ria Services, le Toolkit, toolbox MVVM, etc.

Sur les 2189 types de base de Silverlight, 1582 sont commun avec WinRT et 607 ne se retrouvent pas dans ce dernier. Presque tout Silverlight se retrouve donc dans WinRT. Ici encore il faut nuancer les choses, 607 types non portés dans WinRT c’est par exemple toutes les classes servant à la gestion de la passerelle avec DOM ou l’Out of brower qui n’ont plus aucun sens sous WinRT. De même, les 4396 types de plus de WinRT intègrent de nombreuses nouvelles API pour gérer l’accéléromètre, les caméras, etc.

Membres en commun

Parmi les 1582 types communs, Tim s’est attaché à pousser la comparaison plus loin pour voir si la proximité de ces types est totale ou partielle, et quantifier la différence si elle existe.

Bien entendu, tout comme de nombreux types communs entre Silverlight et WPF possèdent des différences, on va retrouver des différences entre les types Silverlight et WinRT, ce que résume le graphique suivant :

image

Ici la nuance est plus faible, ce qui est naturel. Si un type est commun on peut supposer que le besoin l’est aussi et que les différences seront légères. S’il y a trop de différences alors le type n’est tout simplement pas commun...

Sur les 14597 membres recensés de WinRT, 10375 sont communs avec les membres équivalents de Silverlight (c’est la version 5 qui est prise comme base de calcul). Seuls 651 membres Silverlight ne sont pas dans WinRT. En revanche, les types communs entre les deux plateformes sont souvent mieux pourvus sous WinRT. 4222 membres apparaissent en plus sous WinRT pourtant sur des types communs à la base.

Pousser la comparaison plus loin

Bien entendu tout cela reste assez général. Mais ça donne tout de même une bonne idée de l’ensemble. De la distance entre Silverlight et WinRT, ce fameux delta qu’il faudra acquérir pour connaitre le second quand on connait le premier.

Mais Tim est allé beaucoup plus loin dans les comparaisons en produisant une différentiel classé par espace de noms et groupé selon que les types appartiennent à WinRT exclusivement ou à la partie commune avec Silverlight.

Cela se présente sous la forme suivante (exemple ici de l’espace de nom System.IO, avec la colonne SL5 et la colonne WinRT) :

image

 

Pour accéder au site de comparaison et à tous les espaces de noms, cliquez sur l’image ci-dessus...

Conclusion

Je vous ai déjà proposé récemment d’approcher WinRT par ses API. C’est le meilleur moyen de prendre connaissance d’une nouvelle plateforme quand on sait programmer. On y trouve des types, des membres, dont les noms parlent immédiatement, on apprend à se situer comme avec la carte géographique d’un nouveau lieu à découvrir.

Aucun pilote de rallye, aucun cycliste, aucune troupe armée, aucun randonneur sérieux ne se lance sur le terrain sans avoir étudier des cartes au préalable.

C’est aussi l’avis de Tim visiblement...

Aborder les choses par le gros bout de la lorgnette en plongeant dans des exemples de code sans avoir déjà une bonne idée du terrain sur lequel ils se reposent est une méthode facile, accrocheuse certes, mais pédagogiquement sans valeur.

Alors avant d’aborder WinRT par l’exemple, commençons par nous imprégner de ses espaces de noms, des types que propose son API, des similitudes et des différences avec Silverlight et WPF.

C���est une bonne entrée en matière. Sans la surévaluer, et malgré son austérité, ne négliger pas cette première approche. Quand nous verrons du code dans quelques temps vous apprécierez cette sensation de déjà vu...

Stay Tuned !

blog comments powered by Disqus