Archives par étiquette : PDC 10

image

Les nouveautés d’IE 9

Microsoft est en train de perdre du terrain
face à la concurrence représentée par Firefox de la fondation Mozilla, Google Chrome,
et Safari. Autrefois très largement leader, le navigateur est passé sous les 60 ou
50% de parts de marchés selon les sources.
Les challenges de l’éditeur pour la prochaine
version de son navigateur sont simples :

  • La performance
  • Respect des standards
  • Intégration au système d’exploitation et intégration des extensions

Respect des standards

HTML 5 et CSS 3 sont les principaux standards que l’éditeur se doit de parfaitement
respecter pour ne pas être décrié comme ce fut le cas pour d’anciennes versions d’Internet
Explorer.

Alors que la plupart des standards (HTML 5, CSS 3) n’est pas encore finalisé, l’implication
de l’éditeur se fait certes au niveau de leur implémentation au sein d’Internet Explorer
9 mais également au sein des deux principaux organismes responsables de la conception,
validation et finalisation des standards web : le W3C pour l’HTML 5, le CSS et le
SVG, et l’ECMA pour l’ECMA-Script (le nom du standard lié au Javascript).

Pour parvenir à ses fins, l’éditeur fait partie du consortium W3C avec pas moins de
16 membres travaillant activement à la conception et la finalisation du ses standards.
Et le travail est assez important puisque l’on parle d’environ 80 spécifications regroupées
au sein des standards HTML5, CSS 3, SVG et ECMA Script.

Performance

Autre axe stratégique la performance d’Internet Explorer 9 est également un très important
chantier. Avec l’arrivée de frameworks javascript puissants, la montée en puissance
d’Ajax, les applications web se sont fortement complexifiées ces dernières années.
Les performances des navigateurs doit suivre le rythme afin de fournir aux utilisateurs
une expérience optimale.

Et le travail d’engineering effectué par l’éditeur est considérable comme nous allons
le voir au travers du parcours des évolutions apportées avec Internet Explorer 9.

Afin d’améliorer ces performances, l’éditeur a pris comme base Internet Explorer 8
et réalisé des tests de performances sur les sites internet les plus populaires afin
de comprendre le comportement de son navigateur actuel. Ces résultats ont été décomposés
en une dizaine de catégories telles que l’exécution du code javascript, l’affichage
de la page, la gestion de l’HTML du CSS, etc.

image

Figure 1 : Sous-ensembles fonctionnels

Le moteur Javascript

Le premier changement majeur concerne le moteur Javascript d’IE 9. Internet Explorer
8 utilise un interpréteur de code javascript. Comme tous les interpréteurs de code,
celui-ci a l’avantage d’être capable de démarrer l’exécution du code très rapidement,
avec comme contrepartie le fait que l’exécution de ce code ne soit pas très rapide
ce qui va avoir un impact sur les applications utilisant de nombreuses lignes de code
javascript.

La solution adoptée par plusieurs des concurrents d’Internet Explorer a donc été de
passer d’un interpréteur vers un compilateur afin de faire des gains très conséquents
sur le temps d’exécution des applications les plus complexes. Les seuls soucis est
qu’il est donc à présent nécessaire de compiler le code javascript afin d’être capable
de l’exécuter ce qui prend un temps un non négligeable, et ralentit donc le démarrage
de l’exécution des scripts.

Comme on peut le voir le point fort d’une solution étant le point faible de la seconde,
Microsoft a choisi une solution hybride. Internet Explorer 9 utilise à la fois un
interpréteur de code et un compilateur. Le premier est en charge d’exécuter le code
javascript pendant que celui-ci est compilé en arrière-plan. Dès que le résultat de
la compilation est disponible, le navigateur exécutera donc du code natif avec des
performances optimales.

Cette solution est d’autant plus optimale que durant les tests de performances d’Internet
Explorer 8 les ingénieurs de Microsoft se sont rendu compte que même sur des PC multi-cœurs,
le navigateur utilisait quasi-exclusivement un seul de ces cœurs. La moyenne de cœurs
présents sur un PC étant actuellement de 2.46, exécuter du code sur un cœur et compiler
en arrière-plan sur un second cœur ce même code est une solution idéale qui permet
au navigateur de réellement bénéficier des capacités CPU de la machine.

Le parsing du code javascript a également été optimisé. Les ingénieurs de Microsoft
Research ont en effet découvert que sur les principaux sites internet, moins de 50%
du code javascript chargé était effectivement exécuté. L’équipe d’Internet Explorer
a donc modifié le parser de code javascript afin de différer le parsing du code jusqu’�
ce qu’il soit réellement nécessaire.

Autre optimisation, alors qu’Internet Explorer 8 était un hôte générique capable d’appeler
un moteur d’exécution de code VBScript, Javascript ou autre, exposés sous forme de
composants COM, Internet Explorer 9 embarque en son sein le nouveau moteur Javascript.
Il n’est donc plus nécessaire de perdre beaucoup de temps en marshalling pour communiquer
avec le moteur javascript. De plus, pour permettre aux différents moteurs de scripts
de manipuler le DOM de la page affichée, Internet Explorer dupliquait ce DOM vers
tous les moteurs d’exécution de scripts. Le moteur Javascript étant à présent directement
intégré au navigateur, ce dernier manipule le même DOM que le moteur de rendu d’Internet
Explorer.

Le moteur de rendu

Internet Explorer 9 utilise pleinement l’accélération matérielle pour effectuer le
rendu. DirectX, Direct2D et DirectWrite sont au cœur du moteur de rendu. L’idée est
simple, au lieu de passer par le CPU pour effectuer le calcul du rendu, toutes les
opérations de calcul sont effectuées par le GPU. Ce changement est d’autant plus important
que les nouveautés proposées par HTML 5 nécessiteront d’importants calculs.

L’utilisation de l’accélération matérielle est également en cours d’implémentation
sur les navigateurs concurrents mais il est à noter qu’Internet Explorer 9 est le
seul à effectuer le rendu des images, du texte, des vidéos, des images SVG, des Canvas,
et du CSS 3 sur le GPU. La concurrence n’effectue qu’un rendu partiel sur la carte
graphique.

Intégration au système d’exploitation

Après le respect des standards, la performance, la troisième demande la plus fréquente
des développeurs web est de pouvoir mieux intégrer leurs applications web au sein
de l’OS, d’avoir la possibilité d’avoir un comportement qui se rapproche des applications
Windows.

Et la réponse de Microsoft à cette problématique tourne autour de la nouvelle taskbar
introduite avec Windows 7.

L’utilisateur a désormais la possibilité de pinner un site web au sein de la taskbar.
Une fois le site web ainsi attaché, de multiples possibilités sont offertes aux développeurs
web.

Il est à présent possible de s’intégrer à la jumplist afin de faciliter l’accès aux
principales fonctions de l’application web :

image

Figure 2 : Exemple d’intégration à la jumplist

Autre possibilité, l’intégration de boutons intégrés à la miniature de l’application
web. Ces boutons pourront déclencher du code javascript qui permet d’exécuter un certain
comportement en réponse à l’action de l’utilisateur.

image

Figure 3 : Intégration de boutons

Et enfin, pour notifier l’utilisateur il est possible de faire flasher l’icône du
site web ou d’afficher un symbole en overlay :

image

Figure 4 : Exemple d’overlay

<br />

image

Ce qu’il faut retenir de la PDC10

Untitled Voilà un mois que la PDC10 est terminée, le contenu de cet évènement est accessible sur http://microsoftpdc.com.

Cet évènement est destiné à présenter le futur des technologies, il est donc important
d’en tirer une synthèse afin de comprendre les priorités de Microsoft et les différentes
évolutions auxquelles on peut se préparer.

Je vais donc m’attacher via ce post de vous indiquer ce que je retiens par ordre d’importance
ainsi que mon analyse/feedback sur ces différents points.

INTERNET EXPLORER 9 / HTML 5 / CSS 3

Il peut paraitre surprenant de débuter cette synthèse en évoquant la prochaine version
d’IE, mais je dois bien dire que c’est le sujet qui m’a le plus surpris et le plus
impressionné ! Adepte de Google Chrome, je n’utilise plus qu’IE que pour les sites
qui l’imposent (Sharepoint par exemple). Je ne regardais donc les informations liées
à IE 9 que du coin de l’œil, désintéressé. Vu le nombre de sessions dédiées au sujet,
j’ai donc rattrapé mon retard, et je dois avouer que je suis très impressionné par
le travail d’engineering qui est en train d’être réalisé avec IE 9 pour les raisons
suivantes :

  • Le support des standards. Il s’agit bien évidemment du sujet sur lequel le navigateur
    est le plus critiqué. D’un navigateur qui créé son propre standard, à un navigateur
    qui essaie de rattraper son retard dans l’adoption des standards W3C, l’éditeur semble
    en passe de devenir leader dans l’adoption des prochaines versions – toujours non
    finalisées – des standards tels qu’HTML 5, CSS 3, SVG et ECMA Script. La contribution
    de l’éditeur au sein du consortium semble très importante comme en témoigne le pourcentage
    de test cases qu’il fournit (plus de 80% pour CSS 3). Le W3C a d’ailleurs récemment
    communiqué en indiquant que pour le moment IE 9 était le navigateur qui était le plus
    avancé dans le respect des parties des standards qui sont dores et déjà adoptés.
  • Les performances. Il s ‘agit du second axe majeur d’IE 9. Les équipes ont effectué
    un important travail d’étude des performances proposées par IE 8 et en a tirer de
    bonnes conclusions en y apportant des réponses innovantes et/ou élégantes. A propos
    du moteur Javascript on peut citer : la suppression du marshalling COM, le mode d’exécution
    mêlant interprétation et compilation en background, le deffered parsing, etc. Concernant
    le moteur de rendu, on peut évoquer l’accélération matérielle qui est pour le moment
    bien plus complète que l’ensemble des navigateurs concurrents. Le rendu du texte,
    des css, des images, etc.  sont entièrement accélérés par le GPU.
  • L’intégration à l’OS via une intégration possible à la taskbar est plus anecdoctique
    mais permettra quand même de proposer une expérience utilisateur plus proche d’une
    application cliente.

