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

Building Windows 8 LOB Apps

Enfin une session qui va doit parler des apps W8 pour l’entreprise !!

La salle se remplit très vite, il y a des attentes sur le sujet.

C’est parti, la salle est pleine à craquer !

# Déploiement

Option 1 : on installe son application à partir du package appx et du script powershell associé

Option 2 : System Center ou Windows InTunes pour installer/supprimer les apps + Self Service Portal

Demo du SSP

Le SSP est le store d’entreprise. Un employé y trouve les apps approuvées, achetées ou développées par son entreprise.

Livraison prévue pour Q1 2013, mais vu le peu de choses qu’il nous a montré il doit rester du travail !

# LOB scenario

Toutes les applications desktops existantes ne sont pas candidates au passage en Windows Store App, mais on peut réimaginer beaucoup de solutions pour tirer partie de la plateforme.

Démo de SAP

L’idée est de faciliter l’accès aux données en remplaçant :

  • l’arborescence de menu par une navigation plus plate
  • la pagination par du scroll
  • les listes par des cartes
  • les noms par des images

En utilisant le zoom sémantique pour avoir des vues analytiques : par tranche de chiffres d’affaires, par zone géographique…

En construisant une application par rôle, au lieu d’avoir des vues dans une seule grosse application

2 belles applications : une de CRM et une de RH ! (Il y a en 6 en cours de préparation)

Démo de Citrix

Citrix a porté plusieurs apps sur W8.

Il nous fait la démo de Citrix Receiver en utilisant Outlook 2013 en remote depuis une tablette Surface RT,

puis de Citrix GoToMeeting pour un live meeting (support de la vue snapped, background task pour continuer le meeting),

puis de XenApp Manager pour gérer ses fermes Citrix

Autres exemples de scénarios :

  • Des points de vente « mobiles » (une tablette pour conseiller le client dans le magasin…)
  • Des catalogues de produits
  • La gestion de workflow
  • Des dashboards
  • Du monitoring avec la possibilité d’agir rapidement
  • Des applications terrains

Démo de OnBase par Hyland (Field app)

C’est une application pour faire des inspections suite à des déclarations de sinistres à l’assurance : worlflows de demandes, geolocalisation, search, ajout de photos, pièces jointes, formulaires.

L’application est intéressante sur ses fonctionnalités, mais ils ont oublié de faire de la créa graphique !

Démo de Prime Moblie par Greenway Medical (Monitoring & action)

Application Dossier Patient pour des médecins : liste avec zoom sémantique, tableau, charts, formulaire

L’appli a été développée en 6 semaines.

Démo de Directors Desk par Nasdaq (Dashboard)

La démo fait le parallèle entre l’appli web (une peu vieille) et l’appli W8 (avec un design sympa).

Point intéressant : l’app inclus un lecteur de PDF avec la possibilité d’annoter

A noter que toutes ces applications ont une page de login !

On est encore une fois passé rapidement sur le déploiement, mais on a vu plein de démo. Par contre toutes ces applications sont disponibles dans le store avec une page de login pour s’authentifier, on n’a pas vu une seule application avec de l’authentification Windows…

Je reste pour la suite dans la session suivante qui devrait rentrer plus en détail sur la techno.

Pierre-Yves

Deep Dive into the Kernel of .NET on Windows Phone 8

Cette session comment par un rappel de qu’est la CLR avec un schema explicatif montrant les différentes couches.

Depuis Windows Phone 8, Windows Phone utilise la CoreCLR à la place de NETCF.
Parmi les nouvelles fonctionnalités de WP8 on trouve le support de la programmation native et donc la possibilité de partager ce code entre différentes plateformes. On trouve aussi la possibilité d’écrire des applications réactives et fluides.
Parmi les améliorations de la performance on trouve l’amélioration du temps de chargement et du temps d’exécution (nouveau JIT et nouveau Garbage Collector) et de la réactivité des applications.

Les applications peuvent maintenant être hybrides (XAML/C#/C++) et le portage d’applications C++ est facilité. On trouve aussi une amélioration du P/Invoke qui améliore la performance de l’interop. Dû à l’utilisation de l’API Windows 8 dans Windows Phone 8, les applications peuvent être facilement portées.

S’ensuit une démo de l’intégration d’un code natif en C dans une application (utilisant GnuGO).

Après cette démo on nous parle des portables librairies afin de résoudre le problème de la portabilité du code entre WP7, WP8 et Win8 (mais c’est valable pour bien d’autres plateformes).

On nous parle aussi de la programmation asynchrone avec async/await avec une démo de l’implication de ce dernier pour la fluidité des applications.

Par la suite on nous reparle de la compilation des applications dans le cloud. Le temps de démarrage est deux fois plus rapide sur Windows Phone 8 que sur Windows Phone 7. On nous explique comment se passe la génération du code machine en .NET et une comparaison entre JIT et NGEN. On nous explique aussi le fonctionnement de NGEN (explication sur les vTables).
On nous explique ce qu’est le MDIL (Machine Dependent IL) et à quoi il sert.
S’ensuit un démo de la génération de MDIL depuis Visual Studio et du temps de génération.

On a ensuite quelques chiffres montrant les améliorations obtenues grâce à l’optimisation du code effectuée dans lors de la phase de compilation dans le code.

Quelques amélioration du Garbage Collection :

  • Moins de latence
  • Utilise plusieurs cœurs pour l’allocation
  • Amélioration du tracking de la durée de vie des objets
  • Gestion de 3 générations d’objets

Une super session d’explications détaillées. A voir !

John