What’s New in Visual Studio & Blend for XAML Developers (3-321)

Session animée par Unni Ravindranathan

La session commence par le fait que l’on apprend que les templates de création de projet ont été mis à jour.

Édition du xaml

  • Améliorations de l’éditeur
  • Nouvelle expériences dans Blend
  • Amélioration dans la performance et la robustesse du designer

Diagnostics

  • Détection des problèmes de responsivité de l’UI
  • Profiling de la consommation d’énergie

Debug d’async

Windows Azure Mobile Services Integration

Store integration

Coded UI testing

.NET

  • Possibilité de voir la valeur de retour des méthodes dans la watch
  • 64 bit edit and continue est maintenant supporté

C++

  • Améliorations de l’éditeur

API Deprecation

  • Ajout du support de la dépréciation des API dans le XAML aussi

Démo Hub avec toutes les nouvelles fonctionnalités de VS2013

Partie spéciale Blend :

  • Retour des behaviors dans Blend
  • Ajouts des règles et des guides dans Blend qui peuvent se réutiliser de page en page
  • Amélioration de la partie device
  • Retour et amélioration de la partie Data
  • Gestion des commandbar
  • Édition des Template avec les données courantes

Une session très intéressante avec pas mal de fonctionnalités que l’on attendait pas/plus.

John Thiriet

What’s new for XAML (2-164)

Session animée par Tim Heuer

Débute une session énumération de nouveautés

Nouveaux contrôles

  • TimePicker et DatePicker

Flyouts

  • Contrôle de Flyout même en markup avec la propriété attachée Flyout
  • Contrôle MenuFlyout

SettingFlyout contrôle qui fait le truc par défaut

Thèmes

  • RequestTheme dans chaque élément ca permet de Template chaque Flyput différemment
  • Ajout de ThemeResource à la place de StaticResource

Hub

  • Hub, HubSection (une sorte de grille groupée)

CommandBar, AppBarButton

  • PrimaryCommands à gauche
  • SecondaryCommands à droite
  • SymbolIcon avec un nom et plus un code
  • FontIcon
  • BitmapIcon
  • PathIcon

SearchControl

Media

  • Nouvelle API pour la gestion des médias avec le truc de base

Graphics

  • SwapChainPanel

WebView

  • Correction de la webview pour ne plus être en premier plan tout le temps
  • Lecture de html local
  • NavigationStarting, NavigationCompleted, NavigationFailed
  • Custom uri
  • Possibilités de l’animer

RenderTargetBitmap

Performance

  • Startup
    • DeferLoading des ressources avec clef
    • Chargement tardif des thèmes respurces
    • Primitive composition
    • Xaml Binary Format
  • ListView et GridView performance Startup et panning

Test and Input

  • Hyperlink est de retour
  • Améliorations variées de textblock et textbox
  • Améliorations des API de manipulation
  • Feeling scroll areas dans le Scrollviewer

Binding

  • TargetNullValue
  • FallbackValue
  • Access to BindingExpression

Navigation

  • NavigationStack

Others

  • Multiple DPI
  • HIGH contrats awareness
  • Accessibility
  • FlipView animations improvements
  • Pdf render api
  • 650+ api

Une session très intéressante à voir absolument !

John Thiriet

What’s new for Working with files (2-119)

Session animée par Marc Wautier

Cette session va présenter comment on travaille avec les fichiers utilisateurs

Rappel sur le FilePicker pour accéder aux fichiers ainsi qu’aux capabilities

Rappel des concepts clefs sur le stockage des fichiers

Présentation des nouveautés

NeighbouringFilesQuery

UserLibrary : StorageLibrary

Navigation facilitée dans les namespaces

Découverte de contenus : StorageLibrary : Abonnement sur des dossiers ou fichiers pour surveiller des modifications

Démo ouverture d’une application via le clic droit sur un fichier et ouvrir avec.
Démo intégration de fichiers située sur Skydrive

En bref agrégation de fichiers et dossiers distants ou locaux et situés hors du scope de l’application

On parle pas mal du fait que Skydrive est intégré à Windows 8

Introduction des placeholder files : Représentent des fichiers distants qui n’ont pas de copie locale

Vérifier la présence des fichiers en local : StorageFime.IsAvailable et la refléter en local.

Bien penser à mettre des progressring car maintenant si on va chercher des fichiers sur skydrive ça met beaucoup plus de temps qu’en local.

Utilisation des thumbnails pour les images : StorzgeItem.GetScaledImageAsThumbnailAsync

John Thiriet

Keynote – Day 1

C’est toujours plaisant de retrouver Steve Ballmer sur scène, même si cette année son discours avait moins d’humour !

Pour commencer, la preview de Windows 8.1 et des autres outils sont disponibles sur http://preview.windows.com.

