[Build 14] – Windows Runtime for Windows Phone Developers

Mail de Mehdi
Vendredi 4 avril 2014 10:31

Windows Runtime for Windows Phone Developers

// Speakers : Doug Holland, Jerry Nixon

On débute la session par un petit Historique de WP (7.0 Silverlight, 7.5 Silverlight, 7.8 Silverlight, 8.0 Silverlight, 8.1 Silverlight et maintenant WinRT)
Le speaker commence par nous dire pourquoi nous devons rester sur du Silverlight : Beaucoup d’investissement (une base importante de code) utilisation de certaines API toujours pas disponible avec WinRT (exemple : VoIP, Lock Screen WP) et que Microsoft respecte nos investissements et que Silverlight pour WP continuera à être supporté/amélioré en parallèle que WinRT.

Ensuite il nous dit pourquoi nous devons re targeter nos applications en Silverlight 8.1. La réponse est simple : pour avoir accès à plusieurs nouvelles API (accès à la carte SD, GeoFencing, App Sharing)

Et enfin, il nous dit dans quel cas nous pouvons/devons choisir WinRT. Et là aussi la réponse est plutôt simple : plus de convergences (avec Windows) nouveaux contrôles (lesquels ? aucune présentation) choix de langage …

Petit rappel sur le async await (avec comme règle toute méthode qui dépasse les 50 millisecondes doit être en asynchrone pour ne pas bloquer l’interface et c’est ce qui fait dans WinRT).

Si on choisit le développement avec WinRT le speaker nous présente plusieurs API qui ne sont plus disponibles et qui sont généralement remplacées par l’API équivalente sur Windows.

Si on utilise Microsoft.Phone.Task :
– MarketplaceReviewTask n’est plus disponibleet doit être remplacé par un lacement d’une uri qui redirige vers le store
– Même chose pour le MarketplaceSearchTask
– Le WebBrowserTask est remplacé par Windows.System.Lancher.LanchUri
– AdressChooserTask remplacé par Windows.ApplicationModel.Contacts.ContactPicker
– PhoneCallTask remplacé par Windows.ApplicationModel.Cells.PhoneCallManager
– SmsComposeTask remplacé par Windows.ApplicationModel.Chat.ChatMessageManger
Microsoft.Phone.BackgroundAgent est remplacé par BackgroundTask (comme sur windows 8) avec plus de features.

La navigartion sur WP ne se fait plus par chemin, mais par type de page (comme sur windows 8)

Le bouton back ne ferme plus automatiquement l’application.

Les fichiers de localisation sont maintenant de resw en XAML nous avons maintenant x : UId l’identifiant qu’on utilise uniquement dans ces fichiers. On peut spécifier une propriété genre LeUidDunElement.text ou LeUidDunElement.Foreground.

Dernier point de la session, on nous reparle de la particularité du fileOpenPicker, quand on l’utilise on quitte l’application (elle passe donc en suspended voir elle est tuée par l’OS) donc quand on sélectionne un fichier l’application est relancée on passe par l’event activeted avec en arguement l’activation par fichier.
Mehdi

[Build 14] – Strategies for developing Cross-Device applications with Visual Studio 2013

Mail de John
Vendredi 4 avril 2014 06:09

Strategies for developing Cross-Device applications with Visual Studio 2013

 

Retour sur les choix inhérents au développement Cross Platform.

Doit-on choisir le développement natif ou le développement utilisant des technologies web ?
C’est la réponse que cherche à apporter cette session.
Natif : Plus grande flexibilité de customisation par device, accès complet au matériel, device dependant
Web : Device independant, facile à gérer mais possibilités d’intégration à la plateforme limitées.

 

Présentation de stratégies pour le développement web :

– Ne rien faire
– S’adapter au niveau du client
o Duplication minimale mais pas de customisation par device et inefficience au niveau de la bande passante
– S’adapter au niveau du serveur
o Flexibilité maximale mais probablement pas mal de duplication de code
– Tenter d’imiter le fonctionnement natif
o La meilleur expérience sur chaque device mais ce n’est toujours pas du natif

