Et voilà la dernière session de la PDC, enfin la session que j’attendais depuis le début (j’exagère à peine) En même temps on se garde le meilleur pour la fin :)

Présenté par Marc Scurell, Lead PM sur le sujet. Le but de la présentation est biensur de nous présenter SQL Azure Data Sync sorti le jour du KeyNote (bon ça a fait moins de bruit que la sortie de SL4 beta, je vous l’accorde volontiers !)

Basé sur le Sync Framework V2 , Marc nous fait un tour d’horizon du framework, avec pas mal de théorie, intéressant pour ceux qui n’ont pas suivi mes webcasts et articles ;)

imageimage

SQL Azure Data Sync

image

Le Wizard qui va permettre de connecter une base de données locale avec SQL Azure, avec une base de données local SQL SERVER 2008.

Tout se passe par le wizard, qui va créer toute l’architecture sur SQL AZURE, parfait réplica de la base locale. A noter que le tracking des changements se fait via le Change Tracking de SQL SERVER 2008, mais j’ai pu voir encore des tables supplémentaires contenant des métadatas encore nécessaires pour faire fonctionner le tout.

 

 

image

Vient ensuite une démo de synchronisation entre SQL AZURE et SQL SERVER CE. Ce qu’est sympa c’est que le template VS pour SQL CE va générer via son wizard non seulement la première synchronisation mais aussi le code nécessaire pour reproduire une synchronisation complète en .NET

Du coup la synchro entre une base de données sql ce et sql azure se résume en 1 ligne !

image

Pour aller plus loin; on peut meme imaginer des scénarios 3 Tiers, avec de la logique métier officiant entre les bases de données locale et les bases SQL Azure :

image

 

Synchronisation avec un client Silverlight

Une démo très très sympa vient conclure ma PDC, une synchronisation entre SQL Azure et un client Silverlight (où je vous rappelle nous n’avons PAS ADO.NET et encore moins la possibilité d’accéder à une base Compact)

Le principe est donc de synchroniser la base SQL Azure avec l ‘IsolatedStorage local disponible depuis SL :

image Ca, ça m’a bien bluffé, ils ont écrit le SyncProvider spécial pour l’IsolatedStorage. Espérons qu’ils le fourniront en sample :)

Pour finir la roadmap de Sync Framework : On s’oriente vers début 2010 avec la sortie du Sync Framework V2.1 avec le full support Azure et la V3 en cours d’année.

image

Voilà la PDC c’est fini pour cette année, et contrairement à l’année passée, aucune prochaine date n’a été annoncée, on va donc je pense revenir à un cycle plus classique de 3 ou 4 ans avant la prochaine PDC !

J’en profite au passage pour remercier Laurent de Techheadbrothers et Thomas de Microsoft qui m’ont permis d’assister cette année à ce grand évènement. Merci !

, ,

Voici venir les innovations du langage XAML.

Session assez intéressante sur les apports futurs au langage XAML. On notera surtout la naissance d’un nouveau namespace (et meme sa propre dll) dédié entièrement au XAML : System.Xaml située dans System.Xaml.dll

image

Au niveau des nouveautés du langage, j’ai pu voir l’ajout de code inline, comme les évènements (bien que je ne sois pas fondamentalement convaincu de l’apport de la chose :) ) ou encore l’exécution de code simple comme dans l’exemple suivant :

image

Ca ca peut m’intéresser dans les expressions de Binding tiens.. mais j’ai des doutes !

XamlDom : Travailler avec un modèle objet Xaml Complet.

Un peu comme un XmlDocument va permettre de se ballader dans un document Xml, XamlDom va nous permettre de nous ballader dans un document Xaml, et récupérer de précieuses informations sur les noeuds xaml. Sur l’exemple on verra même comment récupérer le type de l’UIElement associé au noeud en cours !

image

image

imageDu coup sérialiser un simple bouton XAML devient beaucoup plus aisé !

Dans la copie d’écran suivante vous avez

  1. Le bouton Xaml
  2. Le code nécessaire pour sérialiser notre bouton à l’ancienne : avec un XamlXmlWriter
  3. Le code nécessaire avec XamlDom (utilisation d’un XamlDomObject)