Globalement pas de vrais grosses surprises autour de Windows 8.1, ceux qui avaient regardé la vidéo du Computex 2013 ont retrouvé les mêmes annonces :

  • Le retour du bouton démarrer
  • La possibilité de booter directement sur la partie Desktop
  • Un swipe up depuis l’écran de démarrage pour afficher toutes les apps installées
  • Des fonds d’écrans animés
  • La possibilité de lancer Skype ou prendre une photo depuis le lockscreen sans avoir à se logguer
  • Un clavier visuel amélioré avec de nouvelles gestures pour une saisie plus rapide comme le choix d’un mot recommandé avec un swipe sur la barre espace ou la saisie d’un nombre avec un swipe up sans basculer sur le mode numérique
  • Le mode Hands Free qui détecte des mouvements via la caméra pour naviguer
  • On peut désormais ouvrir 4 apps en même temps (x2 si on a un second moniteur)
  • L’annonce pour l’automne d’une nouvelle version des apps Mail et XBox Music + une nouvelle version de PowerPoint
  • Et bien sûr la nouvelle recherche intégrant Bing et les apps déjà installées dans une même fenêtre de résultat, avec la possibilité de lancer un action directement depuis cet écran

Une chose important à noter est que tous les speakers ont insisté sur le fait que les apps Desktop sont toujours là, et qu’elles gardent une place très importante dans les usages sur Windows. Il est vrai que depuis la sortie de Windows 8, les apps Desktop (qui constituent toujours le plus gros volume d’apps sur la plateforme) avaient un peu disparues du discours officiel.

Le store qui va avoir droit à une application complètement relookée a dépassé les 100 000 apps. L’installation des updates va pouvoir être automatique.

Côté matériel, toujours plus de touch et de devices hybrides, et aussi un nouveau format : les petites tablettes. On va d’ailleurs revenir avec une tablette 8 pouces Acer, qui ira très bien avec la Surface Pro aussi en cadeau !

Une nouvelle version de Visual Studio arrive avec notamment des outils de diagnostic de performance et un debug amélioré des appels asynchrones.

Autre annonce, le support de natif Web GL (3D) et MPEG-Dash (vidéo HD) dans IE11 et dans les apps Modern UI.

Et pour finir, la plateforme Bings va s’ouvrir aux développeurs en proposant des API pour intégrer plein de features intéressantes dans nos apps : cartographie, imagerie 3D, OCR, traduction et bien sûr de la recherche.

Pierre-Yves.

Windows Phone 8 : Enterprise Development

Et voilà, ma dernière session pour la build. La salle est pleine…

Le but est de permettre aux entreprises de déployer de manière sécurisé et privée des applications.

-> Pas d’interaction avec Microsoft

-> Contrôle de quelle app sont déployées sur quel phone

-> Mécanisme d’enrôlement sécurisé

  • L’installation nécessite la confirmation de l’utilisateur mais pas les mises à jour
  • Les deux types d’applications (entreprise et marketplace) sont séparées et les données aussi
  • L’entreprise à le contrôle de ses apps pas celle du marketplace

Création du compte et obtention du certificat :

–  C’est la première étape : l’entreprise doit disposer d’un compte (Microsoft portail)

  • Prix 99/Year

–  Le certificat est obtenu auprès de symantec (le certificat servira à signer les apps)

  • Le certificat contient
    • un PublisherId qui identifie l’entreprise
    • Un Publisher Name
    • Une période de validité
  • Prix 299/year

Enrolement et déploiement de l’application

– Il y a une différence entre le fait que le téléphone soit géré ou pas par un serveur d’entreprise :

  • Cela affecte la méthode de déploiement, la capacité de faire l’inventaire des applications, la possibilité de faire des updates silencieux …

Managed Enrolment :

– Au niveau du téléphone on rentre un compte d’entreprise et l’adresse du serveur de gestion du parc

Il n’y a pas de certification pour les applications d’entreprise, l’entreprise est responsable et ne passe pas le MarketPlace. On peut utiliser le kit de test.

Processus de déploiement :

  • L’application est NGENée
  • Signée
  • Déployée dans le store de l’entreprise
  • Déployée sur le téléphone avec un protocole sécurisé

Quand une application est lancée : il y a une vérification d’effectuée pour savoir si le publisher est autorisé puis le téléphone peut contacter (une fois par jour) la plateforme de gestion qui valide l’application / device

Sujet suivant : mettre en place un Hub d’entreprise

  • Il faut d’abord générer un token qui va identifier l’entrerprise
  • On part d’unpfx
  • On utilise un outil AETGenerator
  • On obtient un fichier aetx à déployer sur les phones.
  • L’ensemble des app doivent être signés
  • Lors de la signature on signe les dll,exe et le XAP (XAPSignTool)

Installer / lister les applications :

  • On peut installer/lister les apps avec InstallationManager.AddPackageAsync / FindPackagerForCurrentPublisher()

Cet appel est effectué depuis une application installée sur le device et signée avec le même certificat.

Roch

Windows Phone 8 : App to App communication

On commence par une introduction sur le mode “sandbox” introduit par Windows phone et les conséquences : à savoir que les applications ne peuvent pas directement interagir directement ensemble. Cependant au fur et à mesure certaines fonctionnalités ont été autorisées.

-> Une des premières fonctionnalités sont l’association d’applications à des URI au travers d’un préfix (scheme) custom.

-> Les possibilités sont par exemple d’activer skype.

Une autre fonctionnalité est l’association avec des types de fichiers qui permet d’activer directement l’application en fonction du type de document.

Première démo : intégration de lien vers des documents office dans une application et ouverture dans office.

-> On utilise Launcher.LaunchFileAsync

NB : il s’agit ici d’une fonctionnalité de visualisation

Attention il n’est pas possible de connaitre la liste des applications installées et dans le cas ou l’application cible n’est pas installée c’est l’OS qui propose de rechercher une App adéquate sur le store.

Deuxième démonstration :

  • Lancement d’un jeu à partir d’un SMS

Exemple ici : activation d’un niveau dans le jeu par sms

Exemple sms : unite :level=10

Quand on reçoit le sms le texte est en fait un lien …

  • Les protocoles se déclarent dans le manifest dans la balise Extensions.
  • On utilise ensuite un URIMapper pour résoudre l’URI

On revient ensuite sur l’explication du fonctionnement des associations  de fichier.

  • Le principe est que l’application source obtient un token de partage de son fichier avec le « Data Sharing Service » et passe l’uri avec un token au « Execution Manager ». Cela permet de ne partager une copie du fichier qu’avec l’application cible.

Démonstration : gestion d’un  type de fichier custom

-> Dans le manifest on crée dans la partie Extensions une entrée SupportedFileType qui contient les différents types de fichiers associés (type mime + extension)

-> On crée ensuite un UriMapper pour associer l’Uri entrante avec une page et passer le token du fichier

-> On appel le SharedStorageAccessManager pour récuperer le fichier avec le token

Sujet suivant : il est possible avec la même technique de lancer une application sur un autre téléphone avec les fonctionnalités  Proximity (NFC)

-> Cela se fait de la même manière. Il n’y a pas de besoin d’utiliser les api Proximity sur l’application cible

-> Sur l’application source on utilise PublishUriMessage (api Proximity)

Roch

Key technologies for Windows Store Business apps

Après avoir poser la question, le Self Service Portal doit sortir en beta dans les prochains jours (d’abord avec Windows InTunes, puis SSCM).

Autre remarque pour Guillaume : l’application Directors Desk par Nasdaq utilise le composant FoxIt Reader pour les PDF.

Il y a trop de gens : on change de salle !!

Session par Robert Green, technical evangelist.

L’agenda : data, sécurité & authentification, test, déploiement

# Où stocker ses données ?

On fait le tour des solutions avec les scénarios associés :

  • locales (App Data API, IndexDB, SQLite… pas d’annonce de version SQL Server)
  • distantes

On trouve des samples sur dev.windows.com

Première démo : My expenses

L’app se connecte via du WCF sur SQL Azure, et on nous montre comment rajouter un mode offline avec du SQLite en gérant la synchro par code.

Détection de la connectivité avec NetworkInformationProfile.GetInternetConnexionProfile()

Démo avec l’app W8 Fabrikam Fiber

Il existe une version du Sync Framewok « synctoolkitwinrt » pour créer les config de synchro, mettre à jour sa base avec les tables de tracking et générer le code de synchro côté client ET serveur.

Le sample sera livré « bientôt »

# Sécurité & authentification

On fait maintenant le tour des modes d’authentification : Integrated, certificate, form, ADFS, SSO, OAuth…

Démo d’une authentification sur une machine dans le domaine (directement) et une qui n’y est pas avec affichage de l’interface de login Windows

On affiche la fenêtre de login via un CredentialsPicker et on remplit app.WindowsAuthUserName, app.WindowsAuthPassword et app.WindowsAuthDomain

Démo avec une authentification via une Smart Card + le code qui va avec + les étapes de config

Démo avec une authentification Microsoft Live Account via le OnlineIdAuthenticator

On a aussi tout ce qui faut pour protéger/crypter les données.

# Test

Il n’y a pas encore de Coded UI Tests pour W8, mais ça devrait venir.

On peut toujours faire des tests manuels avec l’aide de Test Manager 2012.

