Build 2015 – Day 2

Par Benoît,
Pôle .Net MCNEXT

Bonjour à tous,

Suite de la Build avec la deuxième journée.
Cette fois-ci direction la nouvelle API Microsoft Ink avec la recherche de nouveaux scénarios de saisie au stylet et au doigt.
Le projet « Centennial » abordé lors de la première Keynote a eu sa session pour en aborder les contours.
Enfin, retour au code avec une session technique pour améliorer les performances en XAML.

Benoît

Lire la suite

Build 2015 – Day 1

Par Benoît,
Pôle .Net MCNEXT

Bonjour à tous,

Après la keynote qui nous a tant surpris de part les avancées technologiques de Microsoft (HoloLens,…) que ses choix stratégiques (Android et iOS au sein du store), les sessions ont débuté.

Aussi vous trouverez ci-joint un compte rendu pour chacune des 4 sessions auxquelles j’ai pu participer en cette première journée. J’ai suivi un parcours plutôt orienté XAML, mais au-delà la techno, ces sessions ont été une manière de voir les orientations fonctionnelles et design pour W10.

1 – Strategies for developing cross-platform applications with VS 2015
Une session traitant du développement multiplateforme grâce à Xamarin et Cordova.

2 – What’s new in XAML for Universal Windows Apps
Un point sur les nouveautés XAML introduit par W10, entre contrôles universels, nouveau binding et layout responsive.

3 – Data Binding : Boost your app’s performance through new advancement to XAML Data Binding
Introduit lors de la précédente session, le nouveau binding compilé est ici étudié en profondeur.

4 –  UX Patterns and Responsive Techniques for Universal Windows Apps
Cette ultime session de la journée fait le point sur les bonnes pratiques du design d’Universal App (qui reprend nombre de guidelines Windows 8).

Bonne lecture ! Benoit

Lire la suite

Build 2015 – App to app communication

Les mécanismes présents pour le moment pour la communication entre applications sont assez limités. Ils reposent principalement sur l’activation par protocole ou par fichier.

Avec Win10 on a davantage de possibilités. Notamment avec quelques améliorations sur l’activation par protocole. On peut par exemple préciser le package family name de l’application ciblée, mais surtout avoir un retour de l’application en appelant « LaunchUriForResultsAsync » plutôt que « LaunchUriAsync ». L’application qui déclare le protocole doit indiquer dans son manifeste que le protocol peut renvoyer un résultat.

On peut aussi vérifier qu’un protocole ou une extension de fichier est bien supporté par une application sur le système, ou invoquer un protocole en précisant quel est l’application ciblée à travers son package family name.

Dorénavant, on a également la possibilité de partager des fichiers entre plusieurs applications avec l’API SharedStorageManager. Cette API permet par exemple de générer un jeton d’accès sur un fichier. Les applications qui possèdent ce jeton vont pouvoir accéder au contenu du fichier sans avoir besoin d’utiliser un file-picker ou autre.

Une autre nouveauté pour la communication entre application est le système de « App Services », avec lequel une application peut exposer des services aux autres applications. Un « App Service » est une tâche de fond particulière, qui va pouvoir gérer un mécanisme de requête / réponse.

Un « App Service » ne reste pas en mémoire, il est instancié à la première demande et arrêté automatiquement par le système.

Ces nouveaux mécanismes de communication vont nous permettre de débloquer beaucoup de scénarios, notamment dans les applications métier.

Build 2015 – Using Azure Search to build great search experiences

La recherche est devenu un moyen naturel d’accéder à l’information. Azure Search est un service Azure permettant de créer des modules de recherche dans lesquelles on va pouvoir indexer des contenus pour permettre de la recherche. Comme tous les services Azure, la recherche est géoréplicable et propose de l’elasticité sur les ressources. Le service propose une version gratuire qui contient toutes les fonctionnalités mais un nombre limité de requêtes.

Comme la plupart des outils de recherche Azure Search fonctionne en créant et alimentant des index, dans lesquels on définit une schéma de données, en déclarant des champs. Ces champs vont porter des méta données qui vont indiquer le type (string, int, point géographique, …), et définir le comportement des champs lors de la recherche (searchable, filterable, retrievable, …). Les champs peuvent également avoir des paramètres linguistiques, du stemming (réduction des mots selon des critères phonétiques), et des analysers spécifiques ou provenant de Lucene.

Le service permet de faire de la recherche pur, ou en mode suggestions (pour des usages type autocomplete).

Pour alimenter l’index, on peut pousser manuellement des données dedans avec une API Rest (possibilité de faire des batchs avec jusqu’à 1000 doucments, en mode CRUD), ou configurer une synchronisation des données avec Azure Document DB, ou SQL Azure.

Build 2015 – The « Microsoft Edge » rendering engine that makes the Web just works