Démonstration sur le CSS et les Media Queries, Bootstrap.
Démonstration JQuery Mobile
Démonstration avec Knockout, TypeScript, Cordova.
Développement natif :

– Utiliser les outils de chaque plateforme
o Impose d’apprendre à développement avec divers IDE, langages
o Pas de partage de code
– Utiliser Xamarin
o Applications complètement native
o Utilisation de Visual Studio
o Partage de la logique du code entre chaque plateforme grâce à des PCL
o 100% des APIs de chaque device sont exposées par Xamarin

Démonstration avec Xamarin et MVVMCross (Breakpoints et remote debug Android)
John

[Build 14] – Keynote day 2

Mail de Alexandru
Jeudi 3 avril 2014 16:42

Keynote day 2

Motto: Mobile first, cloud first.
// Intro

Three hundred new features in 2013, 44 new features presented now. New Azure regions in China (continental). Adoption of azure, growing:
– 57% Fortune 500, 250K websites, 1.000.000 SQL Databases, 200 trillion storage objects, 300 Mio AD users, 1Mio VS Online.
Titanfall (game) is presented, demo & interview with the team. The general lack of lag is highlighted = everyone has the same frame rate, the game does not depend on the local available power. Game cannot be played without the cloud. More 100.000 VM on launch day.
Another experience with Azure: 2014 Sochi Olympics with NBC. 100 Mio users, 2.1Mio concurrent HD viewers during US/Canada hockey match.
Rick Cordella (sr VP and General Mgr NBC Sports digital) does a testimony concerning the impact of the cloud on his news channel. 1Bio dollars invested, 70 days to recover the investment. “There is no going back”.
Azure : Internet as a Service (IaaS) Or PaaS (Platform as a service).
// IaaS

New features:
– Virtual Studio integration (create, manage, destroy or debug VM) without leaving it.
– Capture VM images with any number of storage drives=> create any instances as necessary.
– Puppet modules (sql, web, app). Chef server is presented. Puppet Master manages puppets (change VM role, etc.).

Integration with VS
Demo with VS @ creating a VM, based on OS, etc, all from the VS Server Explorer. A nice wizard (OS, ports, etc.). Debug is possible & demoed (right click on the vm => enable debug). The debugging client is injected in the VM. Attach the debugger => all works (frenetic applause in the room….)

Snapshots
Command List is demoed, launching powershell commands. A “snapshot” capability is possible with this command option. Disks are copied on the fly.

Puppet
“Puppet Master” is demoed (partnership with Puppet Labs partner). “Puppet master server” linking is demoed. Puppet CEO showcases the technology.
“Puppet Class” => demo for deploying technology (sysinternals for ex, deployed on all the machines).
The object of their techno is to install & synchronize machines fast: automate configuration management.
“Getty Images” testimony is next. Hint: non-commercial service launched.
Scott takes over again: new features listed (see photo)
// PaaS

PaaS is the detailed (prebuilt services). Patching, load balancing, etc is handled.
Capabilities are presented in detail.

Azure Website service
Deploy web applications. Java is supported, etc.
– Autoscale is by default, maximum number of VM (& the minimum) is customizable.
– Staging (test facilities for example) is presented. Swap function allows an easy deployment.
– Webjobs is for background tasks that should relief the load from a webserver. A queue is the typical example. Same machine can be used as the azure web site
– Traffic Manager support. Single DNS entry, with instances all around the world. You can route your traffic based on geographical location. Not for VM only, but for websites also.
Mads Kristensen (Web in action) is next.
Creating a website & database from VS. Publishing scripts are created (can be modified). Browser Developer Tools demoed with live modification of the background (=> VS changes also). See the transcript from yesterday 3-602. JsHint is demoed. Staging feature is presented. *-staging.azurewebsites.net suffix. Swap feature demoed (with certificates, etc.). Background task are demoed via WebJobs. Same context is used. The “invocation log” can be seen in order to monitor the Webjob. Traffic Manager scenarios are presented (failover, performance, etc.).

