La PDC 2003 par Patrick Smacchia

Par Bill Gates, Jim allchin, DonBox, Chris Andersen…

Cette session de trois heures fut l’occasion d’annoncer officiellement la sortie en 2006 du prochain OS Microsoft dénommé Longhorn. Le maître mot de cet OS est indéniablement la sécurité. Une grande partie des ressources développement sont consacrées à l’élaboration d’une technologie nommée NGSCB (Next Generation Secure COmputing Base) empêchant les applications d’interférer (un peu à la manière du bac à sable, mais à tous les niveaux, hardware, noyau et utilisateur). Un autre point fort exposé est une interface graphique nommée AVALON incroyablement ‘sexy’, reposant sur les possibilités du hardware 3D. Tous les éléments visuels sont maintenant vectoriels et un nouveau langage basé sur XML de description d’interface graphique est proposé par l’OS. Il a aussi été mis en avant une nouvelle gestion des données nommée WinFS (Windows Futur Storage). L’accent est mis sur la cohérence de l’accès aux données qui ne sont plus cantonnées dans des fichiers organisés dans une arborescence physique de répertoires. Les fichiers peuvent être instantanément réorganisés logiquement selon une multitude de critères sémantiques (le ou les auteurs du fichier, le ou les projets concernés par le fichier…) un peu à la manière des clauses WHERE d’une requête SQL. En fait la cohérence est à tous les niveaux. Par exemple une personne connue de l’OS peut être le destinataire d’un mail et l’auteur d’un document. L’ouverture au monde extérieur de l’OS est aussi révolutionnaire. Une démonstration époustouflante du chef technique d’amazon.com permet de se faire une idée de la convivialité des futurs sites web. L’idée est qu’un site web est une application Longhorn instantanément téléchargée à partir du site et communiquant avec ce dernier avec la technologie des services web. Cependant, les points concernant la compatibilité de ce modèle avec les autres OS et le devenir du HTML dans ce contexte ont été éludés. En résumé une session à l’américaine avec des intervenants charismatiques, très riche en termes idées.

Visual Studio Whidbey : New IDE Features for XML and Data Access
Par Paul Yuknewicz

Cette session avait pour but de montrer que la démarche RAD (Rapid Application Development) concernant la gestion des données d’une application développée avec Whidbey (le futur VS.NET) avait évolué dans le bon sens. Pari tenu, j’ai eu la surprise de constater que les ingénieurs de Redmond se sont attaqués à l’argument majeur à l’encontre de la démarche RAD à savoir: la difficulté de faire du RAD et du développement en couche. L’idée est simple: le code généré pour la couche d’accès aux données est séparé du code généré pour la couche présentation (Web form ou Win form). Les deux couches sont seulement liées à un ensemble de schémas XSD. Il devient alors possible d’intercaler une ou plusieurs couches propriétaires, développées dans des assemblages propriétaires, pour manipuler les données. Les autres temps forts de cette session concernaient la possibilité de déboguer du XSL, la possibilité de travailler avec des documents XML volumineux et la possibilité de personnaliser les différents membres d’un dataset typé. J’ai juste regretté que le débat dataset typé vs. object spaces n’a pas été traité pour des causes de timing.

Programming SQL Server Yukon using managed code ; Building stored procedures, functions and user-defined types
Par Pablo Castro; Jose Blakeley; Ramachandran Venkatesh

On a pu voir dans cette session comment créer et déboguer des classes et des procédures écrites en C# directement consommables à partir de requêtes T-SQL. Les exemples gravitaient autour d’une application réelle de gestion de données géographiques. Ainsi, plutôt que d’avoir dans une table un champ pour la latitude et un autre pour la longitude, on définit un seul champ d’un type une classe propriétaire de coordonnées géographiques. Plusieurs opérations sont ajoutées à cette classe, comme le calcul de la distance entre deux points du globe. Ces opérations peuvent alors être utilisées dans une requête T-SQL du genre : sélectionne les zones géographique qui contiennent un point du globe données. Il est dommage que cette session a seulement abordé les aspects techniques de Yukon, survolant les enjeux stratégiques et architecturaux de plus de logique métiers dans la base de données. En effet, les données ont en général plus de valeur que les applications qui les traitent. C’est pour cette raison que les bases de données relationnelles ont plus de part de marché que les bases de données objets qui sont forcément couplées avec les types de données d’une application. Cet argument va à l’encontre de la démarche Yukon et aurait mérité plus d’attention.

