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 :

Serializable par l'exemple


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 343
    Points : 129
    Points
    129
    Par défaut Serializable par l'exemple
    J'ai récupéré un projet, et comme je suis perfectionniste, j'ai "nettoyé" le code en améliorant ce qui était moche, etc.

    Dans mes classes objets, correspondantes à ce que j'ai récupéré en base de données, j'ai ceci sur toute la classe:
    Du coup j'ai cherché à comprendre et j'ai regardé sur msdn: http://msdn.microsoft.com/fr-fr/libr...(v=vs.90).aspx
    J'ai copié l'exemple pour comprendre la sérialisation, et je constate que ça fait de l'effet dans les données enregistrées dans le fichier XML.

    Comme dans l'utilisation que je fais, je n'ai pas de fichier XML, est ce que ça a un intéret que je garde la sérialisation? A moins que ça serve dans le cache puisque j'y stocke des dictionnaires ou des listes d'objects. Bref, j'aimerai comprendre concrêtement à quoi ça peut servir...

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    La serialization permet de persister un objet. Par exemple tu as une instance de classe A et tu souhaites la persister, tu peux alors la serializer, et stocker le résultat dans un fichier XML ou en base de données.

    Lorsque tu souhaites récupérer l'état que tu as sauvegardé, il suffit de déserializer afin de recréer ta classe exactement dans l'état où elle se trouvait au moment de la sauvegarde.

    Pour ton projet, difficile de te dire s'il faut conserver les attributs ou pas sans connaître précisément l'application. Fais le test avec une des classes, tu verras si ça continue à tourner correctement ou non
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 343
    Points : 129
    Points
    129
    Par défaut
    Rajouter [Serializable] n'a donc de sens que si j'utilise la sérialisation explicitement en recourant aux méthodes Serialize et Deserialize de la classe SoapFormatter ?

    Dans l'exemple du lien msdn, à quoi ça sert concrêtement, quelle utilisation peut-il en être fait ? Autrement dit, qui voudrait enregistrer des propriétés d'un objet en XML en en excluant certaines ?
    J'aurai pu faire le fichier XML sans passer par la sérialisation, il me semble, non ?

    Pour mon projet, il semblerait que je puisse me débarasser du [Serializable]. En tout cas aucun appel de la classe SoapFormatter ou autre qui gérerait la sérialisation, et tout se passe très bien comme d'habitude.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Citation Envoyé par cyrano_de_bergerac Voir le message
    Rajouter [Serializable] n'a donc de sens que si j'utilise la sérialisation explicitement en recourant aux méthodes Serialize et Deserialize de la classe SoapFormatter ?

    Dans l'exemple du lien msdn, à quoi ça sert concrêtement, quelle utilisation peut-il en être fait ? Autrement dit, qui voudrait enregistrer des propriétés d'un objet en XML en en excluant certaines ?
    J'aurai pu faire le fichier XML sans passer par la sérialisation, il me semble, non ?

    Pour mon projet, il semblerait que je puisse me débarasser du [Serializable]. En tout cas aucun appel de la classe SoapFormatter ou autre qui gérerait la sérialisation, et tout se passe très bien comme d'habitude.
    Premièrement, la présence d'un tel décorateur n'affecte en rien la performance au runtime. Au pire, ça va allonger le temps de compilation d'une milliseconde.

    Il existe des scénarios dans lesquels la sérialization est implicite plutôt qu'explicite.

    Par exemple, il existe des clients qui font abstraction d'un service web ou de message queueing qui vont accepter des instances de classes dont les propriétés sont sérializables plutôt que du XML ou du JSON.

    Ça permet de garder de la flexibilité dans son code tout en déléguant la responsabilité de la sérialization à un tierce parti qui risque d'être plus compétent à effectuer cet tâche autant en amont qu'en aval.

Discussions similaires

  1. [LIVRE] ruby par l'exemple
    Par ash.ice.loky dans le forum Ruby
    Réponses: 8
    Dernier message: 05/03/2007, 21h40
  2. Réponses: 36
    Dernier message: 09/09/2006, 03h06

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