Il reste que l’ergonomie du navigateur n’est pas encore au niveau des Google Chrome
ou Firefox. Des éléments cruciaux tels que la barre d’adresse du navigateur ne sont
toujours pas utilisés efficacement.

Le prochain navigateur méritera donc que l’on y jette un œil attentionné lors de sa
sortie en version finale.

A côté du navigateur, il ne manque plus… que les outils permettant de créer des sites/applications
HTML 5/CSS 3 ! Et de ce côté là, c’est silence radio ! On ne sais pas si la prochaine
version d’ASP.net permettra d’exploiter certaines possibilités de ces standards ou
si l’éditeur proposera le même type d’outil proposé par Adobe à savoir un exporteur
Silverlight vers HTML 5 (comme
l’exporteur Flash vers HTML 5
). On pourra de plus noter que ce genre d’exporteur
pourrait être à l’origine d’un problème plutôt cocasse : il est en effet possible
que les applications ainsi exportées soit plus rapides (car accélérées matériellement)
que les versions originales !

WINDOWS AZURE

Comme cela est le cas depuis la PDC08, le gros focus a été mis sur l’offre de Cloud
Computing de Microsoft : Windows Azure.

Et bien que l’offre proposée avec Windows Azure soit déjà riche, l’éditeur a mis en
avant que la vision de Microsoft pour Windows Azure était de fournir une plate-forme
en tant que service (Platform As A Service) plutôt qu’une simple offre d’IaaS. Il
s’agit du scénario privilégié, et de l’axe stratégique pour Microsoft. Cet axe permet
en effet à l’éditeur de rester un éditeur de logiciel qui au lieu de vendre des boites,
vends sa plate-forme, c’est son système d’exploitation plus une couche de service
applicatifs, sous forme de services utilisés par les développeurs et leurs applicatifs.

image

Et cette PDC10 fut l’occasion pour Microsoft de mettre en avant une excellente référence
client avec la société Pixar. Le célèbre studio de production de films d’animations
est également éditeur de logiciel puisqu’ils utilisent en interne, mais également
proposent à la vente, le logiciel de rendu
RenderMan
. Ce logiciel a été adapté pour l’occasion d’un Proof Of Concept (POC)
afin de ne plus utiliser les nombreux serveurs physiques de Pixar pour effectuer les
calculs nécessaires au rendu d’une frame, mais d’utiliser des instances de Windows
Azure afin d’effectuer ces calculs.

image

Les bénéfices sont nombreux. Dans ce scénario, Pixar n’a plus besoin de gérer des
milliers de serveurs et n’est plus limité par un investissement matériel conséquent.

En effet utiliser une plate-forme de Cloud Computing permet de bénéficier de l’élasticité
et donc de virtuellement utiliser un nombre « infini » de machines pour effectuer
des traitements. Dans le cas du POC présenté par Pixar il appartient à l’utilisateur
voulant effectuer le rendu de définir si sa priorité est d’avoir un rendu rapide mais
couteux (car s’exécutant sur plus de machines) ou d’avoir un rendu qui prend du temps
à moindre coût. Le temps d’exécution n’est plus une contrainte absolue, il peut être
modérée grâce à un nouveau facteur : le coût.

Cette démonstration est intéressante à plus d’un titre. Elle explique de manière simple
le concept d’élasticité. Exécuter un traitement sur une machine ou sur un millier
de serveurs est transparent et peut être effectué d’un simple clic. De plus il s’agit
de la première démonstration de Windows Azure possédant un vrai effet « wow ».

Microsoft a également présenté un grand nombre de nouveautés qui sont ou seront proposées
prochainement. Un nouveau type de rôle a été présenté : Windows Azure Virtual Machine
Role. Comme son nom l’indique ce type de rôle permet de faire fonctionner une machine
virtuelle Windows 2008 R2 hébergée sur Hyper-V sur les serveurs de Windows Azure.
L’éditeur propose ainsi une offre pouvant s’apparenter à de l’Infrastructure As A
Service (IaaS).

L’éditeur active également tout un ensemble de nouvelles fonctionnalités :

  • Extra Small Instance
  • Remote Desktop
  • Full IIS
  • Virtual Network
  • Elevated Privileges
  • Windows Server 2008 R2 roles
  • Multiple Administrators

Autre cible privilégié par Microsoft pour le passage vers Windows Azure : les éditeurs
de logiciels. Microsoft leur propose en effet de passer d’un modèle « On Premise »
vers le modèle « Software As A Service » (SAAS). L’idée est de proposer aux éditeurs
d’héberger leurs logiciels sur le cloud afin de ne plus prendre en charge l’infrastructure
et la maintenance liée à l’hébergement de ses logiciels. Et de proposer un service
potentiellement facturé à sa consommation effective.

Et c’est Microsoft lui-même qui montre l’exemple en faisant une première démonstration
d’une version azurée de Team Foundation Server. Cette version online de Team Foundation
Server devrait être disponible sous la forme d’une Community Technology Preview (CTP)
durant l’année 2011.

La migration de Team Foundation vers Windows Azure n’a pas été très compliqué d’un
point de vue technique, la principale difficulté a été la réarchitecture de l’application
en tant que services hébergées via des Workers roles et des Web roles, et la modification
des scripts SQL utilisées par TFS afin d’être compatible avec SQL Azure.

L’éditeur en profite pour annoncer de nouveaux services proposés par Windows Azure
AppFabric :

  • Access Control
  • Caching
  • Service Bus

Et pour SQL Azure :

  • Le support du Reporting
  • Data Sync

SILVERLIGHT & WINDOWS PRESENTATION
FOUNDATIO
N

Nous ne reviendrons pas
sur le positionnement de Silverlight en tant que plate-forme de développement d’applications
clientes déjà évoqué précédemment
.

Bien qu’étant issus de codebases différents, WPF et Silverlight partagent beaucoup
de points fondamentaux en commun. Ils partagent un large périmètre fonctionnel et
ne se différencient que sur quelques points :

  • Silverlight est destiné au développement d’applications clientes multi plate-forme
    et multi-device, et applications riches orientées médias. Le support de Deep Zoom
    et du Smooth Streaming sont deux points forts différenciant par rapport à WPF. Pour
    le reste, il s’agit essentiellement d’un sous-ensemble de WPF suffisant pour le développement
    d’applications de gestion à complexité modérée.
  • Windows Presentation Foundation est la couche de présentation la plus évoluée des
    deux. Les interfaces les plus complexes et le plus riches sont réalisables grâce
    WPF. Il s’agit donc du choix à privilégier dans le cadre du développement d’applications
    de gestion riches et évoluées.

Windows Presentation Foundation continue d’évoluer et la prochaine version proposera
quelques nouveautés telles qu’une meilleure gestion du multithreading par le moteur
de databinding. Il sera possible d’avoir de bien meilleures performances lors de binding
de gros volumes de données et de simplifier le binding de données gérées dans des
threads non-UI.

L’intégration avec Silverlight est actuellement à l’ordre du jour au travers d’un
contrôle SilverlightHost. Ce contrôle permettra d’utiliser des fonctionnalités proposées
par Silverlight et absentes de Windows Presentation Foundation telles que Deep Zoom
ou encore Smooth Streaming.

Toujours à propos de l’intégration, la version actuelle de WPF ne permet pas de superposer
des couches UI de différentes technologies. Ce problème nommé problème « d’Airspace
» est en train d’être résolu par l’équipe de développement de Windows Presentation
Foundation.

Silverlight ou Windows Presentation
Foundation ?

Si le device n’est pas un facteur de choix pour un applicatif, la question du choix
technologique entre Silverlight et Windows Presentation Foundation mérite d’être posé,
Silverlight étant repositionné comme framework de développement d’applications clientes.

Déjà évoqués précédemment Deep Zoom et Smooth Streaming sont quelques-uns des points
forts qui font de Silverlight une couche de développement d’applications orientées
média. Partageant beaucoup de points communs avec WPF, il est également possible de
créer des applications de gestion «traditionnelles».

WPF prend le relais dès qu’il est nécessaire de réaliser des interfaces plus complexes
où de faire de l’interopérabilité avec du natif ou du DirectX. Les éditeurs de logiciels
sont une cible importante de cette technologie.