Le moteur d’Internet Explorer a 20 ans (1995), mettre en place de nouvelles versions sans altérer la compatibilité devenait un réel problème, et la gestion de la compatibilité un frein à l’innovation et aux performances. Les navigateurs concurrents ne se posent pas ces contraintes… il était donc temps pour Microsoft de faire place nette.

Le moteur de Edge est issu de celui de Trident (le moteur HTML de IE), mais il a subit un gros nettoyage avec la suppression de certaines fonctionnalités anciennes (ex: attachEvent) et de tout ce qui touchait à la compatibilité avec les version séculaires de IE. Edge s’aligne ausi sur le comportement implémenté dans les autres navigateurs pour que les sites fonctionnent correctement, même si ils sont alignés sur les spécificités de webkit.

Edge implémente aussi beaucoup de nouvelles choses. La liste est longue et l’idéal est de consulter status.modern.ie pour se faire un aperçu complet.

Si vous jetez un oeil à cette session, vous pourrez voir des démos de css filters (post processing d’un noeud du DOM avec des shaders déclarés en css), @support (feature detection en css), srcset (gestion des images selon la résolution), svg foreign objects (incorporer du HTML dans du SVG), et HTTP 2 (multiplexage des requêtes, …).

La session se termine par une petite démo de Vorlon.js, un nouvel outil dans la ligné de choses comme weinre, pour diagnostiquer et auditer très facilement une application web, quel que soit son mode de fonctionnement (Cordova, web, web mobile, etc).

Build 2015 – JavaScript frameworks in your apps and sites from WinJS and beyond

Cette session permet de voir les dernières évolutions apportées à WinJS et son utilisation dans les Windows web apps, à travers une petite application. Elle aborde ensuite l’utilisation des contrôles de WinJS dans les frameworks les plus « hot » du moment, en portant cette même application, avec Knockout, Angular, et React.
C’est un panoram interessant, bien que superficiel, des frameworks front-end du moment.

Build 2015 – User Data : Working with Contacts, appointments, text messages and more

Windows 10 introduit de nouvelles API pour interagir avec les entités les plus fondamentales pour un utilisateur : contacts, agenda, appels, sms, messages, etc… toutes ces entités manipulées par les applications fournies dans Windows comme People, mail ou Cortana. Les API utilisées par ces applications sont maintenant exposées dans WinRT.

L’objectif est de pouvoir manipuler et requêter ces entités et les données associées (historique des appels par exemple). Pour le moment, tout n’est pas accessible sur toutes les entités. L’entité la mieux couverte niveau API celle concernant les contacts.

Une application peut attacher des données supplémentaires sur les entités, ou créer des conteneurs (datastore) qui lui sont spécifiques. Ces données peuvent n’être visibles que par l’application, ou partagées avec les autres. Les datastores proposent des fonctions avancées comme le tracking de modifications, ainsi que des évènements particuliers, dans l’application, et pour certains types d’entités, le déclenchement de tâches de fond.

Build 2015 – ma première application holographique (avec Hololens !)

Après deux jours de conférence, tout espoir de toucher à Hololens me semblait perdu. J’ai eu la bonne surprise de recevoir un message 5 minutes avant le début d’une session pour participer à 1h30 de développement d’une application pour Hololens !!!

Difficile de refuser…

Pour cette petite application, le moteur 3D utilisé fut celui d’Unity 3D. Ce petit training a consisté en un pas à pas permettant d’appréhender les différents aspect de Hololens comme les inputs (regard, gestures, voix), l’affichage d’un modèle en 3D et son positionnement dans l’espace, la découverte de ce que voient les Hololens, la gestion du son spatialisé, etc.

Dès qu’on passe les premières étapes de l’atelier et qu’on a quelque chose d’interactif, on bascule tout de suite dans quelque chose de très immersif. J’apprèhendais un peu des effets de tremblotements, ou que les modèles 3D ne soient pas bien synchronisés avec les éléments du monde réel mais pas du tout. Tout est stable et à sa place, et le reste même quand on se déplace. La reconnaissance vocale fonctionne bien du premier coup, malgré mon accent francais. Les gestures sont faciles à appréhender et bien reconnues.

L’atelier se termine par une dernière scène dans laquelle une des interactions fait un trou dans le sol dans le monde réel. A travers ce trou, on peut observer un monde virtuel… Je peux vous garantir que toute les personnes qui se trouvaient dans la pièce (moi inclus) ont fini à genou ou quasi à plat ventre pour observer ce qui se passe de l’autre côté.

La seule chose qui dégrade un peu le côté immersif est la taille de la zone d’affichage. Elle semble un peu petite au premier abord, d’autant plus qu’on a le réflexe de bouger les yeux plutôt que de bouger la tête.

Malgré ce petit détail, cette première expérience avec Hololens a été vraiment bluffante. Le pari d’une expérience simple, intuitive et immersive est réussi, et on ne peut que laisser aller son imagination sur la multitude d’usages que l’on peut faire d’un tel outil. Tant au niveau professionnel qu’au niveau domestique.