24 février 2009

MCPD Windows Forms 3.5

En ce moment, c’est la série des certifications qui sortent, et que j’obtiens. Me voici MCDP Windows Developer 3.5 et MCTS Windows Forms 3.5. La liste complète de mes certifications est ici.

6 certifications .NET 3.5 obtenues en un an et dès leur sortie, voilà qui me permet de prouver mon expertise, si besoin était.

MCTS4 MCPD2 MCT2

12 février 2009

TechDays 2009 Paris compte-rendu ecrit

Comme promis, voici mes compte-rendus des sessions que j'ai pu voir aux TechDays 2009 à Paris, qui viennent de s'achever:

Merci à tous les speakers pour ces TechDays de qualité et à Microsoft de les avoir organisés.

Audrey Petit nous fait un autre compte-rendu ici.

Live & Mesh Framework, Virtual Earth, Search: les API

PIC_0214 Par Pierre Couzy de Microsoft et Davy Frontigny de Winwise.

Les services Live

  • Transversaux: Live Search, Virtual Earth, Silverlight Streaming;
  • Liés à un utilisateur: Live Spaces, Live ID délégation;
  • Mesh: d'autres services.

Live Search

Ce n'est pas que de la recherche Web, ce service peut être intégré à une application. La nature de la source recherchée peut changer: Web, image, contenu géo-localisé.

Les protocoles: REST (JSON, XML, RSS) et SOAP (donc accessible par Silverlight).

Il faut simplement un AppID pour l'utiliser. Pour l'obtenir: http://search.live.com/developers

Démo: pour les développeurs, le point d'entrée est http://dev.live.com. On obtient un AppID qui est une chaîne à passer lors des appels.

Virtual Earth

PIC_0215 C'est d'abord un contrôle et une API JavaScript présentatnt des vues carte/satellite/3D. L'API permet de placer des points d'intérêt sur la carte et d'avoir des layers dans lesquels on peut mettre nos propres structures d'affichage qui apparaissent en surimpression. Ce contrôle prend maintenant en charge la localisation et l'import de modèles 3D.

On dispose en outre de Web Services: imagerie, recherche, GeoCode.

Démo: le SDK interactif en ligne montre des exemples courants et le code source permettant de les obtenir.

PIC_0216 Démo: WebLib, créé par Pierre Couzy et enrichit avec Davy Frontigny, qui affiche les bornes Velib proches avec leurs disponibilités. On note que lorsque l'on zoome en-dehors, les "pushpins" ne s'enchevêtrent plus: ils sont filtrés selon le niveau de zoom.

Les services orientés utilisateur

PIC_0218 Live Streaming / Silverlight Streaming. C'est une plateforme d'hébergement de 10 Go d'espace gratuit. On peut y mettre tout dont des applications Silverlight ou des vidéos.

Live Spaces: combine des contenus et APIs: photos, blogs, fichiers (SkyDrive), contacts et amis, listes, événements. On peut y accéder via les pages Web (permet le contrôle d'accès) ou bien en RSS (contenu public à partager).

Démo: les Quick Applications sont des applications prêtes à l'emploi.

Identification

Le but est que le site puisse me reconnaître, mais sans connaître mon compte Live ID, bien sûr. Le service Live ID donne un identifiant permettant de reconnaître un utilisateur, mais ne permet pas de reconnaître un utilisateur entre plusieurs sites car l'identifiant est différent d'un site à l'autre pour un même utilisateur.

Si le site veut récupérer des informations de l'utilisateur, il utilise la délégation: il demande à l'utlisateur l'autorisation (révoquable à tout moment par l'utlisateur) d'accéder à une partie de ses données.

Live Mesh

C'est un frontal Web avec 5 Go d'espace partagé.

Les fichiers sont synchronisés avec un répertoire local sur la machine. On peut les partager entre machines mais aussi entre utilisateurs. On peut en outre prendre la main à distance sur une de ses machines.