Quoi qu’il en soit, la nouveauté est que ce choix n’est plus exclusif puisque Microsoft
a annoncé une convergence entre ces deux technologies. Nous avons déjà parlé des capacités
d’intégration d’éléments Silverlight au sein d’application WPF, Microsoft pense également
combler les différences en implémentant certaines fonctionnalités de WPF au sein de
Silverlight.

Si malgré les critères de choix évoqués vous ne savez toujours pas quelle technologie
choisir, il sera préférable de se tourner vers Silverlight. Le passage vers WPF sera
alors simple, Silverlight étant majoritairement un sous-ensemble de WPF.

WINDOWS PHONE 7

Microsoft joue son va-tout pour reconquérir le marché des smartphones avec Windows
Phone 7. Afin de se redonner une chance, l’éditeur a choisi la stratégie de la rupture
en mettant de côté Windows Mobile pour créer un nouveau système d’exploitation avec
une toute nouvelle interface graphique et une toute nouvelle ergonomie. Finie l’ergonomie
« copiée-collée » de celle du Windows historique sur PC, Windows Phone est très clairement
destiné aux téléphones que cela soit en terme d’ergonomie mais également en terme
d’usages. La rupture se trouve également d’un point de vue développement puisqu’il
n’est plus possible de créer des applications basées sur le Compact Framework .net.
De même toutes les applications Windows Mobile existantes ne sont pas du tout compatibles
avec Windows Phone 7.

Il existe trois frameworks différents qui permettent de développer pour Windows Phone
7 :

  • Silverlight est le framework principal qui permet de développer n’importe quel type
    d’applications managées. Il s’agit d’un sous-ensemble du framework Silverlight disponible
    sur PC prenant en compte les spécificités de Windows Phone 7 telles que la gestion
    du multitouch, la gestion des capteurs intégrés aux Windows Phone, etc.
  • XNA est disponible afin de développer des jeux-vidéos 2D ou 3D qui nécessitent de
    pleinement bénéficier des performances hardwares des téléphones Windows Phone 7.
  • Il existe un troisième framework de développement qui permet de créer des applications
    natives. Ce framework probablement appelé Iris n’est pas disponible au grand public,
    mais est uniquement mis à disposition des opérateurs et de partenaires privilégiés.
    L’interface de Windows Phone 7 est basée sur ce framework.

Le kit de développement de Windows Phone 7 en est très clairement à ses prémisses.
La principale force du développement sous WP7 réside dans les atouts de Silverlight
et non dans le SDK qui est pour le moment plutôt light. Le principal problème concerne
le modèle d’exécution de Silverlight. Les applications fonctionnent dans un environnement
isolé en termes d’espace d’exécution et de stockage mais les faibles capacités d’intégration
au téléphone peuvent fortement limiter les capacités des applications développées.

Le positionnement de Windows Phone est avant tout grand public. Microsoft ne cherche
pas à attaquer frontalement le marché professionnel. La stratégie est plutôt de penser
que les consommateurs veulent utiliser dans leur contexte professionnel ce qui leur
plait dans leur contexte personnel. Ce positionnement grand public est flagrant via
certaines absences techniques (authentification NTLM par exemple) et surtout l’absence
de marketplace privé. Toute application, même destiné à un usage interne à une entreprise,
doit en effet être publiée sur le marketplace, ce qui la rend accessible et installable
par tous les possesseurs de Windows Phone 7…

Cette PDC10 n’a malheureusement pas permis de découvrir grand chose de nouveau à propos
de Windows Phone 7, on aurait en effet pu en apprendre plus sur les nouveautés qui
seront apportées par WP7 notamment pour le support du monde professionnel. Mais il
n’en est rien. L’éditeur a préféré amélioré l’outillage en proposant par exemple lié
à la gestion des performances des applications.

Analyse Couche UI WPF/Silverlight/WP7

Il est surprenant de voir que Microsoft ne s’investissent pas plus sur les deux principaux
problèmes de Silverlight et WPF : les performances et l’outillage.

La performance de ces deux couches UI est une problématique souvent relevée, les développeurs
devant prêter attention à respecter certaines bonnes pratiques et à utiliser certaines
astuces pour parvenir à avoir des applications réactives.

Les applications Silverlight et WPF devraient « par défaut » être performantes. Les
développeurs ne devraient par exemple pas devoir s’arracher les cheveux pour arriver
à avoir une listbox performante sur Windows Phone 7. Des corrections sont en cours,
et il est regrettable de constater que celles-ci sont des solutions à des problèmes
que l’on peut considérer comme étant des problèmes de conception qui auraient pu être
pensé dès les premières versions de ces technologies.

