Tech Ed Europe 2010 à Berlin : Le 9 novembre 2010 | Jean-Luc Boucho - Blog sur .NET, l'Architecture et Windows Azure

mardi 9 novembre 2010

Tech Ed Europe 2010 à Berlin : Le 9 novembre 2010

C'est la journée de démarrage des sessions libres.
Voici un aperçu des sessions les plus intéressantes que j'ai suivies.

Session : The Future of C#, par Mads Torgersen et Lucian Wischik (Program Managers de C# et Visual Basic)
C# : async et await

Rappel des principales évolutions du langage: les types génériques, LINQ, les objects dynamiques et des fonctionnalités identiques pour C# et VB.NET. La nouveauté à venir : le support natif de l'asynchronisme.

Les tendances actuelles de la programmation : déclarative, dynamique et parallélisme; et les problématiques sont concentrées aujourd'hui autour des applications connectées, avec les soucis de : latence, réactivité de l’IHM et la scalabilité.

Le langage propose donc une évolution concernant la gestion asynchrone des traitements, qui est de plus en plus présente aujourd'hui. Au lieu de ré-architecturer le code pour fonctionner de manière asynchrone en introduisant des callbacks pour toutes les opérations longues, deux nouveaux mots clés font leur apparition:
- async, au niveau du retour de méthode pour indiquer que c'est une méthode asynchrone,
- await, au niveau de l'appel pour indiquer que c'est un appel de méthode asynchrone qui doit être réalisé en tâche de fond.
Et tout ceci en conservant la même structure de programme qu'en mode synchrone, ce qui est largement plus lisible pour le développeur.

Noter qu'avec ce mécanisme, une même méthode peut être exécutée par plusieurs threads, dont notamment le thread principal, ce qui évite d'isoler et d'éloigner le code IHM.
De manière sous-jacente, c'est le compilateur qui complète le code écrit pour ajouter la gestion de tâche, d'attente et des exceptions potentielles.

Ce système utilise donc la classe Task, qui propose en plus une fonctionnalité de rendez-vous multi-threads bien utile: WhenAll(t1, t2).
Côté ASP.NET, on en bénéficie aussi puisque les méthodes OnLoad... peuvent devenir elles-mêmes asynchrones grâce à l'ajout du mot clé async.
Cette nouvelle gestion permet donc d'unifier et de mixer les traitements asynchrones, qu'ils soient liés au CPU, au réseau ou aux I/O.

La CTP de Visual Studio Async est à télécharger ici.


Session : Windows Phone 7 in entreprise environment, par Andrej Radinger (APPA mundi)

Hub Office et l'accès distant:
- OneNote, se synchronise avec SkyDrive
- Sharepoint, se connecte à Sharepoint 2010 en entreprise et bientôt à la version Online (Office 365).

Gestion du mobile à distance : en passant par le portail Windows Live, il est possible de localiser, sonner (même si le mode silence est activé), effacer ou locker le téléphone.

Déploiement : s'effectue uniquement via le MarketPlace mais Microsoft prépare la fonctionnalité d'un MarketPlace privé, interne à l'entreprise pour le déploiement d'applications spécifiques et réservées à l'entreprise.


Session : Deploying, Troubleshooting, Managing and Monitoring Applications on Windows Azure, par Ryan Dunn (Windows Azure Technical Evangelist)

Steve Marx et Ryan Dunn ont récemment déposé de nouvelles vidéos sur channel9.

Déploiement:
- Rappel des notions de service definition: contient la nature des éléments à configurer (chaîne de connexion attendues...), et service configuration: contient les valeurs de la configuration.
- Rappel des notions de fault domains (groupe de ressources qui sont susceptibles de tomber en même temps) et upgrade domains (groupe de ressources qui seront upgradées en même temps) : Azure déploie systématiquement un upgrade domain sur plusieurs fault domains.
- Rappel des deux environnements: production et staging. On peut y déployer de différentes manières : nouveau déploiement, swap si les ports externes sont les mêmes, in-place upgrade avec plus de contraintes concernant la configuration (taille des machine...), et déploiement web.
- Attention aux suppressions: perte très probable de l'IP virtuelle. Il est conseillé d'éviter d'utiliser l'adresse IP et de tirer parti du DNS pour des basculements sans interruption (en conservant les deux versions side by side pendant 24h, le temps que les DNS soient tous à jour).
- Attention aux certificats qui sont de niveau souscription: cela fait partie des best practices d'avoir une souscription séparée pour la production (évite un déploiement de certificat "développeur" en production).
- Outils: Visual Studio, csmanage.exe, MMC (configuration et consultation des diagnostiques), portail, produits tiers, cmdlets Powershell.

Monitoring
- Il est possible d'obtenir toutes les informations qu'il est possible d'avoir en entreprise avec Windows Server: logs IIS, crash dumps, logs FREB, logs custom, compteurs de performance, Event logs, sorties Debug/Trace, événements de l'infrastructure (pas très utile).
- Le monitoring démarre après l'instance, mais cela va changer ! Il sera lancé comme un processus séparé pour obtenir des diagnostics, même en cas de problème de démarrage de l'instance.
- La récupération des logs peut être programmée ou non (à la demande), et il est possible de configurer les diagnostiques à récupérer (prise en compte par polling) et leur rétention (préférer dissocier le compte de stockage des diagnostics pour pouvoir vider/supprimer sans impact sur le stockage des données applicatives).
- Noter que les événements sont partitionnés sur le tickcount, ce qui optimise les requêtes sur la date, et penser à filtrer les événements sur le niveau de verbosité souhaité lors du transfert.
- L'outil Diagnostic Monitor est une application web de consultation des logs qui peut être installée sur chaque instance, ce qui permet une analyse rapide sans procéder à un transfert. A titre d'information, 5 compteurs de performance relevés toutes les 5 secondes pour 100 instances coûtent approximativement 260$ par mois.

Troubleshooting
Les solutions sont :
- Intellitrace (nécessite Visual Studio Ultimate)
- Remote desktop (bientôt)
- Custom TraceListener (et logviewer.exe du training kit) pendant le développement

Aucun commentaire: