Bonjour,
Voici deux semaines se tenaient les Microsoft Tech Days à Paris, et OCTO y était. Voilà un comtpe rendu des séances auxquelles nous avons assisté, garanti sans langue de bois. Merci à Sofian, Maxence et Vincent pour leurs retours.
Retour sur Rx (reactive extensions)
Session intéressante sur l’utilisation du framework Rx par Mitsuru Furuta et 2 personnes de chez Thalès.
Pour rappel, Rx est une librairie développée par Microsoft (non comprise en natif dans .NET) permettant de faire de la programmation asynchrone sur des listes d’objets suivant le pattern Observer/Observable.
Rx a été poussé puisqu’il n’y avait pas d’uniformité sur les outils/frameworks de développement asynchrone.
Le principe est de pouvoir utiliser les mêmes outils dispo pour les IEnumerable (Linq query) sur des listes observables. On passe d’un modèle « push » (je fais un foreach sur une liste et pour chaque élément j’envoie une action) à un modèle « pull » (je prépare mes conditions pour observer des évènements sur une liste et dès qu’ils apparaissent, je lance un event asynchrone et mes clients font leur traitement associé).
Un exemple : j’ai une liste de clients. Lorsqu’un texte saisi change je veux pouvoir effectuer une action. En Rx ça donnerait :
var input = (from event in Observable.FromEvent<EventArgs>(text, "TextChanged")
select ((TextBox)event.Sender).Text)
On peut ajouter des conditions puisqu’on est en Linq (je veux envoyer une notification seulement si le texte est égal à « toto », etc…).
Pour en revenir à la session, la première partie était une intro assez générique sur la nécessité de faire de la programmation parallèle (arguments classiques du type : faut pas freezer les UI !) et une introduction à Rx.
Le reste de la présentation était axé autour de code Rx (développement d’un Timer puis d’un comportement de drag & drop d’une forme géométrique). On a vu durant cette démonstration un large panel d’opérateurs utilisables sur les listes d’observables (on peut ajouter plein de filtres/conditions/comportements sur notre requête Linq).
Des exemples de requêtes effectuées : on drag uniquement si on bouge la souris autour d’une certaine zone autour de la forme, on notifie le changement d’un texte au bout de x millisecondes seulement s’il n’a pas changé…
Mon retour : présentation intéressante mais trop focalisée sur les exemples (j’ai trouvé qu’on passait trop de temps à faire un drag & drop au lieu de parler par exemple du IScheduler ou d’autres points de Rx). Bonne présentation globalement.
The Future of F#
Cette présentation de Don Syme (lead Microsoft sur F#) avait pour but de présenter l’avancée du langage fonctionnel de Microsoft.
Petit rappel : F# est un langage fonctionnel basé sur le framework .NET. La syntaxe est quasi identique à celle du OCAML (let rec x = … match …) en reprenant également les principales features (pattern matching, type inference…).
F# garde donc également des caractéristiques des langages orientés objet en plus de l’utilisation du framework .NET (ex : linq).
La première partie de la session était une présentation de F# et des bénéfices de l’utilisation d’un langage fonctionnel. Don Syme a cité les banques d’investissements comme principaux consommateurs du langage. Effectivement, les caractéristiques de F# en font un langage adapté au milieu de la programmation parallèle (typage safe et immutable, closures, asynchronisme sans gestion de threads par le développeur, currying permettant l’exécution parallèle de fonctions…).
On peut retrouver du F# dans des moteurs de calcul de risque financier. Don Syme a avancé un nombre de 120 développeurs chez Crédit Suisse faisant du F# pour du code « analytique ».
F# est testable unitairement (pas de démo sur ce point).
Revenons à la session. Suite à la présentation « F# as of today » de Don Syme, démonstration de l’utilisation de F# via un proto sur Windows Phone. Très peu de code a été montré, on a surtout vu un mec bouger son WP7 pour tester l’accéléromètre et faire afficher des graphiques. Il semblait vouloir nous montrer la possibilité de gérer des évènements (accéléromètre) en F#. Peu de code, très brouillon… cette partie n’a pas été utile à mon goût.
La 3e partie de la session était orientée sur WebSharper pour F#. WebSharper est un framework de développement web pour .NET. Sur la version F#, les développeurs ont la possibilité d’écrire du code F# qui sera mappé sur du JS par le framework (via un attribut [JavaScript]). Il y a quand même la possibilité d’utiliser du JS directement avec la compatibilité vers notamment jQuery et Yahoo UI.
Sur le F#, WebSharper ajoute la notion de « Formlet ». Un formlet est un type de page proposant des fonctionnalités de formulaire (controles UI, gestion de la validation client/server).
On a également eu la présentation des « sitelets » qui sont des conteneurs de pages selon le pattern MVC « bijectif » (une requête déclenche une action mais une action côté serveur peut également lancer une requête avec le même code).
Dernière partie de la présentation par Don Syme sur le futur de F#. Grosse déception pour ma part sur cette partie. Don Syme n’a parlé que d’une « factory » sur le cloud Azure offrant des types de données.
Concrètement, on a un DataProvider sur le cloud qui permet de manipuler des structures de données définies (objet « Baseball » utilisable en Baseball.Joueur.Caracteristique…). Il y a un Marketplace sur ces données où les développeurs ont la possibilité de réutiliser des modèles de données pour une interopérabilité totale dans un monde idéal.
Le seul rapport avec F# est que le langage est capable de faire de l’inférence de type.
Mon retour : assez déçu de cette présentation. Etant moins documenté/intéressé par les langages fonctionnels je pense que je n’aurais pas été convaincu par « F# c’est trop bien en finance ». Peu d’exemples, des arguments flous (ex : on peut faire du TU. Point.) et quasiment pas de code montré avec une petite interlude publicitaire pour WebSharper.
Patterns et bonnes pratiques Silverlight/WPF
Présentation de 3 personnes de la boîte So@t sur les pratiques d’architecture en Silverlight et WPF.
La présentation a commencé par une explication du pattern IoC et de deux conteneurs : Unity et MEF (Managed Extensibility Framework). Les deux conteneurs ont été opposés et la conclusion est qu’Unity est en mode centralisé (il faut connaître toutes les classes/interfaces) alors que MEF est en mode décentralisé (mode plugin, on charge des assemblies et c’est parti).
Ensuite, une explication du pattern MVVM avec un mini-débat sur « view first » vs « view-model first ».
La présentation s’est poursuivie avec une très brève introduction à Prism pour enchaîner sur un produit de leur boîte : SoPrism. SoPrism est une librairie de templates pour Visual Studio générant des projets sur le pattern MVVM et Prism.
Ce qui est généré : une arborescence de projet, des références vers des DLL dans tous les sens.
Mon retour : j’étais vraiment déçu par cette présentation qui n’a absolument pas parlé d’anti-patterns (bonnes pratiques par rapport à quoi ?!) et qui a surtout servi à présenter leur outil « SoPrism ».
De plus, la présentation était brouillon et par moment fausse (ex : je préfère le view-model first puisqu’on ne peut pas mocker de données dans une vue). De mon point de vue la session n’était absolument pas alignée avec son titre (qui était pourtant alléchant).
TFS Basics : en route vers l’ALM
ALM = Application Live Management
N’ayant jamais travaillé avec TFS j’avais envie de découvrir ce que c’était. Du coup il y a surement plusieurs choses évidentes que j’ai tout de même noté.
Donc, une présentation globalement pas passionnante mais au moins les intervenants n’étaient pas nuls : ils venaient d’une boite de Toulouse nommée Bewise.
Sur les 50 personnes dans la salle il y avait environ 7 personnes qui utilisait TFS sur leur projet.
TFS Basic est une plateforme plus légère et facile à installer que la version de TFS classique. Différentes méthodologies sont implémentées dedans (Agile, CMMI, Scrum,…) et la personnalisation des Work Items permet de les adapter au besoin. Un plugin existe pour permettre aux managers de gérer les projets depuis Excel.
Le controleur de code source présente 2 fonctionnalités notamment mises en avant durant la présentation :
- Des espaces de travail privé / public permettant d’utiliser le même repository pour plusieurs personnes
- La possibilité d’archiver des fonctionnalité non finie
Il a voulu d’ailleurs bien faire noter la différence entre Version Control et Visual SourceSafe… Qui n’a pas très bonne réputation apparament (c’est du ressenti : car je ne l’ai jamais utilisé).
Le build TFS peut lancer les Tests Unitaires sur le poste de travail avant de valider l’archivage (ça doit éviter pas mal de commit pourri). On peut « personnaliser » le build grâce au Workflow foundation (ce qui est plus « sexy » pour l’intervenant).
Enfin on a eu droit à une démo ratée à la fin ou le mec n’arrivait plus à faire ce qu’il voulait (un import de projet vers TFS si je me souviens bien…).
MED-V2 (Microsoft Enterprise Desktop Virtualization 2)
Présentation inutile pour une personne non intéressé par le sujet comme moi…. J’avoue que je suis allé la voir uniquement parce que j’ai rencontré un ancien octo et nouveau consultant MS (Nicolas Mangin) et manqué la présentation sur PowerShell (grrrrrrrrrrr : quelqu’un est allé la voir ?).
Mais bon en gros c’est un système plus poussé que le XP Mode de Windows Seven.
L’autre chose que j’ai apprise est que 14h30 était le créneau le plus complet pour les présentations… Sur 5 présentations qui avaient l’air intéressantes on s’est fait recaler à 5.
Choisir une technologie d’accès aux données distantes
Au coeur de Windows 7 et Windows 2008 Server R2
Windows 7/Windows Server 2008 R2 : plongée profonde au coeur de RemoteFx
Jeux vidéos
Cloud Your Phone:
Unification des développements Win/Web/Phone
Performances et Optimisation d’application Windows Phone
- la mise à jour (NoDo) de Windows Phone 7 sera publiée début mars 2011
- d’autres mises à jour suivront courant 2011 avec entre autres :
- le multitâche « intelligent » avec un basculement très rapide entre les applications
- l’arrivée d’Internet Explorer 9 sur Windows Phone 7 qui gèrera parfaitement HTML5 et l’accélération matérielle. Une démo en direct a montré des performances largement en faveur de IE9 sur le rendu d’une animation en HTML5 par rapport à Safari Mobile sur iPhone
- Amélioration de l’intégration de Skydrive pour une meilleure connectivité et 25 Go d’espace de stockage
- Evolution d’Office Hub pour une meilleure utilisation des services Cloud
- Kinect devrair arriver sur Windows Phone : une démo a présenté des joueurs utilisant leur Windows Phone comme écran secondaire et tactile en complément du Kinect
- l’annonce du chiffre d’un million de développeurs ayant déjà téléchargé le kit de développement d’applications Windows Phone, de 27 000 développeurs déclarés et de 7 500 applications publiées
- et bien sûr l’alliance entre Nokia et Microsoft afin de pouvoir aux 2 grands de s’épauler mutuellement face à la concurrence de l’Android de Google et les iOS d’Apple.