La consommation mémoire excessive ainsi que les performances arrivent à décourager
certains éditeurs tels qu’Evernote (Evernote
4 for Windows is here
), Microsoft devrait donc s’attacher à résoudre ces problèmes
plutôt qu’à envisager de nouvelles fonctionnalités.

Les problèmes de performances mis à part, ces deux couches UI sont arrivés à une bonne
maturité ce qui n’est pas encore le cas de l’outillage associé.

LES LANGAGES

C# et Visual Basic

Conséquence de la coévolution des deux langages annoncée lors de la précédente PDC09,
il n’y a pas eu comme à l’habitude deux sessions destinées à présenter les nouveautés
de chaque langage mais bien une seule et unique présentation présentée par Anders
Heljsberg, le père du langage C#.

Ces deux langages ont (à partir de l’ère .net) partagé le même historique et les même
points clés durant leur évolution : Code managé, types génériques, LINQ,etc.

C# et Visual Basic sont conçus afin de répondre à trois thématiques importantes :
le déclaratif, la programmation dynamique, et le développement concurrentiel.

L’asynchronisme

Avec les prochaines versions de C# et Visual Basic, l’équipe Langages de Microsoft
souhaite répondre à ce troisième thème qui fait pour le moment l’objet d’un investissement
très important au niveau du framework .net via la Task Parallel Library et d’un point
du vue outillage grâce à Visual Studio 2010. Les langages ne fournissent que très
peu de fonctionnalités pour répondre à cette thématique qui prend pourtant de plus
en plus d’importance.

Les applications sont très majoritairement orientées « Clients/Services ». Ce type
de solutions implique différentes problèmes : les interfaces graphiques doivent rester
réactives alors que les temps latence indus par la consommation des services peuvent
être importants.

La solution à ce problème est connue de tous les développeurs : il suffit de mettre
en place de l’asynchronisme afin de ne plus attendre le résultat d’une opération avant
d’être capable d’exécuter d’autres opérations. Les couches UI telles que Windows Presentation
Foundation, Silverlight et ASP.net proposent tous des mécanismes permettant d’ajouter
de l’asynchronisme.

Le framework .net propose également deux patterns : EAP et APM.

Malgré ces deux patterns, l’asynchronisme reste un domaine souvent négligé et mal
maitrisé. Rendre asynchrone un code synchrone est une tâche complexe nécessitant plusieurs
tâches de refactoring, complexifiant la gestion d’exceptions et rendant peu lisible
le code ainsi modifié. Avec C# et VB v.Next, l’objectif est de simplifier la mise
en place d’opérations asynchrone et même de rendre le développement asynchrone aussi
simple que le développement synchrone, grâce à l’ajout de nouveaux mots clés au sein
de ces langages. L’idée est de proposer un modèle unifié qui permet de rendre asynchrone
tout type de traitement que celui-ci soit bloquant à cause du CPU, à cause d’un transport
réseau, ou d’une opération d’entrée/sortie.

Pour ce faire, la Task Parallel Library introduite avec le framework .net 4.0 est
mise à contribution. Le type Task permettant d’exécuter des traitements parallèles
fournit des mécanismes d’annulation et de continuation prêts à l’emploi. Les langages
C# et Visual Basic vont donc se reposer sur ces différents services proposés par la
TPL afin d’implémenter de l’asynchronisme grâce aux mots-clés async et await.

Async permet de marquer une méthode comme étant asynchrone. L’utilisation de ce modifier
est indispensable pour être capable d’utiliser l’opérateur await. Cet opérateur va
permettre d’effectuer simplement l’appel d’une méthode asynchrone et d’attendre le
résultat de cette méthode grâce au mécanisme de continuation évoqué précédemment.
Await permet d’éviter d’avoir à éparpiller une logique au sein de différents callback.

async Task<XElement> GetRssAsync(string url) {
    var client = new WebClient();
    var task = client.DownloadStringTaskAsync(url);
    var text = await task;
    var xml = XElement.Parse(text);
    return xml;
}

Toutes ces nouveautés sont disponibles via une version de test nommée Visual Studio
Async CTP qui est une extension de Visual Studio 2010 permettant de découvrir ces
nouveautés avant leur intégration dans les compilateurs C# et Visual Basic. L’extension
est téléchargeable à cette adresse : http://msdn.com/vstudio/async

Il ne reste plus qu’à espérer qu’une partie de la TPL sera portée vers Silverlight
5 afin que l’on puisse utiliser ces nouvelles fonctionnalités depuis la couche UI
multi-device de Microsoft.

Le Yield arrive dans Visual Basic

