Wiki

Clone wiki

actu-pc / Version2.0

Version 2.0 du Logiciel de Sauvegarde

Introduction

Contexte

Avec l'acquisition des techniques liées à .NET et donc l'expérience qui commence à être la mienne je me suis lancé dans le développement de la nouvelle version. Celle-ci sera estampillée 2.0 du fait des changements.

Buts

Les évolutions prévues dans cette version sont avant tout fonctionnelles. Elles impliquent cependant une révolution technique et une révision en profondeur. On est pas loin de "on jette tout et on recommence." . Le but ultime est qu'un utilisateur exigeant tel que moi n'exploite que ce logiciel pour gérer ses sauvegardes.

  • L'amélioration majeure consiste en la possibilité créer plusieurs tâches différentes à exécuter.
  • Une autre amélioration est d'ajouter la possibilité de synchroniser des dossiers entre eux. Et non plus sauvegarder l'intégralité sous forme de fichier zip.
  • L'ajout d'un écran de paramétrage de l'application permettra de modifier plusieurs paramètres comme les couleurs, les polices, la taille des bordures, le niveau d'information dans l'historique et peut être d'autres paramètres encore.
  • Une option envisagée est de créer un service qui gérerait la planification des sauvegardes, avec :
    • Dans un premier temps, une gestion globale à l'application. On planifie toutes les tâches à la suite les unes des autres.
    • Dans un second temps, un niveau de précision supplémentaire permettra de choisir tâche par tâche le moment d'exécution.

Impact Technique

La version 2.0 ne sera pas compatible avec les paramètres des versions précédentes, la migration se fera au premier lancement, le code de migration sera supprimé à partir des versions suivantes. Les tâches de sauvegardes peuvent ne pas être migrées. La réflexion est toujours en cours. La migration de la clé d'enregistrement vers la base de données de l'application est prévue. La suppression de la clé dans la base de registre ne sera pas faite automatiquement. Il faudra lancer un fichier .reg qui contiendra la clé à supprimer "REG DELETE HKLM\Software\Actu-pc.net /v MTU"

Dépendances

Une des conséquences de ces évolutions est une augmentation des dépendances. En effet dans la première version le travail a été fait dans le sens d'un développement le moins dépendant de librairies annexes. Les améliorations prévues nécessitent, ou du moins sont grandement simplifiées, la présences de deux bibliothèques Microsoft :

  • La première peut être embarquée dans l'application directement sous forme de .dll il s'agit du composant SqlCe permettant de gérer une base de données dans un fichier.
  • L'autre est le framework Microsoft Sync Voir le site du framework
  • La bibliothèque DotNetZip a été mise à jour en version 1.9.1.8, les problèmes de blockage d'application lorsque l'espace disque est insuffisant ou lorsque le support de stockage est retiré subsiste toujours dans cette version. La travail sera orienté vers une installation simple qui installe en même temps les dépendances.

Rapprochement du fonctionnement Microsoft

La gestion du paramétrage va dans le sens des avancées de Microsoft au niveau de .NET. La bibliothèque créée pour gérer les fichiers .ini est abandonnée. Les données de l'application seront gérées de deux manières. Un base de données SQLCe qui gérera les tâches de sauvegardes et un fichier de configuration XML géré par .NET pour gérer tous les paramètres de l'application.

Avancement

  • Le développement a repris et avance plutôt bien. En effet la gestion des données en base et la gestion des paramètres sont prises en compte.
  • Tâche #3 : Un contrôle à onglet a été créé avec la possibilité de fermer un onglet et celle d'en ajouter et la possibilité de faire défiler les onglets dans le sens horizontal. La possibilité de déplacer ce contrôle dans une collection de contrôles est envisagée, il rejoindrait en autres, le contrôle permettant de sélectionner plusieurs dossiers ainsi que le contrôle utilisateur ressemblant au selecteur de chemin HTML
  • Tâche #4 : La suppression du code de sauvegarde au niveau de la fenêtre de gestion est entamée et sa migration dans des objets spécifiques à chaque tâche enregistrée dans l'application est en cours.
  • Tâche #5 : Un JobManager a été créé pour gérer la liste des tâches en cours. La possibilité de se servir de ce manager à la place de gérer les tâches en base est envisagée. L'idée est de gérer deux collections, les Jobs et les Jobs en cours de fonctionnement.
  • Tâche #6 : Faire évoluer l'objet Job en cours de développement d'une autre manière. L'idée est que le Job engloberait la tâche pure car la vue de sauvegarde est capable d'afficher l'avancement ce qui n'est pas cohérent de stocker en base. La possibilité d'utiliser un troisième type d'objet est aussi envisagée. Cette partie non-versionnée est amenée à beaucoup changer.
  • Tâche #7 : Faire évoluer le Job de manière à augmenter la granularité des informations et pouvoir afficher l'avancement de toutes les sous-tâches en cours. Concrètement lors de la sauvegarde d'une liste de dossiers dans un dossier de destination on peut voir l'avancement de chaque dossier source comme ceci :
+- SauvDocuments [======    ] 60%
|  +- Dossier1 [==========] Terminé
|  +- Dossier2 [=====     ] 50% D:\Image\image2.jpg
|  +- Dossier3 [=====     ] 50% D:\Documents\important.pdf
+- SauvMusiques [=         ] 10%
   +- Rock [=         ] 10% D:\Musique\Rock\rock.mp3
   +- Metal[          ] 0%
  • Tâche #2 : Une nouvelle fenêtre doit être créée pour permettre de visualiser l'avancement comme décrit ci-dessus.
  • Tâche #9 : Lors de la suppression d'une tâche, demander la confirmation.

Updated