Projet ESSI2
Transcription
Projet ESSI2
Longhorn Project – Building an application for Windows Longhorn Projet ESSI2 Lundi 6 juin 2005 – Vendredi 24 juin 2005 Stéphane BLANC Nicolas BOUSQUET Alban CAMPO Gilles RÉANT Tuteur de projet : M. Johny BOND Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 1 Longhorn Project – Building an application for Windows Longhorn Remerciements Nous tenons à remercier tout d’abord M. Jean-Paul Stromboni qui a accepté notre proposition de projet dans le cadre des projets de fin d’année ESSI2. Qu’il nous soit également permis de remercier notre encadreur de projet, M. Johny Bond, pour ses conseils et son enthousiasme. Merci également à M. Peter Sanders pour nous avoir permis d’utiliser sa machine de l’E.S.S.I. afin de nous permettre de gérer nos versions de code avec le logiciel SVN. Nous désirons également gratifier Mme Blandine Berg et M. Pierre Lagarde pour leurs aides apportées tout au long de ces trois semaines de projet et notamment M. Pierre Lagarde pour sa disponibilité, sa présence à notre soutenance et à ses nombreuses recherches spontanées sur Longhorn et les différents Runtimes. Nous remercions de plus toutes les personnes qui, de près ou de loin ont contribué à une partie du projet. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 2 Longhorn Project – Building an application for Windows Longhorn Table des matières Remerciements................................................................................................... 2 Table des matières ............................................................................................. 3 Résumé................................................................................................................ 5 I. But et composition du projet .................................................................... 6 II. Longhorn (Avalon, Indigo, WinFS et les autres) ..................................... 6 III. Étude de l’existant...................................................................................... 9 IV. Description des fonctionnalités de base et avancées souhaitées ........ 10 V. Outils utilisés ............................................................................................. 11 1. RunTimes + SDK ...................................................................................... 11 2. Développement ......................................................................................... 12 A. B. Visual Studio 2005 beta 2 ........................................................................................... 12 C# ................................................................................................................................ 13 3. Moyens de communication ....................................................................... 14 A. Forum .................................................................................................... 14 B. SVN ou la gestion de version ...................................................................... 15 C. Direct ..................................................................................................... 16 D. Rapports quotidiens ..................................................................................................... 16 E. Mail .............................................................................................................................. 16 VI. Diagramme de classes ............................................................................... 17 VII. 1. 2. 3. 4. Description détaillée................................................................................ 18 Contrôleur .................................................................................................. 18 Interfaces graphiques ............................................................................... 18 A. XP ......................................................................................................... 18 B. Longhorn ................................................................................................. 20 a. Version 2D............................................................................................................. 20 b. Version 3D............................................................................................................. 21 « ScreenMaker »........................................................................................ 22 Autres ........................................................................................................ 23 A. IOFileSystem .......................................................................................... 23 B. ElementFavori et ses filles........................................................................... 24 VIII. Difficultés de compatibilité .................................................................... 25 Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 3 Longhorn Project – Building an application for Windows Longhorn IX. Recherches de solutions ........................................................................... 27 1. Le Web ...................................................................................................... 27 2. Contact avec Microsoft France .................................................................. 27 3. Rencontre avec un ingénieur Microsoft...................................................... 28 X. Planning des journées et ordonnancement du travail ........................... 28 XI. Résultats obtenus ...................................................................................... 29 1. XP .............................................................................................................. 29 2. Longhorn 2D .............................................................................................. 30 3. Longhorn 3D .............................................................................................. 34 XII. Expériences acquises ............................................................................ 35 1. Les points positifs ...................................................................................... 35 2. Les points négatifs ..................................................................................... 35 3. Conclusion ................................................................................................. 35 Références .......................................................................................................... 36 Annexes............................................................................................................... 37 Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 4 Longhorn Project – Building an application for Windows Longhorn Résumé Projet Longhorn : découvrir le nouveau système d’exploitation de Microsoft : Windows Longhorn, en étudiant les nouvelles technologies qu’il renferme et pouvoir développer un logiciel utile voire innovant bénéficiant de ces techniques. Le logiciel en question consiste en une application qui scanne les favoris Internet Explorer de l’utilisateur courant pour en faire des « screenshots » (captures d’écran) de façon automatique et quasi-instantanée. L’utilisateur peut naviguer parmi les miniatures affichées pour ensuite ouvrir s’il le souhaite le site web associé. Le sujet a été présenté de façon spontanée à M. Jean-Paul Stromboni vers la fin mai et fût accepté ; nous n’avons eu aucun problème à convaincre M. Johny Bond de nous encadrer pour mener à bien notre projet. Ce nouveau système d’exploitation renferme trois nouvelles technologies : Avalon (nouvel aspect graphique), Indigo (nouvelle gestion de la communication) et WinFS (nouveau système de gestion de fichiers supportant une base de données SQL server destiné à remplacer le NTFS actuel). Nous nous sommes principalement basé sur Avalon pour les interfaces graphiques de notre programme. En effet, il y a deux interfaces graphiques pour montrer les possibilités 2D et 3D du moteur graphique de Longhorn. Une interface XP a également été réalisée pour montrer les différences entre les deux systèmes. Nous n’avons utilisé, pour développer, que des outils en version bêta car la sortie commerciale de Longhorn n’étant prévu que vers mi-2006, aucun outil adapté ne se trouve en version finale (nouveau Visual Studio, Kit de développement et Avalon pour ne citer qu’eux). Le langage de nos applications est le C#, langage de programmation orienté objet proche du Java. Celui-ci est couplé avec le langage de programmation d’Avalon : le XAML (« zammel »). Pour garder une certaine cohérence, C# a également été utilisé pour la version XP. Nous avons choisi un système de gestion de version afin de pouvoir effectuer des sauvegardes de notre code en évitant le plus possible les conflits d’édition. Notre avons divisé nos programmes en quatre parties fondamentales : les interfaces graphiques (au nombre de 3), le contrôleur (partie centrale et relais de communication), le ScreenMaker (qui s’occupe de prendre les captures), et IOFileSystem qui s’occupe les lectures/écritures sur le disque. Nous avons rencontré quelques difficultés tout au long des trois semaines du projet. En effet, plusieurs incompatibilités se sont révélées entre les différents kits de développement et les outils de Avalon. Le développement des applications s’est déroulé sous XP et non pas sous Longhorn car la dernière version bêta publique ne le permettait pas. Nous avons heureusement eu l’aide bénéfique de M. Pierre Lagarde de Microsoft France qui nous a aidé à faire fonctionner nos programmes sous Longhorn et sans qui cela n’aurait jamais été possible. Les programmes tournent correctement. Aucun bug majeur n' est présent dans les différentes éditions. Nous avons réussi à mener à bien nos objectifs en utilisant Avalon et ses possibilités ; pas complètement malheureusement du fait du manque d’outils et du manque de documentation. Les captures sont d’excellente qualité et quasi-instantanées pour l’utilisateur. Nous avons également beaucoup appris au niveau logiciel et langage car tout était nouveau pour nous mais également au niveau équipe ou l’entente était présente et où régnait une bonne humeur malgré le stress permanent des incompatibilités et des erreurs incompréhensibles. Ce fut une véritable aventure humaine ! Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 5 Longhorn Project – Building an application for Windows Longhorn I. But et composition du projet Le projet consiste à se familiariser avec le nouveau système d’exploitation de Microsoft nommé Longhorn et de voir la différence entre XP et ce dernier. Pour cela, le logiciel devra avoir une interface pour XP (Winform classique) et une interface Longhorn (Avalon). Nous avons décidé de faire un logiciel permettant de naviguer et d’ouvrir les sites rattachés aux captures d’écran faites des favoris d’Internet Explorer de l’utilisateur. L’interface permettant de naviguer devra être la plus intuitive et agréable pour l’utilisateur final. Le sujet du projet a été pensé et proposé par le groupe composé par : Stéphane Blanc, Nicolas Bousquet, Alban Campo, Et Gilles Réant, à Monsieur Johny Bond. Il s’inscrit dans le projet de fin du second semestre de la 2ème année de l’E.S.S.I. (Promotion 2004/2005). Le projet s’étend sur 3 semaines et se conclut par une soutenance en anglais et la remise des différents livrables (Annexe C). II. Longhorn (Avalon, Indigo, WinFS et les autres) Microsoft Codename Longhorn est le prochain système d’exploitation de la firme de Redmond. Il devrait, d’ici sa commercialisation prévue au premier semestre 2006, remplacer peu à peu le système d’exploitation courant à savoir Windows XP. Pour le moment, Longhorn se situe en version bêta (dernière build connue est la 5060, présentée par Bill Gates lors du WinHEC 2005). Screenshot du bureau de la build 5048 (http://www.winsupersite.com) Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 6 Longhorn Project – Building an application for Windows Longhorn Néanmoins, lors de notre présentation, M. Lagarde nous as gentiment prêté la version 5089, très proche de la future Beta1 qui sortira début juillet. Longhorn constitue en un système d’exploitation unifié qui exploitera le plus possible les capacités 3D de l’ordinateur. Les applications qui seront développées bénéficieront du système Win32 actuel offert par XP et mais également de WinFX qui, couplé avec le nouveau .NET Framework v2, constitue le modèle de développement pour la plate-forme Longhorn (celui-ci sera détaillé plus tard). Longhorn possède beaucoup de nouveautés par rapport à son aîné d’XP qui peuvent être résumées grâce au schéma suivant : Architecture de Longhorn Bien sûr Longhorn contiendra les « fondamentaux » qui permettront de faire tourner l’essentiel du système mais l’intérêt réside en trois nouveaux piliers essentiels : Avalon pour la couche de présentation WinFS pour manipuler les données (Base de données sur le FileSystem) Indigo pour gérer les communications Initialement, Longhorn devait sortir avec tous ses composants mais cela ne sera pas le cas et Microsoft a décidé qu' Avalon et Indigo sortiraient tout d’abord pour XP afin que les développeurs puissent découvrir ces technologies et puissent dès à présent développer pour le futur système d’exploitation. Nous avons décidé de faire partie de ces développeurs. Ces deux piliers de Longhorn étant sortis au préalable, WinFS sera donc reporté et sortira plus tard que l’OS lui-même. Nous allons donc voir plus en détail Avalon, car c’est cette partie que nous avons voulu exploiter pour notre programme. Avalon est un outil pour manipuler une nouvelle interface graphique fournie par Longhorn avec de la 3D pouvant être affichée sur le bureau. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 7 Longhorn Project – Building an application for Windows Longhorn Avalon contient un moteur de rendu vectoriel mais également un moteur 3D (nommé Aero, gérant l’affichage du bureau). Aero Screenshot (build 5089) Afin d’utiliser Avalon, les développeurs de Microsoft ont introduit un nouveau langage de programmation basé sur XML qui se nomme XAML (eXtensible Application Markup Language). Exemple de code source XAML affichant une fenêtre vide Le but de XAML se veut d’être facile à apprendre, à écrire, et à relire. On conçoit une application par description. Le code de présentation est séparé du code applicatif (en C#) pour une meilleure séparation du graphiste et du développeur. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 8 Longhorn Project – Building an application for Windows Longhorn III. Etude de l’existant Il existe énormément de programmes ayant de près ou de loin attrait aux favoris des navigateurs Internet (au moins une cinquantaine, rien que pour les logiciels gratuits). Néanmoins, il n' existe à notre connaissance qu' un seul logiciel (sous la forme d' un plug-in pour Internet Explorer) permettant d' afficher une capture d' écran d' un site donné, en utilisant le principe du moteur de recherche : (http://www.girafa.com) La toolbar Girafa (gratuite, pour Internet Explorer uniquement, version 2.12.05) permet de faire une recherche sur le web, & d' afficher des miniatures des pages d' accueil des sites proposés. Fenêtre d' Internet Explorer 6 SP2 avec la toolbar Girafa (recherche sur "lemonde") Cependant, comme on peut le voir sur la capture ci-dessus, les miniatures proposées ne sont pas synchronisées avec le site web réel (les captures ont parfois plus d' un an). De plus, les pages sont proposées la plupart du temps plusieurs fois (comme le ferait un mauvais moteur de recherche). Enfin, le site web exact demandé n' est quasiment jamais affiché (excepté les sites web mondialement connus), car ce logiciel se base sur une base de données finie & rarement rafraîchie. Nous avons donc considéré que ce logiciel était suffisamment éloigné de nos besoins pour justifier le codage d' un nouveau logiciel. Nous avons également à un certain moment durant la période de codage basé notre programme sur le nouveau moteur de recherche d' AOL (http://www.recherche.aol.fr/rech?q=longhorn) (basé sur une technologie développée par une entreprise française nommée Exalead (http://beta.exalead.fr/search), permettant d' afficher également une miniature des sites web visités, la fréquence de rafraîchissement étant sensiblement plus élevée pour les sites très visités. Néanmoins, ces solutions présentent les mêmes Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 9 Longhorn Project – Building an application for Windows Longhorn limitations que la solution Girafa. Nous avons très rapidement abandonné l' idée d' utiliser les images stockées sur leur serveur. Moteurs de recherche d' AOL & d' Exalead (mot recherché : "Longhorn") IV. Description des fonctionnalités de base et avancées souhaitées Nous avons réfléchi sur les fonctionnalités de notre logiciel qui permettent de gérer les favoris de l’utilisateur. Au cours de plusieurs brainstormings effectués avant le début et au premier jour du projet, nous en avons déduit que notre programme aurait les trois fonctionnalités de base suivantes : La possibilité de scanner les favoris depuis le dossier de l’utilisateur courant en regardant dans la base de registre la clé HKEY_USERSS-1-519\Software\Microsoft\Windows\CurrentVersion\Explorer\Us er Shell Folders\Favorites qui correspond au chemin pointé par %USERPROFILE%\Favori dans les versions francophones de Windows; %USERPROFILE% étant une variable d’environnement. La possibilité de prendre une capture d’écran d’un site des favoris de façon totalement transparente à l’utilisateur en utilisant le moteur de rendu de Internet Explorer. La possibilité d’ouvrir dans le navigateur par défaut (Firefox, Opera, Netscape, IE, …) le site Internet correspondant au favori sélectionné. Nous avons également réfléchi sur les diverses optimisations que nous pouvions apporter à notre logiciel de façon à ce qu’il soit le plus agréable pour l’utilisateur. Ces options sont importantes mais pas indispensables et sont implémentées sur certaines versions du programme : La possibilité d’ajouter/modifier/supprimer un favori depuis l’interface L’affichage de captures en 3D en utilisant XAML La mise en forme en « roue de moulin » (mise en forme abandonnée depuis) La mise à jour automatique d’un screenshot en détectant une modification de la page à distance. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 10 Longhorn Project – Building an application for Windows Longhorn V. Outils utilisés 1. RunTimes + SDK Lorsque nous avons voulu coder pour Microsoft Windows Longhorn, nous avons commencé à installer les outils nécessaires pour programmer sur ce système d' exploitation. À ce jour, pour pouvoir faire tourner un programme Longhorn (basé sur les technologies Avalon & Indigo), il faut installer quelques librairies : la dernière version du .NET Framework (.NET Framework 2.0 Redistribuable Package Bêta 2 (x86), 22,4 Mo, gratuit, disponible sur http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID=7a bd8c8f-287e-4c7e-9a4a-a4ecff40fc8e), ainsi que les version Bêta 1 RC d' Avalon & d' Indigo (Microsoft® Pre-Release Software Code Named “Avalon” and “Indigo” Beta1 Release Candidate, souvent appelées May Beta1 RC, 2,16 Mo + quelques Mo téléchargés durant l' installation, gratuits, disponibles sur : http://www.microsoft.com/downloads/details.aspx?familyid=b789bc8d-4f254823-b6aa-c5edf432d0c1&displaylang=en). Le .NET Framework est l' évolution de la version courante de l' environnement managé de Microsoft (1.1) couramment utilisée de nos jours, & qui sera partie intégrante de Longhorn. Avalon & Indigo ont été décrits plus haut. Ces librairies permettent uniquement de lancer le programme. Or, elles ne sont pas suffisantes pour programmer en XAML. Pour cela, il est nécessaire d' installer un SDK (Software Development Kit) nommé WinFX SDK (version Mai 2005 (associé aux RunTimes Avalon & Indigo de même version), gratuit, 351 Mo, disponible sur : http://download.microsoft.com/download/5/4/0/5407D6E4-740E-413E-8E91EF7AC53A478A/en_winfx_sdk_beta1_RC.iso). Cet outil nous propose quelques exemples de programmes (quelques-uns étant, soit-dit en passant, syntaxiquement incorrects & ne compilant pas), plus un outil nommé MSBUILD permettant, en se situant dans le dossier contenant les sources du programme via une invite de commandes DOS, de compiler le programme & de générer le fichier .exe associé. Il est à noter que nous n' avons évidemment que très rarement utilisé cette commande (uniquement en cas de débogage avancé), nous lui avons préféré l' environnement de développement intégré Visual Studio. Nous avons néanmoins installé le WinFX SDK car il est indispensable à VS pour programmer pour Longhorn. Il est évident que l' intégralité des outils susnommés est en version Bêta, & intégralement en anglais, que ce soit les programmes ou leur documentation en anglais. Nous n' avons installé l' intégralité de ces programmes que vers la fin du projet, Gilles ayant été le seul à coder pour Longhorn pendant les 2 premières semaines. + + WinFX Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 11 Longhorn Project – Building an application for Windows Longhorn 2. Développement A. Visual Studio 2005 bêta 2 Afin de développer notre application, nous avons été obligés d’utiliser le futur Visual Studio de Microsoft prévu pour la fin de l’année (nom de code Whidbey). Nous nous le sommes procurés en nous inscrivant sur le site officiel pour récupérer les DVD officiels. En effet, la version courante (2003) disponible sur le site de l’E.S.S.I. par l’intermédiaire de l’alliance MSDN ne peut pas fonctionner avec le .NET Framework v2 qui est lui aussi en édition Beta 2. Cette version est assez simple et intuitive d’utilisation notamment pour générer des applications Windows avec le langage C#. Les principales nouveautés par rapport à la version précédente sont : Refactoring du code (changement des références, pas en XAML), IntelliSense amélioré (auto-complétion, pas en XAML), Diagramme de classe généré et dynamique, Génération intelligente et intuitive de code web ASP.NET 2.0. Fenêtre de Visual Studio 2005 beta 2 Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 12 Longhorn Project – Building an application for Windows Longhorn B. C# Le langage C# créé par Microsoft dans le but de concurrencer Java, est devenu un standard approuvé par la spécification ECMA-334 de l' association européenne ECMA (European Computer Manufacturer' s Association) en décembre 2001. Le langage C# permet de développer des applications Windows et Web en se basant sur l' architecture .NET. Ce langage a été conçu dans le but d' être indépendant de la plate-forme et de l' environnement d' exécution. Normalement, le compilateur C# devrait pouvoir fonctionner partout où les types et fonctionnalités spécifiés dans l' ECMA-334 sont correctement prises en charge par l' environnement d' exécution. Actuellement, l' environnement d' exécution du langage commun (CLR : Common Language Runtime) de la technologie.NET est évidemment, le domaine de prédilection du langage C#. Le mécanisme de traitement du code source écrit en C# par la plateforme Microsoft.NET, produit lors de la phase de compilation, un code binaire particulier dénommé MSIL (MicroSoft Intermediate Language), lequel sera interprété ensuite par le CLR chargé de la transformation en instructions exécutables par la machine. La technologie .NET met également à la disposition du programmeur de nombreuses classes du .NET Framework, comprenant de nombreuses méthodes et propriétés exploitables dans des programmes. Le langage C# est une savante combinaison des langages C, C++ et Java en expurgeant la plupart des sources d' erreurs et en améliorant certaines fonctionnalités. Exemple de code c# basique La gestion de la mémoire par l' utilisation des pointeurs a été maintenue tout en veillant à y intégrer un dispositif d' appel explicite par l' utilisation de mots-clés spécifiques. Le concept d' héritage multiple dans la programmation orientée objet a été abandonné au profit de l' utilisation d' interfaces. Le langage C# permet une programmation orientée objet simple et moderne. Dérivé des langages de programmation C et C++, C# est familier aux habitués du développement en C, C++ et Java. Effectivement, le langage C# ne comporte que 77 mots-clés. De plus, la programmation en C# se révèle intuitive, familière et moins verbeuse produisant du code se démarquant par sa lisibilité et sa concision. C’est pourquoi nous l’avons choisi pour le développement de l’interface XP. Pour l’interface Longhorn, nous l' avons préféré au VB# trop basique car le code XAML se marie avec le C# pour le développement d’applications graphiques. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 13 Longhorn Project – Building an application for Windows Longhorn 3. Moyens de communication A. Forum Nous avons commencé par communiquer via un forum phpBB2 (Open Source, version 2.0.15 mise à jour pour l' occasion afin de corriger quelques failles de sécurité), installé sur le site web de Gilles, & accessible via le lien http://longhorn.reant.net. Cela permettait de se partager les travaux effectués, les liens visités & l' avancement de l' installation des différentes versions des RunTimes & de Longhorn. Cela a été très pratique avant le début de la période du projet, pour ne pas surcharger nos boîtes mails de messages longs & pompeux qui n' auraient probablement pas été lus. De plus, ce type de forum permet de poster des messages au contenu riche très facilement, de les éditer après coup, & enfin d' y avoir accès à n' importe quel moment de la journée. Ce type de communication nous a aussi servi de pense-bête (quand une information nous échappait, une petite visite sur le forum nous permettait de nous rafraîchir la mémoire). Enfin, pour Gilles, le coordinateur de l' équipe, cela a permis de transmettre des informations à la fois à l' intégralité de l' équipe, au tuteur & aux personnes intéressées par le projet en une seule fois. Il est à noter que ce forum est ouvert à toute lecture/écriture (sans enregistrement nécessaire), & qu' il restera sur le web en vue d' être une documentation supplémentaire à notre projet, & éventuellement d' aider d' autres personnes cherchant à coder pour Longhorn. À la fin du projet, le forum aura contenu plus de 70 messages (répartis entre les membres de l' équipe) & affiché les messages plus de 800 fois. Une partie du forum longhorn.reant.net Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 14 Longhorn Project – Building an application for Windows Longhorn B. SVN ou la gestion de version TortoiseSVN est un client Open Source (http://tortoisesvn.tigris.org/) pour serveur Subversion. Subversion est un outil de gestion de version généraliste. Il permet ainsi de gérer aussi bien des fichiers sources ou des programmes exécutables. Subversion retient les différentes modifications qu’on subit ces fichiers et plus généralement la hiérarchie complète de répertoires. Ainsi on pourra demander quel était l’état du fichier X vendredi dernier. Subversion permet aussi l’accès d’une même ressource par plusieurs utilisateurs. Cette solution nous a été proposée par M. Peter Sanders, qui a stocké l' intégralité des fichiers sur son ordinateur à l' adresse svn://svn.essi.fr/cvsroot/2004-05/essi2/proj/longhorn. Ce serveur nous a principalement servi à gérer l' avancement asynchrone de chaque partie de notre projet, mais pourtant basées sur des classes communes. Nous avons effectué plus de 150 opérations d' écriture sur ce serveur. Un des principaux avantages de TortoiseSVN est de s’intégrer directement & de façon transparente à l’explorateur de Fichiers Windows. Principes Système de gestion de modification concurrente Un problème courant survient lorsque 2 personnes modifient en même temps un fichier puis décident d’enregistrer les modifications. Forcément, si aucun traitement spécifique n’est prévu, une des deux modifications sera plus ou moins oubliée et le travail associé perdu. Avec Subversion la solution apportée est la suivante : Tout le monde peut demander une copie du même fichier ou plus généralement du projet. Tout le monde peut modifier sa copie personnelle. Au moment d’enregistrer ses modifications sur le serveur, si quelqu’un d’autre a déjà validé des modifications, le serveur prévient l’utilisateur. L’utilisateur en question regarde les modifications apportées par l’autre utilisateur et les fusionne avec les siennes. Il publie alors la version fusionnée sur le serveur. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 15 Longhorn Project – Building an application for Windows Longhorn C. Direct Dès le début du projet, nous avons passé l' intégralité de notre temps de travail ensemble, ce qui a du coup réduit l' intérêt du forum (qui a cependant continué à nous servir pendant le reste du projet). Nous faisions de petites réunions 2 à 3 fois par jour pour voir où en était le travail de chacun, & pour prendre des décisions qui nécessitaient l' avis de tous. Nous avons également fait assez souvent de longues réunions en vue de décrire (ou de réécrire) l' architecture du programme. Nous rencontrions M. Bond deux fois par semaine pour le tenir au courant de nos avancées. Nous avons aussi eu différents rendez-vous avec M. Sanders pour discuter du serveur Subversion. Enfin, nous avons pu rencontrer M. Pierre Lagarde durant une petite entrevue après son intervention à l' IUT qui sera détaillée lors de la recherche de solutions. La communication directe nous a évidemment permis de transmettre plus facilement & de façon plus conviviale les informations que nous souhaitions véhiculer. D. Rapports quotidiens Tous les soirs, un rapport journalier était écrit par le coordinateur visant à résumer les opérations effectuées par chaque membre durant la journée ainsi que les objectifs à remplir le lendemain. Cependant, il nous a été très dur de se tenir à ces prévisions, & les différents évènements s’étant produits durant le projet nous ont obligé de revoir sans cesse notre planning. Ces rapports restent disponibles soit sur le serveur SVN soit sur le site web du projet. E. Mail Le mail servait principalement à communiquer avec les personnes extérieures au projet, que ce soit nos contacts chez Microsoft, les professeurs de l' E.S.S.I. ou notre tuteur pour prendre rendez-vous. La partie "relations extérieures" a été gérée par le coordinateur ; les mails étant néanmoins vérifiés par le reste de l' équipe avant envois. Nous avons essayé autant que faire se peut de ne pas utiliser de mail, les autres moyens de communication nous semblant meilleurs. Chacun de ces moyens de communication nous a été utile ; ils sont rarement entrés en concurrence & semblaient plutôt complémentaires. Il est à noter que nous avons également utilisé à de rares occasions le partage de dossiers en lecture/écriture Windows, le client de messagerie instantanée MSN Messenger & le téléphone portable. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 16 Longhorn Project – Building an application for Windows Longhorn VI. Diagramme de classes Diagramme de classes simplifié de nos applications Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 17 Longhorn Project – Building an application for Windows Longhorn VII. Description détaillée 1. Contrôleur Cette classe se situe au centre du programme. Elle sert de pont entre chaque partie. La plupart de ses méthodes ne consistent qu' en un rappel de la fonction associée dans une autre classe. Les seules méthodes qui peuvent être appelées sans le contrôleur sont les rares méthodes statiques. Le contrôleur contient aussi quelques méthodes qui lui sont propres : ouverture d' une page web à partir d' une URL. De plus, il effectue un travail qui lui est spécifique : vérifier qu' une capture d' écran est bien contenue dans un favoris, ou vérifier si elle existe déjà dans le dossier des captures; auquel cas il appelle ou non la classe ScreenMaker pour faire la capture, uniquement si nécessaire. Cela permet de gagner un temps précieux lorsque l' Interface graphique demande une série d' images. Il est aussi chargé de contenir la liste des favoris; liste qui sera lue par l' Interface graphique. 2. Interfaces graphiques Nous avons réalisé trois interfaces graphiques pour notre programme. Trois interfaces différentes pour montrer les capacités d’un programme utilisant les technologies Longhorn et pour pouvoir comparer avec les technologies existantes. A. XP Nous avons développé une interface XP de notre programme à la demande de notre tuteur. En effet, il pensait bon de pouvoir comparer ce que l’on peut réaliser de nos jours avec les outils existants sur Windows XP et ce qui va exister sous Longhorn. L’interface graphique de Windows XP a été entièrement réalisée en langage C#. La mise en forme des composants dans la fenêtre a été réalisée grâce à l’éditeur WYSIWYG (What You See Is What You Get) de Visual Studio 2005. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 18 Longhorn Project – Building an application for Windows Longhorn Interface WYSIWYG de Visual Studio 2005 L’interface est scindée en trois principaux blocs : La visualisation des captures d’écran des favoris. L’affichage sous forme d’arborescence de la liste des favoris Les informations sur le favori courant La visualisation des images se fait dans un objet de type PictureBox qui est un composant qui peut contenir un objet de type Image. L’arborescence des favoris s’obtient en appelant une méthode du contrôleur qui renvoie une arborescence des favoris sur le disque dur. Le détail de cette méthode sera expliqué dans la partie prévue à cet effet (cf. IOFileSystem). A chaque clic de la souris sur un élément de l’arbre, on affiche les informations de l’élément sélectionné dans le Label situé dans la dernière zone de l’application. De plus, on essaie de récupérer un screenshot du site courant si l’utilisateur est connecté à Internet et si un screenshot n’existe pas déjà, sauvegardé dans le dossier prévu à cet effet. Un message d’erreur apparaît si l’opération a échouée pour essayer d’orienter l’utilisateur. Message d’erreur en cas d’échec de prise d’un screenshot Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 19 Longhorn Project – Building an application for Windows Longhorn B. Longhorn a. Version 2D Diagramme de classes pour l’interface 2D L' Interface Graphique Avalon 2D est composée de quelques classes. Le reste du programme a besoin d' une InterfaceGraphiqueGenerique, que nous avons implémenté pour créer cette Interface 2D. Au démarrage du programme, l' InterfaceGraphique2D est lancée. Cette dernière crée les premiers objets nécessaires : FenetreAvalon2D & Controleur, entre lesquels elle servira de pont (pour la méthode ReceptionImage, dont il a été question précédemment). L' IHM proprement dite est contenue dans la classe FenetreAvalon2D, qui est partial, c' est-à-dire qu' elle est codée à la fois dans un fichier XAML & dans un fichier C#. Dans l' ensemble, le fichier XAML décrit la fenêtre au démarrage, & le fichier C# décrit son évolution en fonction de différents évènements. Néanmoins, il est possible avec Avalon de coder une interface 100% avec C#. Nous n' avons cependant pas utilisé cette méthode qui court-circuitait les avancées d' Avalon, malgré le fait que XAML nous ait engendré un très grand nombre de problèmes. La Fenetre permet d' afficher la liste des favoris dans le dossier courant (les Favoris d' Internet Explorer étant stockés dans une arborescence), & de naviguer dans ces favoris. L' explication de cette Interface sera reprise plus tard. Resources & Settings servent à contenir les Ressources & les Paramètres contenus dans le programme (en dur dans le .exe). Nous avons essayé de les utiliser, mais elles semblent poser problème avec la langue du système d' exploitation. Malgré le fait que notre code semble correct (directement récupéré sur un tutorial officiel), le programme compile mais plante au démarrage. Nous avons malheureusement donc du stocker certaines images dans le dossier courant, & non à l' intérieur du programme comme nous l' avions prévu. Ces 2 classes ne servent donc a priori à rien. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 20 Longhorn Project – Building an application for Windows Longhorn b. Version 3D Diagramme de classe de la version Longhorn 3D L’interface graphique en 3D est composée de deux gros fichiers (Un fichier XAML et un fichier C# pour le piloter). Nicolas et Alban ont collaboré pour faire cette interface et ont développé des fonctionnalités pour permettre facilement de rajouter des nouvelles animations. En effet, nous possédons des hashtable pour contenir l’association bouton, animations associées aux évènements du bouton et des fonctions permettant de naviguer dedans. Il y a des fonctions pour arrêter ou suspendre l’ensemble des animations et de les reprendre quand on le souhaite. Toutes les animations sont définies dans le XAML et permettent de manipuler les mesh (Objet dans l’espace 3D). Les fonctionnalités permettront d ‘accélérer le développement future que nous ou d’autre pourront utiliser. Bien évidemment, l’interface est spécialisée pour un type d’utilisation et d’affichage des informations. Quelques évènements de la souris sont attrapés comme le click gauche, droit, la roulette. D’autres évènements sont codés, comme l’entrée et la sortie d’un objet 3D. On peut considérer cette classe comme une petite API et bien évidemment grâce aux nombreuses possibilités de XAML nous pourrions faire beaucoup plus. Les bugs rencontrés lors du développement de ces fonctions ont été rectifiés, mais bien sur le temps est l’utilisation est le meilleur d’indiquer la solidité du code. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 21 Longhorn Project – Building an application for Windows Longhorn 3. « ScreenMaker » Le ScreenMaker est un objet crée par le Controleur qui devra se charger de se connecter à Internet pour prendre les aperçus (ScreenShot) des Urls indiquées. Le constructeur de SreenMaker prend en paramètre un pointeur de fonction (nommé Delegate en C#) et une fenêtre (Objet de type Form au sens System.Windows.Forms). Le pointeur de fonction nous permet de savoir quelle fonction est appelée lorsque la capture est terminée. Cela est nécessaire car la gestion du navigateur est asynchrone et donc nous ne pouvons pas avoir un fonctionnement linéaire. La fenêtre nous permet de créer notre objet control pour le navigateur. Cela est une contrainte rencontrée et qui nous a apporté son lot d’inconvénients. En effet, dans cette version de ScreenMaker, il se peut que l’utilisateur entende les sons joués par le navigateur lors de l’ouverture du site et de sa capture. Même si la capture se fait de façon transparente, il reste ce problème de son dû à la nécessité de créer le control pour le navigateur. L’objet connaît donc lors de sa création la fonction à appeler lors de la fin de la capture et le moyen de créer le navigateur grâce à la Form. Le Contrôleur, lorsqu’il désire faire une capture demandée, appelle la méthode Capture sur l’objet ScreenMaker. Cette méthode prend un objet ParamCapture. Il contient comme, son nom l’indique, les paramètres nécessaires au ScreenMaker pour faire sa capture. Il contient les propriétés (Attributs possédants les méthodes get et set) permettant d’indiquer les dimensions de la fenêtre du navigateur (DimCaptureX DimCaptureY). Il contient aussi les propriétés indiquant la taille du screenshot souhaitée (DimResizeX DimResizeY). Ces deux dernières ne sont pas exploitées et ScreenMaker renvoie le screenshot avec les dimensions DimCaptureX, DimCaptureY. Pour finir, ParamCapture contient les propriétés Url et TimeOut qui précisent respectivement l’adresse du site à capturer et le temps maximum autorisé. La mise en place de la capture fût plus longue que prévue car nous avons rencontré des difficultés inattendues en ce qui concerne la gestion du navigateur et des différentes approches possibles pour la capture. En effet, plusieurs voies se sont offertes à nous, avec bien sur pour chacun leurs défauts et leurs qualités. Après études de ces différentes possibilités, nous avons adopté l’approche suivante. Utiliser un IHTMLDocument2 et par la suite récupérer respectivement un IHTMLElement puis un IHTMLElementRender pour enfin écrire dans l’image. Cette partie a nécéssité la moitié de l’équipe (Alban Campo et Nicolas Bousquet) pendant environ 9 jours. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 22 Longhorn Project – Building an application for Windows Longhorn 4. Autres A. IOFileSystem Classe IOFileSystem et ses méthodes C’est la classe qui gère, comme son nom l’indique, la lecture et l’écriture sur le disque dur. Elle permet donc d’écrire une image prise par le ScreenMaker (dans la mémoire vive) de façon persistante dans le répertoire de l’application selon le format qui est spécifié dans EXTENSION (par défaut PNG). Durant la première moitié du projet, cette classe était séparée en deux autres classes: IO, qui reprend la plupart des fonctions présentes maintenant Synchronisation, qui s’occupe de scanner les favoris pour les stocker dans un objet CompositeFavori que l’on détaillera dans la partie suivante. Après avoir donc passé la moitié du projet, nous avons décidé que Synchronisation consistait en une lecture de fichiers sur le disque dur ; voila pourquoi nous avons fusionnée ces deux classes en une seule. La synchronisation des favoris étant une des fonctionnalités primordiales de notre programme, nous allons la détailler : la méthode appelée se place dans le dossier correspondant à celui par défaut de l’utilisateur (PATH_FAVORIS) et parcours récursivement chaque répertoire pour créer des objets de type ElementFavori qui contiennent des attributs qui seront détaillés plus tard. L’objet renvoyé contient donc toutes les informations sur les favoris de l’utilisateur, on l’appellera « root ». Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 23 Longhorn Project – Building an application for Windows Longhorn B. ElementFavori et ses filles Schéma Composite représentant la gestion des favoris Afin de gérer les favoris pour les stocker en mémoire vive, nous avons décidé d’utiliser le schéma de conception « Composite ». Étudié en cours, ce schéma convient parfaitement pour l’utilisation que nous voulions en faire. En effet, les fichiers .url représentant les favoris de l’utilisateur sont stockés dans la classe Favori. De ce fait, un Favori contient donc : L’état de son image sous forme de type énuméré (capturé, problème, non capturé), Le chemin vers l’image stockée sur le disque dur sous forme de chaîne de caractères, l’image de son screenshot (objet Image) le nom de son image (juste le nom du fichier avec son extension) l’URL du favori (le site Internet vers lequel il est rattaché) sous forme de string. L’intérêt de ce schéma vient du fait que, gérant dossiers et fichiers, un tel schéma permet d’englober les deux types indifféremment. En effet, cela est géré grâce à la classe ElementFavori qui possède un champ commun à ces deux types de données qui est leur nom. Pour les fichiers, le nom est le nom du fichier .url avec l’extension, pour les dossiers le nom est le nom tel qu’il apparaît sous Windows. CompositeFavori est donc la classe qui va gérer les dossiers. Comme Favori, elle hérite (d’après le diagramme) d' ElementFavori mais en plus contient des éléments de type ElementFavori. Grâce à cette spécificité de Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 24 Longhorn Project – Building an application for Windows Longhorn ce schéma, cette classe peut donc contenir des objets de type Favori (fichiers) ou des objets de type CompositeFavori (dossiers), ce que nous voulons pour élaborer notre arborescence récursive. Remarques : Afin de respecter au mieux le schéma « Composite », nous avons créer une classe DossierFavori qui hérite de CompositeFavori pour gérer les dossiers, c’est donc elle qui va être utilisée tout au long des étapes dans le programme. La classe ElementFavori hérite de TreeNode qui est une classe C# qui gère les nœuds dans une arborescence. Cet héritage a facilité la représentation dans un arbre pour l’interface graphique de la version pour XP. Les autres interfaces ne se servent pas de cette fonctionnalité. VIII. Difficultés de compatibilité Dès le début de notre projet (& même avant), il était prévu de faire tourner le plus rapidement possible un programme directement sous Longhorn (la dernière version Bêta publique librement téléchargeable, nommées build 4074, datait d' une année). Cette idée nous était venue après une démonstration des diverses technologies Longhorn faite fin avril au WinHEC 2005. Or, la version des RunTimes que nous utilisions était bien plus récents que la version Bêta de Longhorn que nous avions. Nous avons donc naturellement commencé à chercher une version plus récente (la build 5060 étant censée marcher avec nos programmes). Après une semaine de recherches infructueuses, nous étions plutôt découragés. Toutes les bêtas récentes étaient réservées à de très rares développeurs, & aux ingénieurs Microsoft. M. Partouche n' était pas parvenu à obtenir une de ces versions, & le contact de M. Bond n' a pas pu trouver une version récente. Nous avons donc contacté Mme Blandine Berg, Relations Enseignement Supérieur, Chef Programme MSDN Academic Alliance, qui nous a elle-même redirigé vers M. Pierre Lagarde, Relations techniques Développeurs et speaker aux DevDays (cf. Rencontre avec un ingénieur Microsoft). Nous lui avons expliqué notre problème, & il nous as d' abord affirmé que les versions de WinFX & de Longhorn n' étaient pas synchronisées, & donc qu' il était impossible de faire tourner un quelconque programme Avalon sous Longhorn. Nous lui avons transmis la vidéo du WinHEC 2005, & il a commencé à chercher activement une version de Longhorn compatible avec Avalon, tout en nous transmettant après sa conférence à l' IUT la dernière version des RunTimes & du SDK (version Beta1). Il a pu tester quelques versions de Longhorn, sans succès. La version Beta1 des RunTimes présentait pour notre programme de très nombreuses incompatibilités avec la version précédente (de très nombreuses balises avaient changées de nom, quand elles n' avaient pas totalement disparu), mais nous avons néanmoins essayé de le rendre compatible. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 25 Longhorn Project – Building an application for Windows Longhorn Il va sans dire que nous avons par conséquent installé & désinstallé de très nombreuses fois les différentes versions des librairies en tous genre, pour effectuer les différents tests. Vers le début de la dernière semaine, Pierre nous a conseillé d' abandonner l' idée de tenter de rendre notre programme compatible, & nous as annoncé continuer à chercher une version compatible avec la Beta1 RC, ce qu' il a finalement réussi (capture d' écran à l' appui) mercredi soir. Microsoft Windows Codename Longhorn Build 5089.winmain.050615-1910 avec différents programmes Avalon Microsoft Nous avons donc continué à coder nos Interfaces Avalon 2D & 3D. Durant l' après-midi de jeudi, il s' est avéré que l' un de nos composants nécessitant une DLL spéciale (AxWebBrowser) posait un problème avec une version récente de Longhorn, problème que nous avons essayé de résoudre. Nous avons tenté d' utiliser des programmes permettant de coder directement en What You See Is What You Get (WYSIWYG), notamment en utilisant différents outils tels que ZAM3D (gratuit en version Bêta, 28 Mo, http://www.erain.com/Products/ZAM3D/Default.asp), Aurora (gratuit en version Bêta, codé lui-même en Avalon, 8,56 Mo, http://www.mobiform.com/Eng/aurora.html) ou encore Xamlon (gratuit en version Bêta, 2,63 Mo, http://www.xamlon.com/software/xamlonpro/winforms/). Cependant, ces programmes sont très instables, génèrent du code très approximatif & peu lisible & intégralement incompatible avec la version des RunTimes que nous avons utilisé. Il ne nous a même pas été possible de récupérer une partie de ce code pour l' adapter à notre programme. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 26 Longhorn Project – Building an application for Windows Longhorn Il nous a alors été nécessaire de calculer nous-mêmes les coordonnées en 3D de nos objets durant les animations. Il est à noter que la prochaine version de Visual Studio réalisée pour XAML (Orcas) ne sortira pas avant fin 2007, & que l' outil WYSIWYG XAML de Microsoft (Sparkle) n' est pas encore disponible en version Bêta. Enfin, il est à noter qu' Avalon n' étant pas encore optimisé, il nécessite une configuration gargantuesque pour un affichage pourtant raisonnable. IX. Recherches de solutions 1. Le Web Bien entendu, la toile a été le principal vecteur de recherche de solutions pour les problèmes de code que nous avons rencontré. Elle a notamment été beaucoup utilisée pour le code du ScreenMaker en essayant de récupérer quelques bouts de code. Malheureusement, cette partie n’ayant jamais été codée auparavant par d’autres communautés de programmeurs, il a donc été très difficile voire même impossible d’obtenir de l’aide sur divers forums ou blogs. La plupart des questions posées sur les forums sont restées sans réponse. Les recherches sur le web ont été faites en intégralité à partir du moteur de recherche de Google (http://www.google.fr & http://www.google.com). Nous avons également longuement cherché sur les sites officiels de Microsoft afin de trouver diverses informations sur les versions des SDK et des RunTimes pour pouvoir faire correctement tourner nos exécutables. La plupart des sites Internet intéressants se trouvent dans la partie « Références » & sur le forum longhorn.reant.net. 2. Contact avec Microsoft France Nous avons essayé plusieurs possibilités pour trouver une solution au problème de version de Longhorn ainsi que des SDK associés. Pour cela Alban Campo a fait intervenir un de ces contacts (Mme Blandine Berg) chez Microsoft France pour voir ce qu’elle pourrait faire à ce sujet. Après plusieurs mails, elle nous a mis en contact avec M. Pierre Lagarde. Elle nous a aussi envoyé une invitation pour rencontrer cet ingénieur. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 27 Longhorn Project – Building an application for Windows Longhorn 3. Rencontre avec un ingénieur Microsoft Grâce à Mme Blandine Berg, nous avons pu rencontrer M. Pierre Lagarde lors du forum des professions de l’IUT à l’IUT de Nice fabron dans le cadre d’une conférence sur le thème : « Nouveautés .NET v2, ASP.NET v2, Mobilité ». Entré en janvier 2003 chez Microsoft, dans la division développer .NET en temps que « Relations techniques Développeurs », il a permis de nous aider à faire fonctionner nos exécutables sous Longhorn avec une version du système d’exploitation interne à Microsoft. Nous avons conversé longuement avec lui avant de le rencontrer à sa conférence pour tester les derniers SDK. En parallèle, il a fait ses tests pour essayer de faire marcher des programmes codés avec la version beta 1 RC des SDK sous différente version de Longhorn. Cela nous permettra de faire tourner nos applications sur le portable apporté lors de notre soutenance. X. Planning des journées et ordonnancement du travail Afin d’obtenir les rapports journaliers du projet qui explique le travail effectué par chaque membre du groupe, vous pouvez aller sur le site web du projet à l’adresse : http://www-local.essi.fr/ProjetJuin2005/Projet19/index.html rubrique « log book ». Les fichiers sont au format .doc Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 28 Longhorn Project – Building an application for Windows Longhorn XI. Résultats obtenus 1. XP Aperçu de l’interface finale pour la version XP Aperçu de l’interface finale pour la version XP (mouseover sur l’image) Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 29 Longhorn Project – Building an application for Windows Longhorn L’interface prévue pour XP a respecté les fonctionnalités de base qui étaient énoncées dans les descriptions des fonctionnalités. La recherche des favoris de l’utilisateur se fait au démarrage du programme et une arborescence est affichée dans la partie prévue à cet effet ; l’utilisateur peut ainsi naviguer. A chaque clic de souris sur un nom de favori, un appel à un screenshot est lancé automatiquement. Si une image existe déjà, on affiche l’image courante sinon on lance la capture sur Internet et on l’affiche. Il est possible d’obtenir les informations du favori dans la partie inférieure de la fenêtre, un grossissement du favori est disponible lorsque l’on passe la souris sur l’image chargée. Cela permet un certain confort pour l’utilisateur car il peut distinguer voire lire les caractères présents sur la page capturée. L’utilisateur peut également forcer la prise d’un screenshot d’un de ces favoris pour mettre à jour l’image associée sur le disque dur. Toutes les fonctionnalités supplémentaires n’ont pas pu être implémentées dans cette interface. Seul la gestion des favoris sur le disque (ajout/modification/suppression) a été ajoutée, rendant l’interface un peu plus complète (ces mêmes fonctionnalités existant déjà dans la gestion des favoris sous Internet Explorer). D’autres petites fonctionnalités utiles ont été ajoutée comme le vidage du cache image de l’application ainsi que le réglage de la transparence de la fenêtre. Le résultat obtenu est donc très satisfaisant et remplit parfaitement les qualités d’un bon programme Windows malgré quelques bugs minimes. 2. Longhorn A. Version 2D Interface 2D pour Longhorn utilisant Avalon Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 30 Longhorn Project – Building an application for Windows Longhorn L' utilisation de ce programme est très simple : au démarrage, il va cherche l' intégralité de vos Favoris Internet Explorer, & va se positionner dans le dossier de départ. Il va commencer à effectuer les captures d' écran, qui s' afficheront au fur & à mesure qu' elles seront effectuées. Lorsque vous sélectionnez une des miniatures, elle s' affiche en grand à droite. Vous pouvez naviguer dans la liste de droite entre vos différents favoris, quelques informations sur ces derniers étant affichées (nom du site, adresse web, taille de la capture en Ko, date de la dernière capture). Il est également possible de supprimer le cache disque & de ré effectuer l' intégralité des captures. Vous pouvez évidemment naviguer dans les différents dossiers de vos favoris, les captures étant effectuées automatiquement durant la navigation. Le programme Interface Graphique Avalon 2D Edition reste dans l' ensemble assez peu puissant. Il n' utilise de loin pas toutes les possibilités offertes par Avalon, car il nous a été difficile de les cerner toutes avec le peu de documentation nécessaire (la documentation MSDN sur XAML version Beta1 RC étant sortie une semaine avant la fin du projet). Nous avons pu néanmoins utiliser quelques fonctions intéressantes. Ce programme est adapté à toutes les résolutions d' écran possible. En effet, l' image de droite ainsi que la hauteur de la liste se redimensionnent dynamiquement en fonction de la taille de la fenêtre. De plus, notre programme offre la possibilité de zoomer avec la molette, ce qui permet de vérifier que l' intégralité du programme est codée en vectoriel (à l' exception évidemment des captures d' écran). Zoom sur la liste des favoris Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 31 Longhorn Project – Building an application for Windows Longhorn De plus, avec le clic-droit, vous pouvez changer le mode d' affichage de la bordure de la fenêtre (sans bordure, bordure ToolBox, bordure standard, bordure 3D). Enfin, grâce au zoom, il est possible de lire la page web aussi bien que si elle était ouverte par le navigateur lui-même, & donc de voir si cela vaut le coup de l' ouvrir ou non au moment où vous avez lancé le programme. Les 4 types de fenêtres proposées par cette interface Au final, ce programme occupe un peu moins de 700 Ko sur le disque dur. Cependant, il est plutôt gourmand en mémoire vive & en mémoire virtuelle (SWAP). En effet, toutes les captures d' écran sont stockées en mémoire vive en haute résolution (1024x768 pixels²), & sous format Bitmap (aucune compression) pour pouvoir être affichée directement par Avalon. Par conséquent, la mémoire utilisée par notre programme est directement proportionnelle au nombre de favoris affichés dans le dossier courant. Par exemple, avec une vingtaine de favoris dans un dossier, le programme peut consommer jusqu' à 260 Mo de mémoire vive en pointe (en moyenne, une centaine de Mo). Il est à noter qu' Avalon nécessite pour l' instant de stocker en cache les polices de caractère qui lui sont nécessaires, & lance donc automatiquement un programme (PresentationFontCache.exe), occupant en moyenne 15 Mo (30 Mo en pointe). Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 32 Longhorn Project – Building an application for Windows Longhorn L' occupation du processeur reste normale : 30% en moyenne avec un record de 70%. Le chargement d' une vingtaine de favoris prend un peu plus d' une dizaine de secondes. Le programme est beaucoup moins gourmand une fois que les captures d' écran ont été effectuées, ou qu' elles ont été enregistrées sur le disque dur. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 33 Longhorn Project – Building an application for Windows Longhorn B. Version 3D Screenshot de la version 3D (image de dossier en rotation) La version 3D a été élaborée à partir du vendredi 17 juin. Cette version, une fois lancée, présente les favoris sous forme d’explorateur Windows avec les images des favoris présents ou des dossiers présents sous forme plane 2D. Des appels à Internet sont faits dès le lancement de l’application pour récupérer les screenshots de sites Internet qui n’en possèdent pas. Le passage de la souris sur un élément fait avancer celui-ci (zoom en profondeur) pour le faire afficher en grand sur l’écran afin de pouvoir distinguer les informations contenues sur l’image. Un clic gauche sur la petite image permet d’ouvrir le site Internet associé dans le navigateur par défaut de l’utilisateur. Un clic droit fait pivoter par une rotation 3D la grande image affichée pour montrer les informations associées à l’élément agrandi. Lorsque la souris sort de la zone de l’image, l’image se réduit pour retrouver sa place d’origine par un zoom inverse sur l’axe des Z. La mollette de la souris sert à afficher les favoris restant qui n’ont pas encore été affichés (12 par défaut), elle sert de navigateur. Un clic sur les dossiers permet de rentrer à l’intérieur et l’affichage des images des favoris se fait comme au lancement de l’application. On retrouve donc dans cette version toutes les fonctionnalités qui étaient indispensables au logiciel. Par souci de temps, l’ajout des fonctionnalités supplémentaires comme la gestion des favoris et des dossiers des favoris n’a pas été implémentée. Cette version est très gourmande en espace mémoire tout comme celle en 2D, il est donc conseillé d’avoir un ordinateur assez puissant pour faire tourner l’application (cf. Annexe / configuration minimale). Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 34 Longhorn Project – Building an application for Windows Longhorn XII. Expériences acquises 1. Les points Les plus gros problèmes rencontrés viennent du fait que nous utilisions des technologies qui n’ont pas eu le temps d’être éprouvé. En effet, le développement sur les versions Bêta RC SDK n’est pas sans mal. Il y a quelques bugs mais c’est surtout le manque de documentation (100% anglaise) qui est handicapante pour un développement productif. Mais cela est le tribut pour pouvoir développer sur des technologies futures. 2. Les points + Bien entendu, l’expérience apportée par ce genre de projet est énorme. Nous avons choisit un projet où les technologies nécessaires pour le réaliser nous était inconnu. Mais cela nous a permit d’élargir nos connaissances. Le deuxième point positif est l’aventure humaine. Nous avons fait un projet entre amis et cela ne fût pas un problème sur la productivité du projet mais au contraire. Cela nous a permit de comprendre et de confirmer que la bonne entente dans une équipe surtout restreinte est primordiale pour le déroulement d’un projet. 3. Conclusion Nous avons rempli nos objectifs : réaliser une application utilisant les technologies de Longhorn. Ces versions, malgré certes qu’elles consomment assez de la mémoire RAM marchent correctement et donne un bon aperçu de ce que ressembleront les futures applications sous Longhorn. Malheureusement, peu de personnes se sont consacrées à ces technologies et nous avons eu beaucoup de mal à trouver de l’aide à travers le web. Nous avons néanmoins découvert beaucoup de choses nouvelles, car nous avons utilisé des logiciels récents (tous en version bêta non stable) que nous ne connaissions pas, avec un langage que nous avons appris au cours de ces trois semaines de projet, le C#. Un cruel manque s’est fait sentir au niveau de XAML car nous n’avions pas d’éditeur graphique ce qui a été très difficile. Néanmoins, Microsoft a annoncé son futur éditeur XAML : Sparkle. La version XP est peut-être plus fonctionnelle mais beaucoup moins jolie que celles utilisant Avalon. Il reste encore beaucoup de chemin à parcourir pour avoir des applications stables en utilisant Avalon et, couplé avec Indigo et WinFS, Longhorn promet un bel avenir aux développeurs avec un système puissant et sûrement facile à maîtriser. Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 35 Longhorn Project – Building an application for Windows Longhorn Références Sites Internet : Forum Longhorn de l' équipe [http://longhorn.reant.net] Longhorn Blogs [http://www.longhornblogs.com] Longhorn Developer Center Home [http://msdn.microsoft.com/longhorn/] Paul Thurrot’s SuperSite for… [http://www.winsupersite.com/longhorn] Wikipedia Longhorn [http://en.wikipedia.org/wiki/Windows_Longhorn] XAML [http://xaml.net/] FAQ Longhorn [http://www.lab-os.com/index.htm] Microsoft Download Center [http://www.microsoft.com/downloads/] C#/C#.NET codes sources [http://www.csharpfr.com] XAML avec C# [http://jab.developpez.com/CSharp/XAML/] Install Creator (ClickTeam) [http://www.clickteam.com/fr/install_creator.htm] Plus de références sur le forum longhorn.reant.net… Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 36 Longhorn Project – Building an application for Windows Longhorn Annexes I. Configuration minimale pour l'utilisation de notre programme 1. Version XP Processeur Athlon XP 1800+ ou Pentium 4 2Ghz, 512 Mo de mémoire vive. Pour une utilisation optimale, il serait mieux d’avoir 1Go de mémoire vive. 2. Version Avalon 2D Processeur Pentium4 ou Athlon XP, 512 Mo de mémoire vive (P4 3GHz ou Athlon 64 couplé à 1 Go de mémoire vive conseillés pour une navigation parfaitement fluide) 3. Version Avalon 3D Processeur AMD Athlon 64 avec 1Go de mémoire vive. 512 Mo de RAM et un processeur Pentium 4 2.8 Ghz ou Athlon XP sont justes pour afficher les effets 3D qui sont très gourmands. II. Installation La version Xp comprend son propre fichier de setup, les versions Longhorn devant être dézippées dans un dossier quelconque. Pour que notre programme fonctionne, il est nécessaire d' installer les RunTimes Avalon & Indigo (cf partie Outils Utilisés). Dans le cas contraire, le programme refusera de démarrer. winfxsetup.exe Microsoft® Pre-Release Software Code Named “Avalon” and “Indigo” Beta1 RC parfois nommé May 2005 CTP publié le 24 mai 2005 version 2.0.50215.28 téléchargé sur http://www.microsoft.com/downloads/details.aspx?familyid=b789bc8d-4f254823-b6aa-c5edf432d0c1&displaylang=en ATTENTION : bien lire cette page web avant l' installation %TEMP%\setup.exe demande un accès au web pendant l' installation, il télécharge les différentes parties par le net lors de l' installation, l' antivirus peut poser problème pour ce script: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215\InstallIndigo.js; simplement l' autoriser Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 37 Longhorn Project – Building an application for Windows Longhorn Si vous désirez consulter le code source, vous pouvez nous contacter directement par mail : [email protected], [email protected], [email protected], [email protected] . III. Configuration du pare-feu : Il est nécessaire de permettre l' accès de notre programme (Longhorn Project Avalon 2D Edition.exe) au web via le port local 80 (le port distant est variable), l' adresse distante étant l' URL de chaque favori (permettre toutes les URLs possibles via le protocole TCP). La configuration des pare-feu logicielle est simple à effectuer (inutile de donner les droits de serveur à notre programme), les pare-feux matériel ne nécessitent pas de configuration spéciale pour notre programme. Notre programme indiquera qu' il lui est impossible de prendre la capture si vous le bloquez ou si vous tardez trop à accepter sa requête (il est conseillé de configurer votre pare-feu une fois pour toutes, & de ne pas accepter les nombreuses requêtes au cas par cas). Stéphane Blanc, Alban Campo, Nicolas Bousquet, Gilles Réant ESSI2 – Juin 2005 38