Web announcements
are listed (see photo).
MVC 5.1, Web API 2.1, Identity 2.0, etc.

Mobile Services
– Develop backends with .net, node.js.
– Flexible data (No SQL, SQL, blob storage, etc.)
– Broadcast notifications. Notification hubs => broadcast afterwards
– Now supports Active Directory (new). Standard OAuth tokens => custom logic possible (for ex Office). Works with any device (Android, iOS, etc.)
Demo for Mobile Services is next. API Documentation & a Test Client. Local & Remote Debug demoed. Template for a Controller & Security is demoed. Portable Class Library is used. Native Authentication Library demoed (Active Directory). SharePoint or Office 365 integration is demoed, quite nice demo. Xamarin integration & demoed on iOS. Nice cross platform demo.

Enterprise Auth & Office 365 API
Demo & testimony by DocuSign, Grant Peterson (CTO). Active Directory integration gets demoed, on an iPhone. SharePoint integration is also demoed (still on the iPhone). Signing on the run possible, nice demo! 20 lines of code in Objective C on the iPhone & that’s it.
Mobile announcements (see photo)
Azure AD SDK for android & iOs, Office 365, Azure AD premium, SSO AD, Notifications on Kindle, etc.

Data
Data is the next chapter
SQL Improvements in Azure \
– Size 150Gb-> 500Gb, 99.95% SLA.
– Self service restore. Automatic backups possible. Restore a snapshot.
– Active geo replication (primary instance-> data replication-> readonly secondary region). Multiple centers in the same region (Europe for ex).
– Other announcements listed (see photo).

 

// Next is programming languages & tools for Azure

New .NET compiler platform (Roslyn) is highlighted. Anders Hejlsberg is talking over the show.
New generation preview: VSIX available. Features
– Importing static (Math.PI for example), Math.PI gets Pi directly (using System.Math needs to be added).
– Rename help
– OPEN SOURCE Roslyn project. It is on Codeplex! Publish LIVE. .NET compiler goes Open Source…
– Modification on the compiler shown (changing quotes for example)
Migel de ICAZA (Xamarin) does the next demo. He changes the IDE from Mono-> Roslyn, compiles, works.
Scott takes over:
Announcing the .NET Foundation, founding project shown on photo (see photo).
// New Azure Management Portal

The new Azure Management Portal is demoed: Bill Staples. Looks like a W8 app., Blade is the term used for the dropdown that allows a drilldown (see photo). A new navigation method (journey) on the website.
The billing can be drilled down more effectively. Resource costs are easily available.
The portal is open, third party devs can integrate with it.
Continous deployment is presented directly from the Azure Portal. Seamless switching between Visual Studio & Azure is demoed. Commit can be seen on the portal directly (code view level…).
AppInsights integrated with the Azure Portal. You can edit the code directly on the Portal!
Personal comment: the blade feature is a little bit confusing…
Analytics is integrated on the new Azure Portal. Avg response time, availability, etc.
Scale up a website is now possible, without redeployment (Lionel sera content)
Demo on a desktop (an enormous touchscreen TV is shown)
Entire lifecycle: starting the service, coding, command line, analytics, management, etc.
Personal comment: the investment in this portal was huge I believe => Microsoft is placing its bets

Announcements:
– Azure Portal preview
– Azure Resource Manager preview
– VS online General Audience

Alexandru

[Build 14] – Building a Single Page Application with ASP.NET and AngularJS

Mail de Mehdi
Jeudi 3 avril 2014 16:42

Building a Single Page Application with ASP .NET and AngularJS

// Speakers:
David Catuhe, Jon Galloway

Session un peu décevante, niveau 300 mais plutôt destinée aux personnes n’ayant jamais fait d’AngularJS.

Les démos sont là pour attirer ces gens sur ce framework.

On débute avec la façon avec laquelle on intègre Angular dans une page HTML => nous avons besoin que d’un seul fichier
«angular.min.js»