Indigo: Services and future of distributed application
Par Don Box

Cette session fut l’occasion pour le charismatique Don Box de démontrer pourquoi seule l’architecture orientée service (SOA) est envisageable pour faire communiquer les différents composants d’une application distribuées. Il y a beaucoup de débat autour de ce qu’est la notion même de SOA : il faut ici comprendre que l’on fait du SOA dés le moment où l’on communique avec des messages synchrones ou asynchrones, indépendamment de la technologies sous jacente utilisée (Web Service/ASMX, .NET Remoting, DCOM/COM+…). La réflexion part du constat que ce qui est valable pour la communication entre humains reste valable pour la communication entre programmes. Les points suivants sont soulignés : Les frontières entre entités doivent être clairement définies et immuables dans le temps, les entités doivent être autonomes et fiables (elles gèrent leur sécurité), les entités doivent partager le minimum (en fait seulement des schémas XSD) et chaque entité est identifiée grâce à un nom global stable dans le temps (une URI par exemple). On nous montre alors pourquoi l’idée même d’objets distribués est incompatible avec ces contraintes, et pourquoi seule une architecture par envoi de messages entre services est envisageable. Dans ce contexte, le terme INDIGO englobe toutes les technologies proposées par Microsoft allant dans le sens du SOA, que ce soit au niveau de .NET/WHidbey ou au niveau du futur OS Longhorn.

Journée de mardi

Whidbey Par Eric Rudder, Ari Bixton, Scott Guthrie, Ori Amiga, Rick LaPlante…

Cette session a été l’occasion d’aborder plus en détail les nouvelles fonctionnalités proposées par Whidbey pour améliorer la productivité des développeurs. La session était parsemée de plusieurs démos concernant le développement winform, ASP.NET, mobile device et WhiteHorse, un plugin whidbey permettant de faciliter le dialogue entre développeurs et architectes dans le développement d’une application SOA. Parmi les nouveautés dans la couche présentation on peut citer la snap line, une fonctionnalité permettant d’aligner horizontalement et verticalement les contrôles au design time, des nouveaux contrôles permettant d’imprimer ou d’afficher des médias comme des photos ou la technique de Master Page en ASP.NET permettant de réaliser de l’héritage visuel de page d’une manière très souple. Toujours en ASP.NET, il est maintenant aisé de permettre à l’utilisateur de personnaliser la présentation des données. Une démo particulièrement impressionnante a montré comment développer en moins de 10 minutes une application ciblant les device mobiles, avec de multiples fonctionnalités telles que la récupération de media, l’envoi de mail et l’accès à des web services.

Longhorn SDK Par Steven Goulet

On peut définir le longhorn SDK (nom de code Vegas) comme l’API de Longhorn, de la même manière que win32 est l’API des système Windows 32bits actuels. Longhorn SDK est l’unification de win32, conservé pour avoir une compatibilité ascendante, et de WinFX le modèle de programmation entièrement orienté objet de Longhorn englobant notamment le Framework .NET actuel. Longhorn SDK est très vite présenté par des chiffres : 13595 types (3,5 fois le nombre de type du framework .NET actuel), 50 millions de mots sur 200 000 pages de documentation (10 fois l’encyclopédie oxford). Un gros effort a été fait pour offrir des outils de recherche performants pour les développeurs. WinFX contient aussi de nombreux outils pour aider les développeurs et les administrateurs. Une démo nous a permis de voir comment facilement développer une application graphique en XAML l’exécuter directement, en faire un assemblage exécutable ou bien un fichier source C# avec l’outil xamlc. Cette démo a ainsi exposé l’intimité qui se crée entre l’IDE (Whidbey) et l’OS (Longhorn), notamment au niveau de la compilation.

Visual C# Whidbey : IDE enhancement for C# Par Scott Wiltamuth, Anson Horton John Stallo

Cette session a exposé une multitude de fonctionnalités ajoutées à Whidbey pour aider les développeurs C# dans les taches suivantes: écriture du code, réécriture du code (Refactoring), la navigation dans le code, le déboguage. La session a commencé avec une démo visant à démontrer que l’intellissense de Whidbey sait gérer les types génériques de C#2 (y compris au niveau de la généricité contrainte!). Dans cette démo, on voit apparaître l’espace de nom System.Collections.Generics et la classe générique Dictionary<K,V> (Key Value). Une autre démo montre la notion d’expansions. Une expansion permet d’effectuer une tache répétitive comme l’ajout d’une propriété à une classe. La vraie nouveauté est que vous pouvez créer vos propres expansions, car chaque expansion est décrite par un fichier écrit dans un langage xml. De nouveaux outils de navigation dans le code basés sur les métadonnées font leur apparition (par exemple la recherche de tous les endroits où une méthode est appelée, basée sur les métadonnées de la méthode et pas simplement sur son nom). Lorsque l’on écrit qu’une classe implémente une interface, on peut éventuellement demander à Whidbey de générer le squelette de l’interface dans la classe. Lorsque l’on renomme un type, Whidbey s’occupe de modifier tous les endroits du code où le type est utilisé. On peut sélectionner un bloc de code et demander à ce qu’il devienne une méthode à part entière. Whidbey est alors assez intelligent pour trouver les paramètres in et out ainsi que la visibilité et le type de méthode (partagée ou statique). Le débogage n’est pas en reste notamment au niveau de la visualisation de l’état des objets. Whidbey appelle automatiquement la méthode ToString() pour chaque objet visualisé dans le débogueur. Vous pouvez donc personnaliser cette visualisation. Mieux encore, durant le débogage Whidbey vous propose un mode user-friendly pour visualiser les données contenues dans un dataset. Il est à noter que le système de compilation est désolidarisé de whidbey et commence à s’intégrer à l’OS (intégration qui sera complète dans le futur longhorn). Vous pouvez personnaliser vos scripts de déploiement en leur permettant d’utiliser des classes propriétaires qui dérivent de la classe Task. Enfin, une dernière démo a montré que Whidbey permet de visualiser votre code C# sous la forme d’un diagramme de classes UML. Vous pouvez alors travailler sur ce diagramme. Les modifications sur cette vue sont intégrées dans le code en temps réel, et vice versa.

C# langage enhancements Par Anders Heljsberg

Cette session animée par le chef du projet C# en personne a fait la part belle aux quatre fonctionnalités apportées à C#2 qui sont : les génériques, les types partials, les itérateurs et les méthodes anonymes. Je ne reviens pas sur ces points car ils sont complètements couverts par ce document : http://download.microsoft.com/download/8/1/6/81682478-4018-48fe-9e5e-f87a44af3db9/SpecificationVer2.doc

En revanche, voici quelques détails peu documentés concernant C#2. Vous pouvez déclarer qu’une classe est statique, c’est à dire qu’elle ne peut avoir que des membres statiques et qu’elle ne peut avoir d’instances. Vous pouvez faire en sorte que les niveaux d’accessibilités des deux accesseurs d’une propriété soient différents. Vous pouvez définir des alias sur les espaces de noms et les utiliser dans votre code avec l’opérateur ::. Vous pouvez définir un tableau de taille fixé ‘à la C’ : public fixed char szPath[256] ;. Vous pouvez ponctuellement désactiver la gestion des avertissements par le compilateur grâce à la directive #pragma warning.

Visual studio Whidbey : Deploying applications using click once
Par Sean Draine

Le mode de déploiement ‘click once’ est un nouveau mode de déploiement pour clients riches à mi chemin entre un déploiement traditionnel par fichiers MSI et un déploiement par téléchargement à partir d’Internet. Le terme ‘click once’ illustre la volonté de limiter la complexité de l’installation à un seul et unique click sur un lien hypertexte. Il n’y a plus besoin de passer par un assistant compliqué. Au niveau de Whidbey, il n’existe pas de projet de déploiement click once à proprement parler. Le développeur configure le déploiement click once pour chaque application, directement dans le projet concerné. Les paramètres de configuration concernent surtout la sécurité (les permissions requises pour un bon fonctionnement de l’application…) et la mise à jour automatique (vérifie toutes les ‘durées’ si une nouvelle version existe, en interrogeant une URL donnée) . Vous pouvez alors demander à Whidbey de déployer le projet, à partir d’un site web, d’un serveur FTP, de fichiers partagés ou en local. Dans le dernier cas, un fichier XML est généré (appelé manifest). Ce fichier doit être numériquement signé. Il contient les informations relatives au déploiement (sécurité, mise à jour, une valeur de hachage pour chaque fichier de l’application afin d’optimiser les futures mises à jour en ne téléchargeant pas les fichiers inchangés…). Au menu des détails intéressant, vous pouvez configurer les chargements de fichiers au fur et à mesure qu’ils sont consommés par l’application, vous pouvez protéger vos fichiers de clé publique/privé utilisés pour signer vos assemblages et le fichier manifeste XML par mot de passe, une API existe pour que l’application demande à l’utilisateur plus de permissions, il est assez aisé de faire du roll-back de version à partir de la fenêtre windows d’installation des applications et l’intellisense de whidbey tient compte de la configuration de sécurité (les permissions interdites sont grisées dans le menu intellisense).

Visual studio Whidbey : Building office solution with managed code
Par Reza Chitsaz

Voilà une session qui décrit un avantage conséquent de Whidbey : la possibilité de développer pour Office. Pour l’instant seul Word et Excel sont supportés. Le modèle de programmation est celui du Framework .NET, donc complètement différent de celui d’Office VBA. Cette session a commencé sur une démo exposant l’ajout de code managé dans un feuillet excel. Concrètement, l’assemblage contenant le code peut être dans le fichier Excel ou dans un assemblage séparé (un peu à la façon d’un fichier .xla). Un éditeur WYSIWYG de feuillet Excel fait son apparition au sein de Whidbey. L’éditeur est très similaire à celui des winforms, et d’ailleurs, tous contrôle géré (standard ou propriétaire) peut être ajouté directement à une page excel. La souplesse du Framework .NET permet de s’abonner à toute sorte d’évènements comme le changement d’une cellule, alors qu’en VBA nous n’étions limité qu’à un obscur sous-ensemble d’évènements. La notion de smart pane (un dialogue personnalisé pour faciliter l’édition des documents word ou excel, en tenant compte du contexte courant) devient très simple à programmer et à personnaliser. Enfin, les pages Excel peuvent être très facilement remplies par les données d’un dataset et plusieurs facilités permettent aux développeurs de ne plus se soucier de la disponibilité du client (on-line ou off-line).

.NET Framework : Exploring what’s new in the Base Class Library for Whidbey
Par Kit George


Cette session expose une multitude de détails ajoutés au Framework .NET. En voici quelques uns :

-La possibilité de personnaliser la visualisation du contenu d’une hashtable durant le débogage à l’aide d’une famille d’attribut (DebugDisplayAttribute…).

-La possibilité de générer un fichier de code source (C# ou VB.NET) avec l’outil resgen.exe. Ce fichier permet d’obtenir une propriété pour chaque label utilisé pour la localisation de l’application courante. Les avantages sont la détection par le compilateur d’une erreur et la possibilité d’utiliser l’intellisense.

-Quelques chose que j’avais à cœur depuis longtemps : la possibilité qu’un assemblage puisse permettre à certains assemblages d’accéder à ses types internes. Ceci est réaliser grâce à un attribut d’assemblage [assembly ::internalsVisibleTo(« AssemB »,PublicKeyToken= …)]. C’est un peu la même idée que la notion d’amitié du C++ appliquée au niveau des assemblages.

-L’utilisation de types génériques pour assigner une valeur nulle à des types valeurs: Nullable<int> intVal = Nullable<int>.default ; (très utile pour récupérer es valeurs d’une BD relationnelles).

-Les méthodes pour parser des chaînes de caractères lèvent une exception lorsque la chaîne de caractère n’est pas exploitable. Ceci est très coûteux, aussi chaque méthode Parse() à son équivalent bool TryParse(), beaucoup plus performant dans le cas de chaînes non exploitables.

-Une nouvelle possibilité de configuration du ramasse-miettes spécialement adapté lorsque de petits objets références des gros objets.

-Une classe Semaphore pour la synchronisation (c’est vrai qu’elle manquait).

-Une classe pour la manipulation de variables d’environnements.

-Une classe pour la lecture des données relatives aux volumes.

-Une facilité permettant de lire ou d’écrire une collection de chaînes de caractères dans un fichier en une seule ligne.

-Une classe spécialisée dans la lecture et l’écriture de données sur les ports séries.

-Une classe facilitant la manipulation des évènements de l’event log.

-La possibilité de mettre des couleurs lorsque l’on écrit sur la console (vive le progrés!).

 

Auteur : Patrick Smacchia

 


 
Postez vos commentaires ici : http://www.dotnetguru.org/article.php?sid=275
 Le récit de DNG