Les itérateurs sont disponibles depuis C#2 grâce au mot clé yield depuis 5 ans. Afin
d’assurer la coevolution et la parité entre C# et Visual Basic, ce mot clé sera proposé
dans Visual Basic v.Next

    Sub Main()
        For Each number As Integer In SomeNumbers()
            Console.Write(number & " ")
        Next
        ' Output: 3 5 8
        Console.ReadKey()
    End Sub

    Private Iterator Function SomeNumbers() As IEnumerable
    ' Use multiple yield statements.
        Yield 3
        Yield 5
        Yield 8
    End Function

F#

F# est un langage fonctionnel orienté objet issu des laboratoires de Microsoft Research
et géré de main de maitre par le professeur Don Syme (Blog
Don Syme
). Ce langage dérivé du Caml est intégré à Visual Studio au même titre
que C# et Visual Basic depuis Visual Studio 2010 (F#
in VS2010
). Il ne s’agit donc pas d’un « simple » langage issu de la recherche
mais bien d’un produit disponible et utilisable pour des projets professionnels.

Bien qu’utilisé de manière très marginale, il est important de suivre l’actualité
de ce langage et son évolution car les langages C# et Visual Basic tirent certaines
de leurs nouveautés de fonctionnalités issues de F#. Avoir une œil intéressé sur F#
permet donc d’avoir une bonne idée de la direction et des principes qui risquent d’être
implémentés dans le futur dans les langages que l’on utilise tous les jours.

Et ce futur s’annonce excitant puisque F# 3.0 proposera une fonctionnalité qui selon
Don Syme est plus importantes que la plupart des évolutions jusqu’à présent proposées
par les langages .net telles que les génériques, l’asynchronisme évoqué précédemment,
etc.

La principale nouveauté de la prochaine version de F# a pour objectif de permettre
aux développeurs de travailler dans un monde fortement typé, sans à avoir à écrire
soi-même ces types ou sans à avoir à les générer.

Travailler dans un monde fortement typé

Il existe à l’heure actuelle plusieurs solutions pour réaliser accéder simplement
à des données structurées. La première et la plus fréquente consiste à utiliser un
générateur de code. Ces générateurs de code ont tendance à se multiplier et à se cacher
derrière les nombreux designers ou assistants présents au sein de Visual Studio. On
peut citer les générateurs de code liés aux interfaces XAML, à la consommation de
services WCF (svcutil.exe), à la consommation de ressources (resgen.exe), de services
web (wsdl.exe), de données avec Entity Framework (edmgen.exe), etc.

Les types dynamiques introduits avec C#4 représentent une autre possibilité offertes
aux développeurs afin d’accéder de manière générique à des données structurées.

F# vNext proposera une troisième solution pour travailler simplement avec des données
issues de tous type de sources (Services REST, Windows Azure DataMarket, fichiers
Excel, annuaires LDAP, etc.). Cette nouvelle solution se base sur la création et l’utilisation
de Type Providers. Ces Type Providers sont des classes spécialisées permettant d’exposer
un modèle objet à partir d’une source de données. L’objectif est d’inférer un modèle
objet à partir de la source de données que souhaite consommer le développeur.

Un Type Provider destiné à la consommation d’annuaire LDAP sera capable d’analyser
l’annuaire LDAP à consommer, de détecter les diverses modifications de schéma qui
ont pu être effectués, et de générer un modèle objet correspondant au schéma actuel
de l’annuaire. Il ne s’agit donc pas de générer du code source plus ou moins masqué
du développeur via des classes partielles, mais de proposer un modèle objet spécialisé.
Il y a bien évidemment techniquement de la génération de code mais celle-ci est masquée
et invisible pour le développeur.

Et cette idée peut avoir un impact très important pour les développeurs. On peut en
effet imaginer que la consommation d’un fichier Excel contenant des données d’une
facture puisse être directement gérée par le développeur grâce à un type Facture sans
à avoir à mettre en place toute la plomberie technique nécessaire à la lecture de
feuilles de calculs, de parcours de cellules, etc.

Cette fonctionnalité n’est pas encore disponible au sein du langage F#, il faut donc
patienter afin d’avoir plus d’informations sur l’implémentation et l’utilisation de
ces Type Providers au sein de ce langage et pourquoi pas dans l’avenir au sein des
langages C# et Visual Basic.

L’ACCES AUX DONNEES

ADO.net est la couche historique du framework .net destiné à la création de couches
d’accès aux données. Il a fallu attendre six années pour que Microsoft propose sa
première solution de mapping objet relationnel. Après une première tentative de création
d’ORM avec ObjectSpaces (projet qui était destiné à sortir avec Visual Studio .net
2003 et qui a été supprimé lors de la sortie de la béta 2 de Visual Studio 2005),
l’éditeur s’est maladroitement lancé sur le marché avec Linq To SQL inclus dans Visual
Studio 2008.