image

Du coup (encore) ce modèle objet abouti va ouvrir des portes à des outils comme l’analyse statique du code Xaml avec FxCop. D’ailleurs l’équipe chargée de Xaml est trés proche de l’équipe FxCop pour fournir un environnement de travail évolué à ce niveau là.

image

Nous avons droit enfin à un chapitre consacré à l’amélioration de la localisation Xaml que ce soit en SL4 ou en WPF (On part de tellement loin avec des outils comme LocBaml qu’on ne peut QUE faire BCP mieux) La démo est assez convaincante, un peu comme de l’asp.net, où l’on génère les ressources avec VS 2010 depuis un simple menu qui va lancer un parse complet du document Xaml

Au niveau des designers VS 2010 et Blend, on note des améliorations notables des performances ou encore l’ajout de l’IntelliSense dans Blend :

image

Vous pouvez d’ores et déjà télécharger la CPT de la Microsoft XAML Toolkit à cette adresse : http://code.msdn.microsoft.com/xaml

,

Voilà une session animée par Clemens Vaster en personne.

Celui ci va nous parler de la communication entre applications externes et AZURE. Alors forcément, partant de la, on pense forcément Service Bus ! Alors oui la session fut en partie consacrée au service bus, mais pas que :)

Pour nous introduire sa problématique Clemens Vaster (CV) fait mumuse avec DinnerNow.net, un projet démo qu’il utilise depuis des lustres pour aborder des sujets divers et variés.

Chose intéressante, son application existe et comme toute VRAI application, a un historique, des contraintes architecturales fortes. Potentiellement toutes les briques ne sont pas migrables sur AZURE :

Un peu comme je l’ai fais, le contexte est de prendre une application déjà existante et de la porter sur le CLOUD :

  • Des choses que vous ne pouvez pas exécuter dans le Cloud
  • Des choses que vous ne voulez pas exécuter dans le cloud

image 

Biensur le Sevice bus est LA solution pour mettre en relation un service WCF, quelque soit les contraintes de votre Intranet.

Mais que se passe t’il si le service exposé ne sait pas parler WCF ou ne sait pas communiquer par HTTP ? Prenons par exemple SMPT, SNMP, POP, IMAP … TDS !

TDS est le protocole de communication de SQL SERVER sur un port 1433 en général. Justement nous voudrions (Surtout Clemens Vaster en fait :) ) faire communiquer notre Web Role avec une base de données sur un intranet local, serveur situé biensur derrière toutes les barrières des sécurité classiques (firewall, proxy, isa etc …)

CV va donc pendant sa session nous démontrer comment utiliser le Service Bus et un projet Bridge pour réussir à faire ce que l’on appelle communément du Tunneling :

Nous avons deux composants : “Port Bridge Service” et “Port Bridge Agent”

L’agent a pour rôle d’écouter et d’accepter des connexions TCP (ou named pipe) sur un port configurable. le service lui doit accepter ces connexions et établir un duplex channel avec l’agent, via le Service bus. Il a ensuite la charge traiter les données de l’agent avec le sercice à l’écoute et vice versa :

image

 

Clemens Vasters a mis à jour son blog pour expliquer comment faire du tunneling grace à son Bridge et le Service Bus AZURE : http://blogs.msdn.com/clemensv/archive/2009/11/18/port-bridge.aspx

Session intéressante, assez technique, enfin …. trés technique :)

,

Nouvelle sessions sur Azure, et le dévelopement avancé d’application pour la plateforme, présenté par Steve Marx. technical strategist sur azure.

imageL’application exemple prend un Load Balancer; des noeuds IIS, des noeuds permettant de faire de la recherche, et des noeuds gérant des requetes SMTP externes.

Le principe va etre de monter un architecture comprenant un gros moteur de recherche qui va etre réparti sur plusieurs noeuds azure.

 

 

 

 image

Durant sa session, il nous présentera des points comme : La communication inter roles, les Endpoints non HTTP, les cycles de vies des instances, ou encore les tailles des VMs (ça c’etait le plus simple, un simple attribut dans le fichier xml de config !)

 

 

image Les noeuds web sont basés sur ASP.NET MVC

Le moteur de recherche est Lucene.net, une API populaire portée de java

 

 

 

 

 

 

 

Aprés nous avoir bien expliqué la différence entre les messages reçus par un Web Role et un Worker Role (grosso modo, le web role est soutenu par un IIS qui gère les requêtes entrantes, alors que votre Worker Role reçoit n’importe quel type de message) Steve nous parle un peu des Endpoints :

  • InputEndpoint. Permet d’écouter sur des ports specifiques des requêtes entrantes
  • InternalEndpoint : Permet de communiquer entre différents roles à l’intérieur de votre architecture AZURE : de la communication inter roles

image

Durant sa session, Steve nous montrera même comment se passer des queues, qui ont l’avantage et l’inconvénient de délivrer un message à un seul Endpoint, là où il nous faut dispatcher le message sur tous les noeuds : Il va passer par les Table Storage (je vais rester assez vague sur sa technique, parce que j’ai d’une part, pas tout suivi, et d’autre part, il est lui meme rester assez flou :) )

 image

Bref une démo pur code, bien HardCore, le source code de la session devrait être dispo rapidemment sur le blog du monsieur.

Le blog du monsieur, où le source devrait être rapidemment disponible : http://blogs.smarx.com

,

 image

Voilà une session qui a été un peu mon heure “détente” de la journée.

La session est animée par deux joyeux lurons, Douglas Purdy et Chris Sells qui nous ont présenté le Projet Quadrant, et le langage “M”

 

 

 

 

 

On se retrouve ici avec une application “Quadrant” permettant de naviguer dans les données SQL SERVER; trés facilement.

Mieux il devient possible et intuitif de créeer des vues Maitres Détail de vos données, simplement avec du glisser-déposer.

 image image

Chaque écran est finalement une vue de vos données, cet écran est en fait construit à partir de ce fameux langage “M” D’ailleurs, il est facile de faire un “clic-droit” sur le formulaire pour voir le script “M” qui est à l’origine du formulaire; un peu comme vous le feriez avec le source d’un code HTML.

image

Voilà une session sympa, un peu décalée par rapport à l’ensemble des sujets du jour (AZUuuuuuuuuure) et qui fut ma fois bien fun !

,

image C’est parti pour le keynote de la deuxième journée.

La première partie du keynote est axée sur Windows 7, la volonté de MS de fournir un OS d’excellente facture, en prenant en compte les retours des utilisateurs.

Nous avons droit ensuite à une démonstration de l’UAC, ou encore le “Shake and minimaze”. Bref, rien de particulier, juste quelques features “funs et utilles” de Windows 7.

On passe ensuite au hardware et Windows 7 avec une démonstration de mini PC, et la charge qu’ils sont capables d’accepter avec Windows 7

Quelques démos sur le ScreenTouch, allez on va pas se priver, ils nous montrent du matos !

Bref, un bon début de Keynote, résolument marketing avec une dévotion totale à Windows 7

En même temps, faut bien l’avouer, Windows 7 EST une réussite. Ok, let’s go to the next, show me new Stuff !!!

Internet Explorer 9

Ah tiens, je me remets de mes émotions (http://microsoftpdc.com/tablet) pour voir l’annonce de IE 9, avec des capacités encore plus évoluées et un test ACID3, (presque) concluant.

Ah mais je rêve, IE9 fait du rendu Direct X ! oulà oulà ! un Full Rendering D2D sur IE 9, ça calme !

Scott Guthrie fait son entrée, et nous parle de Silverlight 3. C’est beau, et on est pas en reste en France avec des sites comme Canal +, Le tour de France ou encore Rolland Garros sont alors plein cadre, plein slide :)

ANNONCE DE SILVERLIGHT 4

Avant d’aller plus loin non seulement l’annonce est faite, mais la béta est déjà disponible sur http://www.silverlight.net Y’a plus qu’a !

image Allez, c’est parti pour les démos. Une des nouveautés concerne la gestion des médias, webcams et micros.

Scott Gu nous fait une démo, avec des effets appliqués en temps réél au rendu, pixels shaders.

Avec son style bien particulier la salle est pliée quand il prend un screenshot de sa tête déformée par un effet appliquée en live sur sa webcam !

imageUne démo de scan d’un code barre sur SL4, bref ça donne quelque chose d’extraordinaire dans moins de 5 Mo quand même !

 

 

 

 

 

 

IIS Smooth Streaming : Bon ça c’est pas nouveau, mais peu de personnes connaissent. Je vous conseille de vous rendre ici pour plus d’infos : http://www.smoothhd.com/ Une démo sur IPhone; après on dira que MS est pas ouvert :) Bon ok, la démo a pas marché, mais on y croit ! :)

Sinon au menu de Silverlight 4, on a noté encore :

  • Gestion du clic droit (Mais ouiiiiiiiiiiiiiiiiiiii)
  • Rich Text Editor
  • Printing
  • Clipoboard access
  • Mouse wheel
  • Implicit style (mais ouiiiiiiiiiiiii)
  • Drag drop
  • CommandBinding (MVVM)
  • Additionnal Controls
  • Support HTML

image S’en suit une démo d’un éditeur HTML dans Silverlight 4.

Ca en jette pas mal, le drag and drop d’un fichier Word dans une fenêtre SL4 contenant l’éditeur wysiwyg

 

 

 

Au niveau des données; quelques améliorations notables comme:

  • Le partage d’assemblies entre SL et .NET 4
  • Améliorations du Databinding
  • Support du multicast UDP
  • Améliorations REST
  • Améliorations WCF
  • Intégrations des WCF RIA SERVICES

image Sur ce dernier point Scott Hanselman viendra nous faire une démo de RIA Services. Rien de bien extraordinaire, mais qui fait son petit effet :)

 

 

 

 

 

On passe ensuite au support avancé dans Visual Studio 2010. Là au menu, en vrac nous avons :

  • Un éditeur Wysiwyg dans VS 2010
  • Améliorations de l’IntelliSense dans le XAML
  • Améliorations des designers pour le data binding, les layouts et les styles
  • Intégration des RIA Services
  • Support du Full Trust en mode OOB

image

image

Au niveau performance SL4 nous promet d’être 2 x plus performant et de démarrer 30% plus rapidement.

image Une démo très très sympa sur une application Facebook sur Silverlight 4.

Y’a pas à dire, ça déchire du taureau des Landes.. avec accès direct au matériel (upload du photo de son device en simple glissé-déposé)

 

 

 

 

 

La dernière partie du KeyNote sera axé sur Office 2010 et les nouveautés Sharepoint. Etant loin d’être expert sur le sujet, je laisse le soin à Redo qui est assis à coté de moi, de vous relater la fin de session !

Voilà, direction les sessions. La journée s’annonce chargée !

,

Et voilà je suis en possession de mon nouveau laptop offert par MS pendant la PDC.

Moi qui voulait en acheter un !!!

Tiens, quelques photos de la bête !

CIMG1588 CIMG1592

 CIMG1591

Tiens, en comparaison de ma machine actuelle, ca va me changer ;) (et encore je vous parle pas du poids !!)

CIMG1589

Juste aprés la session sur Azure Present and Future, voici la même mais cette fois ci pour SQL AZURE

Les nouveautés présentés vont tourner autour de :image

  1. Intégration avancée dans SSMS SQL SERVER 2008 R2
  2. Intégration dans Visual Studio 2010
  3. Reporting
  4. Synchronisation

 

Alors bon, un peu déçu sur le coup car au final, aucune démo ni sur la BI, Reporting et encore moins sur Data Sync.

Il faut croire qu’il faudra attendre les sessions dédiées sur ces sujets !

Sinon pour le reste :

image J’ai pu voir le plan d’exécution d’une query sur SQL AZURE depuis Visual Studio 2010. Sympa !

 

 

 

 

Nous avons droit à une présentation du système de backup, bien que cette partie ne nous concerne pas puisque totalement pris en compte par SQL AZURE.
Par contre possibilité de configurer et gérer les backups.

Système de Clone : Possibilité de Cloner les bases de données :

image

   1: Create Database xx.ProdClone as CLONE of xyz.Prod

