IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Choix d'un format de fichier


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Points : 54
    Points
    54
    Par défaut Choix d'un format de fichier
    Bonjour,

    Je dois développer une application qui doit pouvoir générer et travailler sur un fichier, qui éventuellement sera d'une taille aléatoire (voir très grande) selon les utilisateurs.

    Ce fichier contiendra en fait une liste de mots, d'images, ou encore de sons (mp3 sûrement). Les images et les sons devront être stockés directement dans ce fichier aussi (c'est bien là le problème), d'où un fichier qui peut être très gros.

    En moyenne, je pense qu'une liste sera en moyenne de 1000 éléments, et chaque élément sera d'un maximum de 400ko. Assez pour un petit MP3 avec un son, ou une petite image.

    La solution qui me parait évidente c'est de générer un fichier XML via de la serialisation, et stocker les images et sons en binaire.

    Pensez-vous que cette solution est viable ? .NET ne prendra t-il pas trop de temps à parser le fichier pour l'unserialiser ? Et quel est la meilleure solution pour stocker mes images et sons à l'intérieur dans l'objet qui contiendra toute la serialisation ?

    Merci pour vos réponses, et conseils

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    avec le ResourceReader et resourceWriter , ne trouverais tu pas ton bonheur ?

    The Monz, Toulouse

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Points : 54
    Points
    54
    Par défaut
    Tout en rime

    En fait, ce ne serait pas des ressources propre au programme, mais un format de fichier, au même titre que le xls est un fichier excel, car ce fichier doit pouvoir gérer pas mal de choses...

    Pour l'instant, dans la version actuelle de mon programme, ce fichier se présente sous la forme d'abord d'un DataSet avec 3 DataTable, que j'exporte sous forme d'un fichier XML. Maintenant je me demande si il est raisonnable d'intégrer un champ binaire dans ces tables pour y coller directement du son ou de l'image. Si dotNET est assez optimisé pour gérer ce cas là, alors il va de soi que j'utiliserai ce système !

    La seconde solution à laquelle je songe est une classe ad-hoc, serializable.

    Mais j'aimerais avoir votre avis sur la question, et sur la meilleure méthode pour gérer cette problématique

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    Tu peux aussi partir du principe que plutot que de faire de l'XML qui à mon avis n'est pas adapté pour des données binaire... tu ferais peut-etre mieux
    de partir sur de la sérialization binaire

    Evidemment, la question qui se pose est : qui va exploité ces fichiers ?

    Si seule ton application permet l'ouverture et la saisie de ces fichiers, autant
    passer en sérialisation binaire.. car elle sera pls rapide, plus simple à gérer
    et pour des données binaires, sera bien sur mieux adaptée

    Pour moi, XML est utile si tu souhaites autoriser des personnes à "modifier" le
    contenu de tes fichiers avec des éditeurs autres que ceux que tu fournies
    à tes utilisateurs finaux...

    Sinon, si personne n'a besoin de mettre le nez à la main dans tes fichiers,
    sérialisation binaire et basta Simple, efficace, rapide

    The Monz, Toulouse

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Points : 54
    Points
    54
    Par défaut
    Ok je pense en effet que la serialisation binaire est vraiment mieux adaptée. Le XML était plutôt par commodité vu que pour l'instant mon programme fonctionne avec des fichiers XML...

    Par contre on peut travailler avec un DataSet qu'on exporte vers un fichier binaire ? Ou alors vais-je devoir créer ma propre classe de serialisation ? (le DataSet était pratique pour moi, car je fais des recherches sur les éléments, des effacements, rajouts, ...).

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    En sérialisation binaire, tu peux faire un truc comme ca par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    BinaryFormatter f = new BinaryFormatter();
                FileStream s = new FileStream(@"d:\data.bin", FileMode.Create);
                MyData d = new MyData();
                for (int i = 0; i < 10; i++)
                {
                    d.images.Add(Image.FromFile(@"d:\manue.jpg"));
                }
                f.Serialize(s, d);
                s.Close();
    Dans le cas présenté ici, MyData est une classe définie comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [Serializable()]
        public class MyData
        {
            public List<Image> images;
     
            public MyData()
            {
                images = new List<Image>();
            }
        }
    Donc, je ne vois pas pourquoi tu ne pourrais pas créer ta "Super" Classe qui sera sérialisé en y incluant tout tes éléments....

    Maintenant, tu peux aussi gérér à la main ta sérialisation.. mais j'avoue
    que la solution présentée ici à le mérite d'etre tres rapide à mettre en place.

    voila.. si ca peut aider

    The Monz, Toulouse

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Points : 54
    Points
    54
    Par défaut
    Merci bien pour tes réponses

    En fait j'utilisais un DataTable car chaque item dans mon fichier est en fait composé de 3 items, par exemple :

    Item1: photo de machin, texte de machin, son de machin
    Item2: photo de truc, texte de truc, son de truc

    Pour la suppression, la recherche, ou pour classer ensuite les items, c'est plus simple avec une DataTable... les éléments de mes items seront bien-sûr toujours synchronisé, tandis-que si je gère manuellement tout ça par des listes ça sera un peu plus confus.

    C'est pour cette raison que je recherche à mettre en "binaire" directement les images et les sons dans cette DataTable. Et j'avoue avoir quelques craintes au niveau perf...

    Qu'en penses-tu ?

  8. #8
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    Ouarf, la serialisation binaire, c'est quand meme du rapide

    Donc, à priori, fait quelques bench avant de te lancer à fond la dedans, mais bon pour moi, ca devrait passer sans trop de soucis... du moment que tu dépasses
    par trop les 30 ou 40 mega.. forcement, plus tant mets, et plus s'est long.. mais bon... en terme de perf (sauf si tu as vraimetn des contraintes ultra critiques) ca devrait le faire sans trop de soucis...

    PS : pour tes tests, fait les bien en release en dehors de l'environnement
    visual studio ou en lancant en faisant Ctrl-F5... histoire d'éviter que le debuggueur, meme en release te ralentisse tes tests

    The Monz, TOulouse

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Points : 54
    Points
    54
    Par défaut
    En effet, c'est assez rapide, ça me laisse même "du temps" pour faire une compression, même sur un gros fichier ! Je te remercie pour ton aide

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/03/2012, 10h58
  2. Choix d'un format de fichier
    Par Shikamaru86 dans le forum Composants
    Réponses: 11
    Dernier message: 11/04/2007, 08h59
  3. Format de fichier extensible
    Par Rodrigue dans le forum C++Builder
    Réponses: 9
    Dernier message: 11/06/2005, 14h45
  4. [Format de Fichier] Recherche de site
    Par Pedro dans le forum Windows XP
    Réponses: 5
    Dernier message: 12/04/2005, 16h11
  5. Quel format de fichier utiliser pour les maps ?
    Par fb57 dans le forum OpenGL
    Réponses: 3
    Dernier message: 23/09/2004, 20h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo