BTS INFORMATIQUE DE GESTION Option Administrateur de réseaux Développeur d applications COMPTE RENDU D ACTIVITE ACTIVITE N 3 Nom et Prénom : BUISSON Pierre-Adrien EPSI Lyon 107 rue de Marseille 69 007 LYON Identification (objectif) de l'activité Développement d'un client FTP graphique Contexte dans lequel le projet s'inscrit Développement d'un client FTP avec une interface graphique en utilisant un langage du framework dotnet 1.1 Utilisation de fichiers XML pour la sauvegarde des profils FTP Conditions de réalisation Travail effectué : Travail effectué dans : Type d'intervention : Individuellement un service utilisateur nouvelle application En groupe un service d'études SSII maintenance Cadre scolaire (EPSI) Autres contraintes Développement en C# au moyen de l'ide Visual Studio 2003 Utilisation et intégration d'un composant permettant la mise en oeuvre des principales commandes de FTP Sauvegarde des profils de connexion au moyen d un fichier *.xml Compétences couvertes No Compétence couverte Intitulé C33 PRODUIRE - DEVELOPPER Maquetter une application, la développer à l aide d un langage de programmation événementielle C34 PRODUIRE DEVELOPPER Développer à l aide d un langage de programmation à objets C39 PRODUIRE - DEVELOPPER Maîtriser le poste de développement et son environnement Pierre-Adrien BUISSON BTS IG, Session 2006 Page 1 sur 5
1. PRÉSENTATION DE L ACTIVITÉ Cette application a été développée en C# au moyen de l environnement de développement Microsoft Visual Studio.NET, et s appuie sur le framework.net, version 1.1. Cet environnement de développement permet d associer la facilité de développement en RAD à la programmation orientée objet apportée par le langage C#. Le premier objectif de ce projet était d implémenter la majorité des fonctions «basiques» d un client FTP (download et upload de fichiers notamment). Une fois cette base mise en place, l intérêt principal de cette application était la mise en place d un système de sauvegarde des profils de connexion au moyen de fichiers XML. 2. IMPLÉMENTATION DES FONCTIONS DE FTP Le FTP (File Transfer Protocol) est, comme son nom l indique, un protocole permettant le transfert de fichiers, dont les spécifications sont définies dans la RFC 959 (les RFC, ou Request For Comments, sont une série de documents et normes concernant les standards du réseau et de l Internet). Les fonctionnalités du FTP auraient pu être implémentées simplement par l utilisation de sockets, mais le but premier de cette application était essentiellement la manipulation de sauvegardes au format XML. Par conséquent, j ai choisi de m appuyer sur un composant déjà existant, aux capacités limitées mais permettant la mise en place des fonctionnalités FTP basiques (upload/download de fichiers, navigation sur le serveur FTP, suppression et «renommage» des fichiers distants). Ce composant, nommé FTPCom, est mis à disposition sur le site codeproject.com par Jérôme Lacaille. L utilisation de ce composant dans le projet se limite à la création d un objet FTPCom.FTPC, attribut de la classe FrmMain, et à partir duquel toutes les fonctionnalités FTP pourront être appelées par la suite. 3. DIAGRAMME DE CLASSES En plus des classes créées par l IDE lors de la création de chaque nouvelle «form», j ai procédé à la création de deux classes supplémentaires pour la gestion des profils de connexion. La première de ces deux classes, cprofil, comporte les informations et méthodes permettant la gestion d un profil de connexion FTP. Elle comporte notamment en attributs les informations nécessaires à la connexion à un serveur FTP : - adresse du serveur - identifiant sur le serveur (login) - mot de passe associé à l identifiant En outre, un alias est associé à chacun des profils et permet à l utilisateur d identifier rapidement chacun des profils de connexion en le nommant à sa guise. La seconde de ces deux classes, cgestionprofil, permet la gestion d une collection de profils. Elle comprend donc un tableau d objets de la classe cprofils. Une méthode permet Pierre-Adrien BUISSON BTS IG, Session 2006 Page 2 sur 5
de lire ces profils à partir du fichier XML de sauvegarde, tandis qu une seconde méthode permet de sauvegarder dans ce même fichier XML les profils modifiés ou ajoutés. 4. SAUVEGARDE EN XML 4.1.QU EST-CE QUE XML? XML (Extensible Markup Language ou langage de balisage extensible), est un standard du W3C (World Wide Web Consortium). Il s agit d un langage de description de données, qui tend depuis quelques années à s imposer comme un nouveau standard pour l échange d informations. Pierre-Adrien BUISSON BTS IG, Session 2006 Page 3 sur 5
4.2.STRUCTURE DU FICHIER XML UTILISÉ La première ligne correspond à la déclaration de la version de XML utilisée (actuellement, il s agit de la version 1.0, la version 1.1 étant en préparation par le W3C). Cette déclaration permet également de préciser l encodage utilisé, en l occurrence l UTF-8. La seconde ligne est simplement un commentaire permettant d identifier le rôle du fichier créé. Enfin, une première balise apparaît : il s agit de la balise <profils>, qui va servir de balise conteneur pour tout le reste du document. Pour faire un parallèle avec le diagramme UML précédent, elle correspond à la classe cgestionprofil puisqu elle va contenir chacun des profils. Par la suite chaque profil est lui introduit par la balise <profil> (sans S), contenant ensuite les balises : - <alias> - <host> - <login> - <password> 4.3.UTILISATION DE XML EN C# Le framework.net met à disposition des développeurs un namespace dédié à l utilisation de XML : «System.xml». Une fois ce namespace rajouté grâce à la directive «using System.xml», nous avons à notre disposition tout le nécessaire pour lire ou écrire un fichier XML. 4.3.1.Lecture d un fichier XML Pour lire un fichier XML, il faut tout d abord instancier un objet XmlDocument, qui servira ensuite de base pour toutes les actions. On utilisera ensuite la méthode Load(chemin) pour indiquer quel fichier XML va être traité (ici, le chemin du fichier XML est contenu dans l attribut cheminfichier de la classe au sein de laquelle nous nous situons. // Création de l'objet document XmlDocument doc = new XmlDocument(); doc.load(this.cheminfichier); Ensuite, nous allons lister chacune des balises <profil> grâce à la méthode GetElementsByTagName, et pour chacune d elle, traiter les informations contenues dans les 4 balises <alias>, <host>, <login> et <password>. 4.3.2.Ecriture d un fichier XML De même que la classe XmlDocument permettait la lecture d un fichier XML, une classe de System.Xml regroupe les opérations permettant l écriture de données dans un Pierre-Adrien BUISSON BTS IG, Session 2006 Page 4 sur 5
fichier XML : il s agit de la classe XmlTextWriter. Le constructeur de XmlTextWriter demande en paramètres le chemin du fichier qui va être créé, ainsi que l encodage utilisé. La méthode WriteStartDocument() permet d écrire la ligne de déclaration du fichier XML. Ensuite, trois méthodes vont être utilisées pour écrire les balises ouvrantes, leur contenu et les balises fermantes. - WriteStartElement(balise) : Permet d écrire une balise ouvrante <balise> - WriteString(contenu) : Permet d écrire la chaîne contenue entre deux balises - WriteEndElement(balise) : Permet de fermer la balise <balise> 5. CONCLUSION Cette activité fut très intéressante à développer car elle a constitué pour moi une première expérience dans deux technologies actuellement très utilisées : le développement.net en C#, ainsi que le fonctionnement et l utilité du XML. Cela m a également permis de concevoir et d implémenter un diagramme de classes simple pour la gestion de la collection de profils, démontrant l avantage de travailler avec des collections d objets, notamment au niveau de la clarté du code produit. Pierre-Adrien BUISSON BTS IG, Session 2006 Page 5 sur 5