Trois solutions sont possibles pour ajouter AngularJS à un projet => soit on télécharge les fichiers, soit on utilise NuGet ou un CDN (le plus conseillé par David).
// Début de la démo :

Initialisation du controller de la vue, David ajoute comme injection $scope pour accéder au scope de la vue. Il initialise une variable avec un tableau de deux éléments qui seront bindés dans la vue avec un repeater, il lance la page, et voilà ! ça marche très simplement.

Ensuite on nous introduit les différentes façon d’accéder à de la data, avec $http qui est basé sur une version light de jQuery, et $resource qui est un objet spécifique fait pour du restful api (qui sera utilisé un peu plus tard dans la démo pour interroger le serveur au lieu d’avoir la data en local)

Pour les utiliser depuis le controller, il faut les ajouter dans les injection de dépendance de celui-ci.

On nous présente comment créer un service pour rendre transparent l’accès aux données.

Démo de comment on peut créer un filtre dans un repeater.

Une petite démo du Two-Way Data Binding avec enregistrement en local des données.

Une démo sur les animations (avec le repeater , angular ajoute des classes spécifiques quand un element est ajouter/supprimer/modifier dans la liste et on peut donc facilement faire des animations en css).

Présentation de comment créer des routes dans Angular avec le template de la « page » qui va avec.

Mehdi

[Build 14] – Multitasking and Background Processing on Windows Phone

Mail de John
Jeudi 3 avril 2014 10:56

Multitasking and Background Processing on Windows Phone

On commence par un petit rappel du model de multitasking dans Windows Phone 8.
S’ensuit un rappel du modèle d’exécution des tâches de fond dans WinRT (Processus séparés, réponds à des Triggers et à des conditions).

Présentation des triggers disponibles dans Windows Phone.
Comment créer une tâche de fond ?
– Implémenter IBackgroundTask.
– Modifier le Manifest pour activer l’accès aux tâches de fond.

Démonstration en C# de création d’une backgroundtask et comment on l’enregistre dans le système (BackgroundExecutionManager.RequestAccessAsync), l’ajout de triggers (BackgroundTaskBuilder, SystemTrigger, SystemCondition). Ensuite démonstration de comment lancer une backgroundtask en Javascript (Ajout de la définition de la propriété TaskEntryPoint du BUilder qui correspond au fichier js contenant la tâche).

Les tâches de fond natives (aka WinRT) sont disponibles dans les applications Silverlight 8.1. Les BackgroundAgents sont maintenant hébergés par l’infrastructure WinRT.

Accès aux Sensors, Bluetooth LE, RFCoom même si l’application n’est pas en premier plan.
Basé sur les nouvelles API Bluetooth WinRT.

Nouveau triggers :
– GattCharacteristicNotificationTrigger
– DeviceChangeTriggfer
– DeviceUpdateTrigger
– RfcommConnectionTrigger

Les notifications de Geofencing peuvent être reçues en background dans une tâche de fond.
Ajout des Push Triggers dans Windows Phone.
Associer une Background Task avec un WNS channel.
Activation d’une tâche de fond grâce à une notification push raw.

Démonstration des Push Notifications.

Le rendu XAML dans les BackgroundTasks est maintenant possible ! (Démonstration de ceci en C++ c’est mieux pour la mémoire).

BackgroundTransfer
– Windows.Networking.BackgroundTransfer
– Pas de restriction de taille de fichiers
– Support du multi part mime (pour les gros fichiers)
– Verbes HTTP supplémentaires (PUT, RETR, STORE) et aussi FTP
– In-progress stream access
– Data-Sense and Battery Save aware

Non disponible pour les applications Windows XAML :
– Continuous Background Location
– Runs-Under-Lock
– VoIP Agents
– Wallet Agents

Economiseur de batterie :
Permet de trier et de gérer les applications qui tournent en tâche de fond et de voir leurs utilisations de ressources

Contraintes de ressources :
– Toutes les tâches de fond ont des quotas CPU, mémoire et réseaux
– Les quotas sont basés sur l’utilisation actuelle du CPU au lieu d’une limite d’horloge
– Le quota d’horloge sera renforcé (au moins une fois toutes les 30 secondes)
– Le quota de mémoire s’adapte aux capacités de chaque device.
– Le TimeTrigger aura un temps d’exécution assuré d’un maximum de 30 minutes maximum.
Appelez RequestAccessAsync() pour avoir votre quota maximum.
John

 

[Build 14] – From 4 to 40 inches Developing Windows Applications across Multiple Form-Factors

Mail de John
Jeudi 3 avril 2014 10:41

From 4 to 40 inches Developing Windows Applications across Multiple Form-Factors

Rappel de la différence entre la layout et les assets.
Layout: Physical Size and Shape, Viewing Distance, Effective Resolution
Assets: Detail Level, Scale Factor, Mastering

Il ne faut plus se demander quelle est la taille de mon application. Il faut se demander quelle forme a mon application (tall, thin, wide).

Démonstration de l’adaptabilité du layout et de la taille du contenu d’un jeu de morpion.
La résolution effective de l’application est importante, pas la taille de l’application.

Démonstration de l’utilisation des VisualState dans Blend pour s’adapter à la taille de l’application. (Utilisation d’un petit helper une classe de base d’une page qui change le VisualState en fonction de la taille).

Choisir de bons assets en fonction de la résolution. Si une image a beaucoup de détails en grande résolution et qu’on la redimensionne en une image à faible résolution elle sera très pixélisée. Il faut choisir une image avec moins de détails à faible résolution quitte à ce que l’image ne soit pas tout à fait la même que celle à haute résolution.

La densité relative des pixels d’une image est importante pas la densité réelle de pixels (DPI).
Il est important d’appliquer les conventions de nommage pour les assets (exemple image.scale-240.png) qui permettra de choisir automatiquement la bonne image en fonction de la résolution. Il faut quand même préciser la taille d’affichage de l’image car sinon le moteur de layout (HTML ou XAML) multipliera la taille de l’image au lieu de s’adapter au DPI.

Génération des assets :
– Déterminer la taille désirée de l’image en pixels effectifs
– Déposer ces assets dans le dossier partagé
– Multiplier la taille du layout par 2.4
– Déposer ces assets dans le projet Phone
– Vérifier que le résultat est le bon sur les appareils cibles (les émulateurs et simulateurs sont insuffisants pour une vérification d’assets)
– Si le resultat est bon vous avez fini
– Sinon essayez un scale factor supplémentaire de 1.4 ou 1.8

Création des masters assets :
– Dans l’idéal utilisez des assets vectoriels
– Sinon des bitmaps ayant un scale factor supérieur ou égal à 400%
– Exportez cet asset dans les scale factor cible nécessaires
– Ne pas oublier le niveau de détail
– Ne pas s’inquiéter si on a un asset à basse résolution

Mais où est le code ?
La plupart du temps il est inutile d’écrire du code pour gérer ce sujet.
Cependant voice quelques informations utiles pour la suite.
DisplayInformation.GetForCurrentView() :
– ResolutionScale (Windows (enum))
– RawPixelsPerViewPixel (WP (double))
– RawDpiX, RawDpiY (Ignore unless measuring real-world objects (ruler, hardware,etc..))
– LogicalDpi (avoid unless working with Direct2D or legacy code that assumes 96 DPI)

Silverlight : Information importante pour la migration d’application Silverlight vers WinRT. La résolution effective minimale pour les téléphones a changée. Il faut multiplier les constantes de taille par 0.8.

Utilisez les bons mots !
– Bien : Effective resolution / shape / scale factor
– Mal : physical resolution / orientation / DPI
Architecturez pour un layout flexible. Préférez l’utilisation de composants à celle de pages monolithiques :
– Laissez le moteur de layout faire son travail
– Focalisez-vous sur le bon set d’assets
– Commencez avec des master assets de haute résolution
– Ne générez que les scales factor nécessaires
– Assurez-vous que le niveau de détail est approprié

John