D’autres points, en vrac:

  • Support de providers SaaS (Api, template, Meta-data tracking, Support de scénarios)
  • Support du DAC
  • Support de Data Sync
  • Dynamic database splits
  • Merge databases
  • Management across group of databases
  • Aditionnal database size options
  • Multiple database connections
  • fan-out query on multiple databases

Les demandes utilisateurs (je n’ai pas su voir si cela allait être intégré)

  • Support for profiler
  • support spatial
  • Full Text Search
  • Change Tracking
  • CLR
  • BI
  • Encryption
  • Additionnal authentication

Tiens, une info (on s’en serait douté mais bon) “Dallas” utilise SQL AZURE.

Sql Azure codename “Vidalia”

Le principe : Séparer le contrôle des données des données elles-même.

Pas de démo sur le sujet, le principe reste sympa. A tester :)

,

Voilà une session que j’ai nommé “Killer Session” ! (en fin de journée je vous explique pas !)

Session animée par deux (jeunes) membres de l’équipe WPF Performance (Blogs http://blogs.msdn.com/jgoldb/ et http://blogs.msdn.com/ricom)

Autant le dire de suite, ces deux jeunes envoient du bois !

Je ne vais pas rentrer dans les détails, la session est très technique. Quelques slides pour résumer la philosophie du truc :

image

Oui les mesures, et surtout l’expérience !

image

je ne résiste pas à la tentation de vous montrer un des exemples découvert pendant la session:

Il s’agit d’éviter de charger des modules inutilement dans votre code.

Supposons que j’ai dans un “IF” un appel à un objet externe, faisant parti d’une dll supplémentaire :

   1: // Some code
   2: // /...
   3:  
   4: if (!expected)
   5: {
   6:     using (COMClassLogger log = new COMClassLogger())
   7:     {
   8:         log.WriteLog("Error");
   9:     }
  10: }
  11:  
  12: // Some code
  13: // /...

Votre module est loadé lors du chargement de l’assembly principal, alors que celle ci peut ne pas être utilisé (Peut être parce qu’on passe pas dans le IF :) )

Oui monsieur, l’évaluation du IF est fait au runtime, pas à la compil !!!

Le truc pour éviter ça c’est d’exporter votre appel dans une méthode, “like this” :

Si lors du chargement, votre module supplémentaire ne fait pas parti du corps de la méthode de chargement, il ne sera pas chargé. On fait donc un truc du genre :

   1: // Some code
   2: // /...
   3:  
   4: if (!expected)
   5: {
   6:     WriteLogEntry();
   7: }
   8:  
   9: // Some code
  10: // /...
  11: }
  12:  
  13: private  void WriteLogEntry()
  14: {
  15:     using (COMClassLogger log = new COMClassLogger())
  16:     {
  17:         log.WriteLog("Error");
  18:    }
  19: }

Le problème c’est le JIT compiler va optimiser ce code est “coupé-coller” le corps de la méthode au niveau de l’appelant. Donc un coup d’épée dans l’eau !

Bref, il nous faut donc indiquer à .NET de ne PAS faire faire ce qu’on appelle du “Inlining”, en marquant notre méthode avec un attribut MethodImpl, “like that” :

 

   1: [MethodImpl(MethodImplOptions.NoInlining)]
   2: private  void WriteLogEntry()
   3: {
   4:     using (COMClassLogger log = new COMClassLogger())
   5:     {
   6:         log.WriteLog("Error");
   7:     }
   8: }

Et voilà un module non chargé, qui pourrait bien faire ramer (potentiellement) notre application au démarrage !

C’était je pense un des exemples les plus simple de la session :)

Nos deux compères ont beaucoup utiliser les outils de traces à disposition; voici un bon slide qui résume ceux qu’ils ont utilisé :

image

 

Voilà, bonne optimisation à tous :)

,

Et voilà, la session n’est pas encore donnée (elle aura lieu Jeudi) mais déjà la CTP de SQL DATA Sync est disponible !

Je reviendrais dessus rapidement mais voici déjà l’annonce sur le Blog de la team Sync :

http://blogs.msdn.com/sync/archive/2009/11/17/announcing-sql-azure-data-sync-november-ctp-available-for-download.aspx

CA, ça roxe !

,