Session présentée par Guillaume Brout (http://www.guillaumebrout.fr) et une seconde personne dont je n’ai pas noté le nom, qui renvoyait sur http://www.itelios.com, une SSII spécialisée dans le e-commerce.
On commence par une présentation rapide de l’architecture WinRT :
Fichiers WinMD qui exposent les fonctionnalités COM : WinRT est à comparer à Win32, à savoir qu’il s’agit de fonctionnalités de base du système, appelées en JavaScript, en C++ ou en .NET. Pour rendre l’interop possible, ce ne sont pas des wrappers statiques, mais dynamiques qui sont créés, en se basant sur l’exposition des fonctionnalités par ces fameux fichiers WinMD, qui permettent de manipuler les objets COM sans avoir à recourir aux affres des interfaces IUnknown et consorts.
Intégration d’une application à l’OS par des vignettes dynamiques, comme par exemple le contrôle du son accessible depuis partout en surimpression.
Recherche, partage et paramétrage sont faits par contrats avec l’OS et les “charms”. Dans VS, on ajoute une classe de contrat, et il faut aussi déclarer dans le manifeste la fonctionnalité exposée.
On en revient toujours au découplage : après avoir séparé les transitions visuelles de l’application, Microsoft est allé plus loin en découplant ces contrats, ce qui paradoxalement permet une meilleure intégration au final, car toutes les applis suivent le même contrat et le résultat est donc homogène pour l’utilisateur.
A voir : NotificationsExtensions sur MSDN pour avoir des helpers pour les notifications de type toast.
Le point un peu décevant dans cette session : on ne parle performance qu’à partir de la 37ème minute, alors que le titre laissait à penser que c’était le but principal. Surtout, rien de vraiment bouleversant : du bon retour d’expérience, mais pas révolutionnaire. Par exemple, réaliser le stockage dans IsolatedStorage pour les faibles volumes, et dans une base de données embarquée SQLLite pour RT pour les cas plus conséquents.
Pour ce qui est des données à sauver au niveau applicatif, on peut utiliser la classe Windows.Storage.ApplicationData. On peut utiliser l’Extension Manager de VS pour intégrer SQLLite dans les références de l’application.
Autre point d’attention : l’asynchronisme. L’asynchronisme devient parallélisme en utilisant les Tasks. Pour ne pas casser la fluidité par la pagination, on utilise des collections virtuelles, qui se chargent au fur et a mesure du scrolling. Classe VirtualCollection disponible sur internet, utilisant les IObservableVector. Là encore, un tout petit peu de déception (ce n’est pas une critique, je sais à quel point c’est difficile de préparer une session, et quasi impossible de satisfaire tout le monde) : on n’a pas vu en profondeur à quoi il fallait faire attention pour ne pas perdre en perf à cause de l’asynchronisme. Le conférencier a expliqué que si on tombait dans un mauvais pattern, ça pouvait baisser la performance plutôt que de l’augmenter, mais il n’a pas expliqué lequel.
Heureusement, ça a été fait dans une autre session, qui est d’ailleurs également revenue avec une approche plus standard sur les collections virtuelles.