Tentons de mieux comprendre Live FX, Live Mesh et ses possibilités

image Je me rends compte au fur et à mesure que je présente Live Mesh (en version Beta ou CTP) que cela reste encore obscure pour beaucoup de gens. Je vous propose donc un post assez haut niveau qui résume ma propre compréhension suite aux nombreuses discussions que j'ai pu avoir sur le sujet ces derniers jours. Il complétera je l'espère mes 2 premiers posts sur le sujet ici et .

Unification de l'accès aux services Live : Live FX

Commençons par les services Live. Vous connaissez tous (j'imagine!) Windows Live Messenger, Live Search, Live Maps et les autres applications proposées par Microsoft en ligne. Ces applications reposent sur des services Live exposant des APIs diverses et variées pour vous permettre depuis vos applications d'accéder aux contacts d'un utilisateur depuis son Live ID (son identifiant sur notre plateforme Live), de mettre en place de la géolocalisation, de créer des Live Agents, etc. Pour information, les Live Agents sont une sorte de bots ou robots discutant avec vous via Messenger et vous répondant automatiquement ou enclenchant des actions. D'ailleurs sur ce dernier sujet, j'ai pu voir des démos bluffantes d'un agent Live vous permettant, via une session de chat, d'interroger votre librairie de documents SharePoint et de récupérer une copie d'un document via ce même canal. Bref, les scénarios entreprises existent bien autour de ces technologies souvent perçues comme uniquement grand public ou visant un jeune public.

Le Live Framework ou Live FX a pour vocation d'unifier et de simplifier la manière dont on va accéder à ces différents services. La brique de base par laquelle on va accéder aux services se nomme le Live Operating Environment.

image

Ce LOE (Live Operating Environment) ou environnement Live est hébergé dans le nuage. Vos applications y accèdent ensuite via le protocole standard HTTP. Ainsi, que vous soyez développeurs sur la plateforme .NET ou Silverlight, développeurs Java ou JavaScript, vous pouvez bénéficier des services Live à travers ce framework intermédiaire. Ce LOE est essentiel pour 2 autres raisons :

1 - il existe de manière symétrique au Cloud sur les machines clientes de type Windows Vista, XP, Mac OS X, Windows Mobile 6 et bientôt d'autres.

2 - il s'occupe de gérer la synchronisation entre vos différents périphériques de vos différents contenus entre différents utilisateurs

C'est donc ce pilier essentiel qu'utilise Live Mesh.

Live Mesh : une application Live FX

Mais c'est quoi Live Mesh bon sang?!? Live Mesh est une application permettant de résoudre l'équation que l'on rencontre désormais fréquemment dans notre vie numérique :

Plusieurs ordinateurs (boulot, maison, famille) + Pleins de contenus (photos, documents) + Accessibles n'importe où (on-line ou off-line) + Plusieurs utilisateurs (collègues, amis, famille) = Live Mesh.

La notion de Mesh est représentée sous la forme d'un anneau contenant l'ensemble des périphériques que vous utilisez fréquemment. C'est également au travers de ce Mesh que vous allez spécifier la manière dont ces différents périphériques vont discuter ensemble:

1 - Via un espace de stockage mutualisé dans le nuage et disponible au travers du Live Desktop. Cet espace disponible dans nos datacenters Azure représente 5 Go de stockage à l'heure actuelle et bientôt 30.

2 - Directement entre périphériques en Peer-To-Peer sans passer par le Live Desktop si vous souhaitez partager du contenu supérieur à 5 Go.

image

A l'heure actuelle, nous sommes toujours en Beta et vous pouvez tester cette application sur https://www.mesh.com . Le client Mesh est disponible pour Vista/XP, Mac OS X & Windows Mobile 6.

Voici un exemple de Mesh où l'on retrouve mon téléphone, mon PC Media Center, mon PC de bureau et le Live Desktop:

image

Voici le Live Desktop:

image

Et voici comment spécifier les modes de synchronisation:

image

Pour vous aider à mieux comprendre, voici un scénario d'usage:

- Imaginez vous être en déplacement à l'étranger et vous prenez une superbe photo avec votre téléphone Windows Mobile
image- le répertoire où se retrouve stockée la photo est synchronisé dans votre Mesh. On distingue les répertoires synchronisés dans le Mesh à travers son icône bleu différenciant (sur la gauche ici). 
- le PC de votre tendre épouse et celui de vos enfants sont inscrits dans votre Mesh et synchronisent ce même répertoire
- tout le monde peut vivre en temps réel votre voyage

On peut même imaginer un cadre photo-numérique comme faisant parti du Mesh et affichant alors automatiquement la photo que vous avez prise de l'autre coté de la planète!

Je connais d'autres personnes qui utilisent le mode P2P de Live Mesh aujourd'hui afin de sauvegarder leurs dizaines de Gigaoctets de photos de leur PC principal vers le PC d'un autre membre de la famille.

A noter: Live Mesh vous permet également de prendre le contrôle à distance des machines tournant sous Windows.

Et les développeurs dans tout ça ?

Comme je le disais dans mes 2 autres posts, nous avons enrichi le modèle de Live Mesh via une CTP accessible ici : https://developer.mesh-ctp.com en proposant une nouveauté de taille pour nous développeurs: la possibilité de créer sa propre application tournant dans le Mesh:

image

L'idée est donc d'écrire son application 1 seule fois et que cette dernière tourne telle quelle n'importe où: à l'intérieur d'un navigateur ou Offline dans Windows. Bien sûr, l'intérêt est énorme. Cela maximise votre investissement de développement et réduit très fortement les coûts de maintenance.

En effet, lorsque l'on y réfléchit, on retrouve souvent le scénario suivant:

- une expérience en ligne à travers le navigateur
- une expérience plus riche à travers un client Windows
- une expérience nomade avec Windows Mobile

Tout cela en permettant aux utilisateurs de s'identifier et de partager entre eux

Quelles sont les difficultés de couverture de ce scénario ?

1 - Écrire du code pour chacun des 3 clients (ASP.NET, WPF, Compact FX par exemple)
2 - Gérer la synchronisation des données pour couvrir le mode déconnecté
3 - Gérer les droits et l'authentification des utilisateurs

Juste pour le 2ème point, nous savons très bien la complexité que cela engendre: maintenir la cohérence et la mise à jour des données entre le web, le client riche et le client nomade n'est pas chose aisée.

L'hébergement dans Live Mesh et l'utilisation des services Live FX sous-jacents offrent justement des solutions à ces challenges. La 1ère difficulté est traitée en ne faisant qu'un seul développement pour les 3 clients (en Silverlight 2 par exemple). C'est tout le but de Live Mesh. La 2ème grâce aux services fournis nativement par Live FX. Enfin la 3ème grâce à l'utilisation combinée de la plateforme Live ID à celle de Live FX.

Voici l'illustration par l'exemple de l'application Corkboard livrée par défaut avec la CTP de Live Mesh:

L'application en mode on-line dans le Live Desktop

Au sein du navigateur IE 8:image 

Au sein du navigateur FireFox:image

On voit également ici que j'ai partagé cette application avec Pierre. On peut alors partager nos notes et elles se synchronisent automatiquement sur chacun de nos clients.

L'application en mode on-line ou off-line sur le bureau Windows

L'application Mesh s'est également automatiquement synchronisée sur mon PC Vista. Ainsi, que je sois connecté à Internet ou non, je peux lancer l'application grâce à la présence de ce raccourci sur mon bureau:

image

Et voici le résultat une fois lancée:

image

Si je crée une nouvelle note alors que je ne suis pas connecté, cette dernière sera tout simplement synchronisée de manière transparente dans le Mesh la prochaine fois que je me connecterais.

Pour terminer, j'ai eu une proposition intéressante de parallèle dernièrement entre les 2 notions Live FX/Live Mesh. En effet, j'ai constaté une confusion fréquente entre les 2.

On pourrait voir Live FX comme socle pour Live Mesh comme l'est Win32 pour Windows Vista. Ensuite, vous avez 2 choix qui s'offrent à vous comme dans le monde Windows "classique". Soit vous créez une application tirant parti uniquement du jeu d'APIs de bas niveau (pour un service Windows par exemple), soit vous bénéficiez de services additionnels en créant une application plus riche (tirant parti de WPF de Vista pour une meilleure expérience utilisateur). C'est la même idée pour Live. Soit vous utilisez Live FX dans une application cliente riche pour accéder aux contacts, effectuer une recherche ou utiliser un des autres services. Soit vous créez une application Live Mesh et vous bénéficiez alors d'un environnement d'exécution plus riche supportant des scénarios de online/offline, capable de tourner sur plusieurs périphériques (PC, Mac, Mobile ou Live Desktop) et offrant un modèle social de partage. Tout dépend du niveau de services dont vous aurez besoin.

Les blogs à lire:

- Angus Logan, responsable technique des services Live: https://blogs.msdn.com/angus_logan/ et celui de l'un de ses collègues: https://blog.arash.cc/
- James Senior, relation développeurs (comme moi) sur Live : https://blogs.technet.com/james/
- Redo, MVP & RD: https://blogs.developpeur.org/redo/ très actif sur le sujet

J'espère avoir clarifié la situation. :)

David - Meshified - Rousset