La version Beta est la version actuelle, mais il y a aussi une CTP avec une API pour les développeurs. En outre, on peut créer des applications qui vivent dans cet espace partagé, et qui sont donc synchronisées. Elles sont aussi accessibles en mode local pour tourner directement sur le poste local, même en déconnecté.

Il existe une Live Framwork Tools pour Visual Studio qui permet d'avoir des templates prêts à l'emploi pour commencer nos propres applications.

UI Automation Framework: développer des applications accessibles

PIC_0212 Philippe Beraud, Consultant Architecte chez Microsoft France et Julien Chable de Wygwam.

L'accessibilité est bien comprise dans le Web, aujourd'hui, mais la question se pose pour les applications RIA/Web 2.0 et les clients lourds/RDA. La question est notamment posée aujourd'hui par les grandes entreprises.

Définition: les dispositifs d'assistance permettent à une personne d'utiliser une personne malgré une gène. Par exemple, pour une personne non voyante l'ordinateur portable est un outil indispensable de communication avec le monde, et elle peut utiliser un clavier braille dynamique et/ou un logiciel de lecture à l'écran.

Concrètement, une application a besoin de s'exposer aux dispositifs d'assistance afin que le dispositif puisse communiquer et naviguer avec la machine. C'est une médiation à double sens: donner connaissance à l'utilisateur de l'application, mais aussi permettre à l'utilisateur d'agir sur l'application.

Historique des technologies:

PIC_0213

User Interface Automation (UI Automation), arrivé avec .NET 3.0, a permis de décrire les applications de manière plus uniforme et complète, par exemple en prenant en charge les apparitions/disparitions d'éléments.

UI Automation ne se limite pas à l'accessibilité. Il permet aussi d'automatiser l'interface, par exemple pour conduire des tests d'interface automatisés.

Avec UI Automation, un développeur WPF ou Silverlight va pouvoir simplement donner des informations sur ce à quoi servent les contrôles. Il n'y a plus besoin de prendre de framework d'un éditeur tiers pour cela, ce qui permet des réductions de coûts d'apprentissage.

UI Automation permet de

  • collecter des informatios sur l'IHM;
  • naviguer entre et intéragir avec les éléments de l'IHM;
  • être notifié des changements d'IHM.

Il ne permet pas de déplacer la souris et simuler la frappe sur le clavier, il va directement récupérer les contrôles pour leur passer des valeurs et réagir à leurs événements. Il ne s'applique bien entendu pas aux éléments non graphiques (Timers, ...).

Concepts d'UI Automation:

  • arbre d'automatisation: arbre partant du bureau Windows et allant en profondeur jusque dans les applications;
  • vues de l'arbre: permet de filtrer l'arbre, par exemple juste sur un certain type de contrôles;
  • élément d'automatisation: l'atome, c'est le cas de tous les éléments d'IHM;
  • sur chaque élémnt, il y a des propriétés, par exemple son rectangle d'occupation (permettant notamment de récupérer un contrôle par sa position);
  • modèles de contrôles: donnent les capacités comportementales d'un élément, c'est un concept très important;
  • événements: permet aux contrôles de notifier d'une action/changement.

Pour obtenir un élément AutomationElement, on peut le faire par:

  • coordonnées;
  • focus;
  • handle HWND;
  • parcours de l'IHM (arbre).

Les 3 propriétés essentielles:

  • AutomationIdProperty: identifiant unique au sein de l'application;
  • ControlTypeProperty: type primaire de contrôle;
  • NameProperty: utilisée notamment pour la localisation (traduction).

Démo: UI Spy est un outil du SDK Windows qui permet de voir l'arbre des contrôles. On peut filtrer l'arbre par des conditions sur les propriétés.

Les fournisseurs doivent référencer l'assembly UIAutomationProvider et implémenter les interfaces UI.Automation.Provider

Côté client, on utilise les Patterns correspondant aux Providers.