Démo de debug en remote

Il faut d’abord installer les Remote Tools fo VS2012 sur la machine cible et démarrer le debugger

# Déploiement

Démo avec du powershell sur une tablette RT

2 mots avec SCCM 2012

On nous dit qu’on peut tout faire, mais ça reste pas très clair

# Q&R

On ne peut pas forcer l’installation d’une app sur une tablette RT

Quand le certificat de l’app expire, l’app ne peut plus se lancer, ça peut être un moyen de bloquer une app

Pour faire du QA, il faut utiliser des licences développeurs

Bonne session notamment les démos sur l’authentification !

Pierre-Yves

Unit Testing Windows Store Apps

Cette session commence par un état des lieux du test logiciel :

  • Peu utilisent une méthodologie de Test-First
  • Certains testent pour éviter les régressions
  • Pas mal de tests sont ajoutés à du code existant pour que le management se sente mieux.
  • La majorité du code est non testé afin que le management se sente mieux.

Il existe plusieurs MSTest :

  • .Net
  • Native C++
  • Managed Code Windows Store Apps
  • Native Code Windows Store Apps

S’ensuit une démo des tests unitaires pour une application Windows Store. Dans cette démo on nous parle des ordre de priorité des tests (Echoué, Passé, Réussi). Il y a un CTP à télécharger pour avoir toutes les options disponibles pour les tests. Ajout du sppport de xUnit, NUnit, Specflow. Il est possible d’utiliser tous ces framework en même temps et d’avoir les résultats dans Visual Studio.

Quelques mots sont donnés sont les améliorations de la performance et du test continu disponible. On a la possibilité de filtrer et trier  les test en fonction du projet, du nom, du temps d’exécution et autres.

Un nouvel attribut, Owner, permet d’ajouter un groupe dans le test explorer et donc de grouper plus facilement les tests. On a aussi l’attribut Property qui permet aussi de créer des groupes dans le test explorer mais personnalisés cette fois.

On a maintenant la possibilité de Profiler les tests et d’avoir un rapport sous forme de tableaux et graphiques permettant de comprendre ce qu’il se passe avec détail lors d’un test.

S’ensuit un peu d’évangélisation sur le MVVM et en quoi cela permet de bien tester une application (grâce aux commandes et à certains Mock).

On a aussi la possibilité de faire des listes de paramètres à passer aux tests grâce aux attributs DataTestMethod et DataRow. Sachant que l’on peut mettre plusieurs DataRow cela permet de tester la même méthode avec de multiples jeux de paramètres.

On a aussi désormais la possibilité de tester si une méthode renvoie une exception !

John

Windows Phone 8: Wallet and Deals for Developers

Le porte monnaie est une forme de Hub qui regroupe l’ensemble des moyens de paiements, carte de réduction,…

Le porte monnaie n’est pas à confondre avec la NFC.  La fonctionnalité « Tap and Pay » est juste une fonctionnalité qui utilise la NFC. La NFC permet beaucoup plus d’application.

Tap and Pay : un partenariat avec Orange (France) est en cours pour développer cette technologie.

Le porte monnaie supporte déjà : Microsoft (compte prépayé), Paypal, carte de crédit , opérateur…

Le porte monnaie supporte une intégration avec Bing pour la recherche d’offre promotionnelle. Une fois une offre trouvée on peut la sauvegarder.

Maintenant la session aborde le développement. Dans la démonstration il s’agit d’une application qui permet de récupérer des offres promotionnelles et de les stocker dans le porte monnaie.

-> L’utilisation du « Wallet » est associée à des capacités déclarées dans le manifest de l’application

-> Pour sauvegarder :

  • On crée une instance de la classe Deal
  • On initialise des propriétés sur l’instance (un grand nombre de propriétés sont disponibles mais en grande majorité facultatives)
  • On appelle la méthode SaveAsync

On aborde ensuite le modèle objet :

-> PaymentInstrument (nécessite une autorisation pour soumettre un paiement) et on doit déclarer une capacité particulière dans le manifest

-> WalletTransactionItem : objet générique utilisé pour les tcikets, adhésion, …

-> Deal : pas besoin de permission particulière pour cet objet .

Les éléments du porte monnaie sont liés à une application.

Sujet : Wallet Agent

Les agents permettent de mettre à jour dynamiquement les éléments du porte monnaie : quand on consulte un élément dans le porte monnaie l’application peut être invoquée pour mettre à jour l’éléments.

Démo : Implémentation d’un agent

Dans l’agent : il s’agit d’un callback : OnRefreshData qui passe en argument une collection de WalletItem.

Le porte monnaie est donc en dehors du paiement avant tout un endroit où stocker les cartes de fidélité, promotions,… liées à une application.

Roch