Bien qu’étant le premier ORM proposé par le framework .net, ce projet n’était pas
destiné à être public mais à être un « simple » projet de test destiné à valider la
conception de LINQ (The
Origin of Linq To Sql
). Limité sur plusieurs points, il est la concrétisation
de la vision de Microsoft sur l’accès aux données à savoir proposer un ORM disposant
d’une bonne intégration d’un point de vue langage permettant de disposer d’une vérification
à la compilation des requêtes écrites par le développeur.

Entity Framework est le second ORM proposé à partir du SP1 du framework .net 3.5.
Compatible avec l’ensemble des SGBD du marché, il propose de créer une couche d’accès
aux données en se basant sur des modèles. Ces modèles permettent d’avoir une couche
d’abstraction par rapport au modèle physique (la base de données) et ainsi d’avoir
un modèle objet personnalisé correspondant aux besoins des développeurs grâce à différentes
possibilités de mapping.

L’outillage, les performances, l’approche « Model First », le support des POCO, un
meilleur support du Lazy Loading sont les points importants sur lesquels l’équipe
ADO.net a travaillé avec le framework .net 4.0 et Visual Studio 2010. La création
de couche d’accès aux données reste la même, le développeur doit créer un modèle,
modèle qui permet de générer des entités métiers utilisées pour écrire les requêtes
Linq To Entities et éventuellement pour le Data Binding.

Avec Entity Framework vNext, une autre approche baptisée « Code-first » permet de
se passer de la création de modèles. Le développeur aura enfin la possibilité de créer
ses entités et de gérer la persistence de celles-ci très simplement. Il suffit en
effet de créer une classe héritant de DbContext afin d’être capable de persister ses
entités et être capable de les requêter. Il s’agit d’une approche « light » qui permet
au développeur de se concentrer sur le code sans consacrer d’efforts à la gestion
de la base de données sous-jacente ni sur le modèle associé.

Un grand merci à Laurent, Vincent et Guillaume pour
leur relecture !

<br />

Untitled

Quelques prédictions sur la PDC 10

Untitled

Je
l’avais déjà fait l’année dernière
avec, il faut bien le dire, relativement peu
de succès. Mais ce
tweet de Richard Clark
, m’a incité à retenter l’expérience des prédictions pour
la PDC de cette année.

Premier constat la PDC de cette année est encore plus courte qu’à l’habitude, elle
se déroulera sur seulement 2 jours et ne proposera qu’un seul keynote. Il y a donc
fort à parier qu’il n’y ait pas d’importantes annonces et que celles-ci soient peu
nombreuses.

L’évènement de cette année tournera autour de 2 thèmes principaux : le Cloud avec
Windows Azure, et le développement d’applications clientes, et d’un troisième thème
plus fourre-tout à propos du framework .net dans son ensemble (langages compris).

Essayons donc de faire quelques prédictions des annonces possibles sur ces différents
thèmes :

Windows Azure

Microsoft pourrait annoncer un nouveau type de rôle ou d’instance qui pourrait combler
certains manques de l’offre Windows Azure par rapport à la concurrence. On devrait
de nouveau avoir du beau discours marketing avec des retours d’expériences des clients
qui sont déjà passé sur Azure.

Une nouvelle offre tarifaire moins chère pour faciliter l’accès à la plate-forme serait
également la bienvenue.

Développement côté Client

Steve Ballmer a annoncé il y a quelques mois lors de la WPC que des Slates (tablettes
comme l’iPad) tournant sur Windows 7 seraient lancées dès cette année. Nous n’avons
pu voir en démonstration que des HP Slate. Il est donc probable qu’une gamme de Slates
soit présentée lors de cette édition de la PDC.

Windows Phone 7 est en cours dans le lancement. Microsoft devrait présenter la prochaine
version “majeure” – autre qu’un simple patch – du SDK associé au smartphone made in
Seattle. J’ai également le secret espoir que l’éditeur présente une V2 de l’OS ou
alors des nouveautés majeures qui pourraient être disponibles pour tous les téléphones
existants via une mise à jour.

Et pour terminer un petit peu de fun, il est possible que l’on est de nouveau droit
à un Oprah
Moment
, avec cette fois-ci non pas un Tablet PC offert mais un Windows Phone 7
pourrait avoir lieu.

Ce que l’on ne verra pas à cette PDC

J’aurais adoré voir l’utilisation du Kinect dans le monde du travail et non dans celui
du jeux vidéo uniquement. Microsoft pourrait rendre disponible un SDK afin d’étendre
grandement les possibilités de l’appareil mais cela ne semble pas encore en vue…

Et vous qu’en pensez-vous ? Quels produits et annonces attendez-vous ?