Démo: en WPF, dans le fournisseur, on ajoute des propriétés AutomationProperties (exemple: <TextBox AutomationProperties.Name=''NomUtilisateur"/>. Côté client, on récupère l'élément AutomationElement et l'on peut agir dessus. Comble du bonheur, en Silverlight 2 ça fonctionne et c'est la même chose que les applications WPF. C'est un avantage sur Flash, car avec Flash on ne voit que l'application Flash et on ne peut pas creuser dedans pour voir ses contrôles.

Plénière recherche et innovation

C'est la troisième journée des TechDays.

Quelques perspectives sur le futur

PIC_0204 Bernard Ourghanilian commence par un hommage à Jim Gray, qui a prévu les "12 travaux d'hercules" de l'informatique dont nous retiendrons la scalabilité: si nous avons 1 million de machines en plus, pouvons-nous aller 1 million de fois plus vite? Pour Microsoft, c'est le nuage Windows Azure, qui a été créé pour la montée en charge. Microsoft a déjà prévu des data-centers de 3ème génération qui sortent prêts d'usine, permettant la création d'un datacenter en 3 mois au lieu e 18 mois aujourd'hui.

Stéphane Nègre, Directeur Général d'Intel France, nous parle de la loi de Moore: chaque année on double les transistors que l'on peut mettre sur une même surface. Les progrès actuels montrent que la loi de Moore va continuer à se vérifier dans les années à venir.

Bernard Ourghanilian et Laurent Ellerbach nous rappellent qu'un énorme défi est la capacité à utliser tous les coeurs d'une machine multi-core. Car il faut écrire des programmes parallèles, et ce n'est a priori pas facile pour nous.

Nota de votre serviteur: ça tombe bien, à l'été 2000, déjà, je réalisais avec succès la parrallélisation d'une application de simulation de plasma chez Kawasaki Heavy Industries.

Jim Gray a aussi annoncé qu'une tâche serait de réussir le test de Turing, et notamment de savoir différencier deux personnes.

Une autre tâche est d'améliorer l'interface homme machine pour que la machine devienne un prolongement du corps humain (réalité augmentée).

PIC_0210 Démo: jeu de go sur une table surface. Le jeu de go est bien plus complexe que le jeu d'échcs, et récemment un programme créé en partenariat avec l'Ecole Polytechnique a réussi à battre un être humain en Chine (programme parallèle qui sait utiliser tous les cores à sa disposition).

Démo: HP TouchSmart qui est une machine dual-touch bien meilleur marché qu'une table Surface.

Une autre tâche sera d'améliorer la sécurité et la fiabilité. Car les systèmes d'aujourd'hui, comme Windows, ont été conçus dans l'optique de ressources rares et d'environnements sûrs, et se retrouvent confrontés à des utilisateurs non experts, des vers, virus, et beaucoup plus de ressources. Il faut s'adapter. Le projet Singularity, conçu par Microsoft Research, est un OS "révolutionnaire". Son noyau est écrit en code managé, et chaque tâche (y compris les drivers) s'exécute en mode "user". Les processus sont isolés, ce qui évite une des failles d'Unix/Windows où on partage des morceaux de code commun  Chaque processus est doté d'un manifeste qui indique des demandes de sécurité. Il est gratuit pour la recherche et l'environnement. Le fait de ne plus changer de contexte donne un système plus performant (benchmarks Windows, FreeBSD et Linux à l'appui).

Note de votre serviteur: ce n'est rien d'autre que .NET utilisé pour créer un OS, et l'on applique ainsi le CAS (Code Access Security) qui permet de sécuriser de manière ultra-fine chaque assembly.

Le douzième des travaux de Jim Gray est de multiplier le rendement de programmation par un facteur 1000, autrement dit d'avoir un programmeur automatique. Aujourd"hui 13% des projets sont à l'heure, 31% sont abandonnés par manque de qualité (source: Capers Jones). L'enjeu est de passer de l'artisanat à l'informatique industrielle. Cela passe par la modélisation et les DSL (Domain Specific Languages), qui sont des langages métier "qui parlent comme les gens". Exemple: pour un banquier, parler de débit et crédit, pas de la requête SQL correspondante qu'il ne veut pas voir.

PIC_0211 Démo: Jean-Marc Prieur nous montre Visual Studio 2010. Dans la version Team Architect, on peut créer un modèle du code par découverte à partir d'une solution existante. On peut générer un diagramme de séquence UML à partir d'un code existant, et même l'inclure en tant que commentaire dans le code.

10 février 2009

Extensibilité des applications

Une excellente session par Yann Schwartz, Architecte technique chez Polom et Sébastien Ros, Chief Software Architect chez Evaluant.

Introduction

PIC_0197 Il s'agit de savoir prendre en charge la complexité liée à la gestion d'un système constitué de nombreux morceaux.

Le problème: nos applications sont constituées de nombreuses parties, reposent sur des services locaux ou distants, dépendent d'assemblages tiers (bibliothèques, par exemple pour le traçage), sont exécutées dans différents contextes (notamment de sécurité). Elles sont donc faciles à construire mais difficiles à démêler.

On veut notamment: tester sans dépendances, gérer le cycle de vie des composants, et distinguer les besoins techniques des besoins métier.

Avec un peu de bon sens, on peut imaginer:

  • séparer contrat et implémentation, pour que les deux parties ne se connaissent pas
  • utiliser des factories, car c'est une mauvais idée que chaque composant fasse comme s'il était seul au monde. On ne fait pas de new directement. C'est le "new new".

Mais il reste un problème, même avec les factories: c'est toujours le composant qui décide quand instancier. Avec l'inversion de contrôle, on définit les interfaces et leurs dépendances, et le système s'occupe de l'instanciation.

Tant qu'à faire, on va aussi généraliser la notion de factories en: enregistrant les dépendances, les résolvant en cascade.

Les frameworks d'IoC sont entre-autres:

  • Spring.NET (le plus ancien, venant de Java)
  • Castle Windsor
  • NInject
  • Unity

Unity

Notion de conteneur: c'est lui qui s'occupe de tout. Il est la source unique d'instances. On s'enregistre auprès de lui, et c'est lui ui résoud les demandes de contrats avec au choix:

  • Service Locator: c'est l'équivalent des factories, il est un peu tombé en désuettude.
  • Injection de dépendance (constructeur ou propriétés).

Le conteneur ajoute quelques notions sympa: singleton/instance, implémentations multiples, interception (par exemple pour ajouter du log, du cache, ...).

On peut écrire la configuration en XML, mais on préfère maintenant plutôt le code vu que ce sont des paramètres peu modifiés.

En Unity, on instancie le Container, et on appelle sa méthode RegisterType ou RegisterInstance (singleton) en lui passant interface et classe. On appelle ensuite sa méthode Resolve pour récupérer un objet sur lequel on peut travailler.

Pour les tests unitaires, cela nous simplifie aussi énormément la vie. Car d'habitude on rencontre un problème dès que nos composants utilisent des ressources telles que le réseau, la base de données, ... Avec l'IoC, c'est très simple: l suffit d'injecter des implémentations vides. On a même des frameworks pour éviter d'écrire les implémentations vides (exemple: Rhino.Mocks).

On a ainsi découplé les composants. Mais il reste à gérer l'interaction entre l'application et le monde extérieur. C'est là que MEF arrive.

MEF, Microsoft Extensibility Framework

PIC_0198 C'est le moteur d'extensibilité pour ASP.NET 4.0, Visual Studio 2010, Oslo.

Principe: on utilise les attributs [Import] et [Export] pour mettre en relation fournisseur et consommateur d'interface (c'est de l'IoC). MEF assure la mise en relation, donc le découplage.

Note: on peut exporter des classes entières, mais aussi de simples méthodes sous la forme de délégués.

Pour aller plus loin, on peut trouver des Parts (composants) dynamiquement. Grâce à la classe DirectoryCatalog, on peut même décuvrir les composants dans un répertoire.

Les composants sont paritaires: une Part peut déclarer des Import et des Export.

Conclusion

MEF est simple (utilisation d'attributs), open source, disponible.

Unity a son utilité: MEF permet de découvrir les composants, alors qu'Unity sert à travailler sur un ensemble connu de composants.

SQL Data Services ou le stockage de vos données dans le cloud

Par Pascal Belaud, Relation Technique Développeurs chez Microsoft France.

Présentation

PIC_0194 SQL Services est une brique d'Azure Services Platform, qui s'appuie sur Windows Azure.

Au sein de SQL Services, SQL Data Services représente la partie données, le reste étant le reporting et l'analyse dimensionnelle. Il s'agit de SQL Server, d'ailleurs à l'origine le nom était SQL Server Data Services ou SSDS.

Comme pour le reste d'Azure, l'intérêt est de pouvoir utiliser des ressources à la demande sans se soucier de l'investissement et de la gestion.

Dans Windows Azure il y a déjà Windows Azure Storage qui permet de stocker basiquement des informations (un peu comme un file system) dans des tables. SQL Data Services ajoute les services orientés base de données, notamment le relationel et le reporting.

Principe

Trois pilliers:

  • on peut stocker tout type de données
  • services de traitement de données évolués
  • excellence opérationnelle: sécurisé, sauvegardé, redondance

Du coup SDS offre: montée en charge, réplication géographique, prix compétitif, confidentialité des données.

Il y a deux parties:

  • front-end, avec 2 interfaces: REST et SOAP.
  • back-end (stockage): cluster de données (nos données) et master cluster, pour être sûrs de ne pas perdre les données.

Modèle de données: ACE

  • Authority: vous, elle est associée à un nom DNS et possède une collection de Containers.
  • Container: unité de consistance pour les données, par exemple "factures". On pourrait dire Container=Table. Un container est le scope pour les requêtes. Un container contient des Entités.
  • Entity: paire name/value. Pas de schéma obligatoire. Cette approche simple permet notamment de simplifier le versionning (exemple: ajout de champ).

Démonstration avec REST

PIC_0195 Le fichier de configuration contient dans appSettings 4 paramètres d'identification de l'autorité.

On invoque en REST le SDS pour créer une autorité, des containers puis une entité.

Pour requêter les données, on peut ajouter une requête ayant une sytaxe proche de LINQ directement dans l'URL.

Pour aller plus loin

Malgré l'absence de relations, on peut très bien faire des jointures, en utilisant la syntaxe JOIN des requêtes LINQ lors du requêtage.

Démonstration avec SOAP

SOAP permet d'avoir une approche souvent plus adaptée pour les développeurs, pour l'accès à SDS, alors que REST est plutôt pour les développeurs Web.

On appelle simplement une méthode Create sur le proxy, en lui passant un scope indiquant si c'est une autorité, un container ou une entité que l'on veut créer.

Pour ajouter une propriété sur une entité, on utilise un dictionnaire (clé/valeur oblige!) que l'on passe via le proxy SOAP.

Pour mettre à jour des données, on fait strictement comme pour l'ajout, mais on appelle la méthode Update du proxy et on passe l'entité d'origine comme contexte.

Limites

  • Il peut y avoir jusqu'à 10 secondes entre la création d'une entité et son apparition dans les résultats d'une requête.
  • Container: 2 Go maxi.
  • Entité: 2 Mo maxi.

Accès concurrentiel

Si deux clients SDS font une mise à jour simultanée, la propriété version sur chaque entité permet de s'assurer que l'on travaille bien sur la version qu'on avait avant. Il suffit donc dans le code de faire un try ... catch.

Services .NET avancés dans la plateforme Azure

Par Pierre Couzy de Microsoft, et Rochdi Chakroun et Geoffrey Daniel de Winwise.

Présentation de .NET Services

PIC_0190

Dans .NET Services il y a entre autres:

  • zone d'orchestration de service pour la communication avec Azure
  • Contrôle s'accès: à qui ai-je affaire?

Services de connectivité

Intérêt:

  • enlever le problème de l'exposition d'un service, car en entreprise c'est laborieux de mettre à disposition du public un service.
  • simplifier les relations bidirectionnelles en rendant la découverte facile.

PIC_0191 Offfre la traversée NAT-NAT en passant par le relais Azure qui agit en tant qu'intermédiaire.

Pour ce qui est du monde Microsoft, la communication se fait au travers de bindings WCF donc c'est très facile à utiliser pour les développeurs .NET WCF actuels. Concrètement, c'est netTcpRelayBinding.

Principe de mise en relation:

  1. le serveur s'enregistre auprès du Service Bus, via un frontal.
  2. Le client envoie sa demande au frontal, qui la retransmet au serveur.

Démo: transformation d'un service WCF netTcpBinding en service passant par le nuage. Il suffit d'ajouter une référence à l'assembly correspondant et de configurer le binding sur netTcpRelayBinding.

Il est possible d'enregistrer plusieurs serveurs auprès du nuage grâce au NetEventRelayBinding.

Un autre Binding, NetTcpRelayBinding (Hybrid), permet une communication directe entre le client et le serveur; à ce moment, .NET Services ne sert plus qu'à mettre en relation client et serveur. Dans ce mode, .NET Services utilise un algorithme prédictif pour deviner le prochain port sur lequel doit avoir lieu la communication.

Contrôle d'accès

Le problème est d'unifier l'identification sur Internet comme elle l'est au sein d'une entreprise. L'identité n'est pas juste un login/mot de passe, ce peut être des rôles et autre. Cela est modélisé par les claims, que l'on place dans des jetons/token pour les transporter physiquement. Ces jetons sont distribués par des services de distribution de jetons / STS.

Mode de fonctionnement:

PIC_0193

L'idée est d'avoir un serveur Access Control (c'est un STS) qui traduit les jetons locaux (exemple: Actice Directory) en jetons compris par l'autre partie grâce à des règles de traduction.

Gestion de processus

PIC_0192 On peut faire tourner un Workflow de Workflow Foundation directement dans .NET Services. On passe par le même portail d'administration, et l'on peut lancer de nouvelles instances par API ou via le portail.

Quelques activités standard WF existent, plus des activités qui sont propres à la communication client/serveur.

Découverte par l'exemple d'une application Windows Azure

PIC_0189 Par Pierre Lagarde et David Rousset, relations techniques avec les développeurs.

Nous allons voir comment faire une applications Web qui permet de déposer des photos.

Pourquoi le nuage?

Il s'agit d'une plateforme d'hébergement d'applications. Microsoft prend en charge le coût d'infrastructure et on ne paie que l'utilisation. Cela permet notamment de faire face aux pics d'utilisation simplement.

Avantages:

  • réduire les coûts d'investissement et opérationnels
  • simplification de l'administration et du déploiement des applications
  • souplesse et simplification de la montée en charge

La plateforme de services Azure

PIC_0184

On peut héberger tout ou partie d'une application dans le nuage Azure. Je peux par exemple conserver chez moi la partie qui gère les données sensibles.

  • Services: environnement d'exécution, analogue à un services Windows
  • Compute
  • Storage
  • Management

Démo d'une application complète

Architecture de l'application:

PIC_0187

StorageClient est un projet du SDK qui permet de simplifier l'accès par code aux services d'Azure.

Etapes à suivre (le code source sera publié par Pierre Lagarde mais en utilisant le modèle MVC d'ASP.NET):

  • Ajout d'un projet Web+Worker nommé "Keynote service". Cela crée un projet référençant deux projets classiques dont l'un Web, ce qui permet d'intégrer une application Web existante.
  • Ajout d'un fichier "Web Form", AddImage.aspx. C'est de l'ASP.NET standard.
  • Ajout de contrôles FileUpload et Button à la page AddImage.aspx. Dans le CodeBehind, pour stocker les photos on utilise Azure. On référence le projet StrorageClient.
  • Déclaration de variables BlobContainer et StorageAccountContainer, que l'on obtient avec des méthodes GetXXX et BlobStorage.Create. Le fichier de configuration ServiceDefinition.csdef permet de configurer les storages.
  • Transformation du Stream du FileUpload en blob.
  • Astuce: un projet CodePlex AzureStorageExplorer permet de retrouver les fichier placés sur le service de stockage durant le développement.
  • Ajout d'un handler ViewImage.ashx. Dedans on ouvre le blob avec StorageAccountInfo et BlobStorage.Create. Cela permet de récupérer une image d'après son nom de fichier.
  • PIC_0188 Astuce: penser à redéployer dans la DevFabric après une modification. Il ne suffit pas de recompiler.
  • Pour manipuler les données qui sont dans une table, il y a un provider LINQ. Il suffit alors d'hériter de TableStorageEntity avec une classe pour que les propriétés de l'objet dans la table soient découvertes et mappées sur notre classe!

Partie 2: création du service de création des vignettes

  • Le WorkerRole est analogue à un service Windows, et il a notamment des méthodes Start et Stop.
  • On utilise les mêmes classes StorageAccountInfo et BlobStorage.Create pour récupérer les images dans les tables.
  • Astuce: ajouter des traces avec RoleManager.WriteToLog, ce qui simplifiera le déboguage après déploiement.
  • On crée une boucle infinie qui attend avec Thread.Sleep et traite des messages: queueThumbnail.GetMessage(). On n'a pas à se poser de questions de synchronisation pour le traitement des messages, c'est fait par Azure.
  • Astuce: en hébergement Azure, on est plus proche du "Medium trust" que du "Full trust". Faire attention aux permissions utilisées. Il s'agit d'Azure trust.
  • Pour la génération du thumbnail de l'image, on utilise les classes du Framework .NET classique, puis on repousse l'image sur la table.
  • On supprime alors le message de la queue avec DeleteMessage.
  • Astuce: plutôt qie F5, il vaut mieux faire Ctrl-F5 pour ne pas créer une DevFabric à chaque fois. Mais il faut du coup penser à arrêter la DevFabric quand on a fini.
  • Dans la page Web, on ajout un message (méthode PushMessage) pour informer le WorkerRole qu'une image doit être traitée.
  • Astuce: lors du déploiement, les tables n'existent pas dans Azure. Il suffit d'appeler CreateSchema pour qu'elles soient créées.

SDKs et disponibilité des services

Il faut récupérer un "token". C'était très compliqué à faire. Le token est lié au Live ID. Il faut demander à Microsoft un token, et on passe en file d'attente. Sur Azure ça va assez vite, sur Mesh ça prend du temps.

SLA et pricing ne sont pas encore disponibles. Ils seront probablement annoncés au Mix à Las Vegas.

Pour aller plus loin, si vous cherchez un tutorial étape par étape pour la création d'une application Azure simple, allez voir ce billet de David Rousset.

Session Plénière

PIC_0176 Visual Studio 2008

Il a 7 ans d'existence autour de .NET, et s'enrichit de nouveaux langages constamment. Le point de synchronisation des technologies est le Framework 3.5 SP1: WPF, ASP.NET, Silverlight, Compact Framework. Et c'est Visual Studio 2008 le point d'entrée.

Vidéo: Isagri (dont le directeur technique n'est autre qu'Olivier Dewit) nous fait un retour d'expérience sur la décision de réécriture de leurs applications avec WPF et des services en architecture client-serveur.

Démo: le framework .NET permet y compris des développements sur smartphone Windows Mobile. Mais aussi par exemple la résolution de problématiques complexes avec MSF.

PIC_0175 Démo: le plugin PHP de VS2008 permet un développement complet d'application Web PHP y compris le déboguage. Et l'application tourne sur IIS.

WPF

PIC_0178 Démo: WPF permet notamment de faire des applications Surface multi-touch. Dans la démonstration, Mitsu Furuta utilise un canard jouet qu'il pose sur la table pour modifier le zoom. L'application de son crû lui permet ici de gérer ses slides. Et il nous montre que ça se code "en deux minutes" avec Visual Studio Express 2008, qui est gratuit. Il utilise notamment le contrôle ScatterView qui est un ItemsControl prenant en charge l'affichage d'éléments éparpillés redimensionnables.

PIC_0179 Démo Windows Seven par Na-Young Kwon. Elle le montre sur un Netbook, puis passe à un PC portable. Les fenêtres se dockent sur les côtés, et la prévisualisation des fenêtres se fait directement à leur emplacement d'origine lors du passage de la souris sur les miniatures. La recherche est étendue à des sources comme Twitter grâce à des connecteurs qu'on ajoute en tant que simples fichiers XML. Windows 7 prend en charge le multi-touch qu'il intègre notamment aux applications existantes.

Visual Studio 2010

3 mots d'ordre:

  • Agilité: les gros fichiers sont pris en charge.
  • Simplicité
  • Extensibilité: il y a du .NET (MEF pour Managed Extensions Framework) qui permet de développer des add-ins.

Démo: Eric Vernié nous montre un plug-in qui fait de la coloration syntaxique, de l'IntelliSense et de l'ajout de commentaires en WPF dans un fichier texte quelconque.

Démo: un analyseur de performances permet d'analyser une application dans le cadre d'un développement multi-coeurs.

PIC_0180 Démo: Pascal Belaud montre que Visual Studio permet le test automatisé d'interface utilisateur. Pour cela il utilise UI Automation. Il montre en outre Camano, qui permet d'accompagner les testeurs fonctionnels dans le cadre des tests fonctionnels manuels. Camano enregistre notamment une vidéo du test pour permettre au développeur de voir exactement le déroulement du test ayant provoqué un bug.

Windows Azure

Il y a;

  • les services utilisateur. Exemple: location de logiciel
  • les services complémentaires, utilisés par les éditeurs de logiciels
  • les briques pour développeurs, qui viennent enrichir une application

En combinant les logiciels et ces services, on obtient des scénarios d'usage, Software + Services.

PIC_0183 Démo: Pierre Lagarde nous montre le SDK Azure sous Visual Studio 2008. Il fait une application Web qui sera hébergée dans le nuage. Pour stocker les photos de l'application, il utilise des blobs dans le nuage, qui permet notamment d'y accéder via la technologie REST. Il utilise une interface Silverlight pour uploader les photos. Pour traiter les photos, il utilise une application "Worker Role", qui permet de modéliser un service, en l'occurrence de file d'attente - et pour cela il écrit une simple boucle while. Pour la publication de l'application, il n'y a qu'un fichier package avec un fichier de configuration à uploader.

Démo: Mesh permet de partager du contenu (photos par exemple), mais aussi des applications. Dans la démonstration, le positionnement d'images dans une applications sur PC est immédiatement répercuté sur un Mac à travers le nuage.

TechDays 2009 en direct

PIC_0166 Après le TechEd de Barcelone en novembre, cette fois je fais le simple visiteur aux TechDays de Paris, du 10 au 12 février.

Comme à mon habitude, je mettrai ici en direct le compte-rendu des sessions que je suivrai. A priori, ce sera un maximum de sessions Windows Azure. Mais entre l'agenda annoncé hier soir sur le site des TechDays et celui qui était distribué ce matin, je ne m'y retrouve pas, du coup ça va être difficile de voir les sessions prévues.

03 février 2009

Consultant mais pas responsable?

Il est grand temps de s’inscrire aux TechDays 2009, qui auront lieu la semaine prochaine. C’est chose faite pour moi, mais je voulais partager avec vous un détail vu sur la page d’enregistrement.

De là à penser que Microsoft considère qu’un consultant est irresponsable, il n’y a qu’un pas. ;-)

consultantnonresponsable

Bien sûr, je plaisante. Pour ma part, je me sens responsable des problèmes de mes clients, et j’aide à les résoudre.