2011-04-16 2 views
1

Quelqu'un peut-il suggérer quel est le meilleur moyen? Stockage de l'objet sous forme sérialisée ou lecture du filecontent sous forme de chaîne et construction de l'objet.Sérialisation vs format de chaîne

Simplement,
1.J'ai une chaîne (str, str1, str2, str3, ....) comme ceci dans mon magasin. Lire cette chaîne de caractères et construire un objet java (ex créer l'obj Linkedlist basé sur la virgule séparée).

2. Récupérez l'obj Linkedlist du magasin de fichiers en utilisant la sérialisation.

Lire l'objet sérialisé à partir de filestore ou construire l'obj à partir d'une chaîne. Lequel est le meilleur moyen?

Je prends la liste liée ici est juste pour l'échantillon. Il peut être différent, à partir de la chaîne que je dois construire certains formats JSONObject, JsonArray ... JSON n'est pas sérialisé obj, je le ferai d'une autre manière de faire comme sérialisable.

Pour une chaîne longue, quelle est la meilleure, sérialiser ou construire l'obj à partir d'une chaîne?

Toutes les choses sont liées à Java

S'il vous plaît me conseiller

Cordialement
S.Chinna

Répondre

2

L'avantage d'utiliser un format de texte est que vous pouvez lire et conserver les données dans un simple éditeur de texte. L'avantage d'utiliser un format binaire comme la sérialisation d'objet est que vous n'avez pas à vous soucier des séparateurs, par exemple. si une chaîne contient un ,

soit l'approche que vous suggérez est susceptible d'être assez efficace (bien que j'utiliser un ArrayList)

EDIT: Si vous avez plusieurs cordes une meilleure approche pourrait être de les mettre sur un séparer la ligne chacun. De cette façon, vous n'avez pas besoin de s'inquiéter de ,, et peut lire/modifier/version le fichier plus facile. Comme vous pouvez le voir, vous serez capable de lire le fichier entier sur une seule ligne.

+3

De plus, les fichiers dans les formats textuels peuvent être versionnés par tous les systèmes de contrôle de version, ainsi vous pouvez stocker des choses comme les cas de test dans votre référentiel de code source, et enregistrez les changements dans le temps. Il est peu probable que les objets sérialisés binaires soient effectivement versionnables (comme dans, vous pouvez non seulement stocker mais examiner les différences) dans n'importe quel système de contrôle de version! –

0

Cela dépend de la complexité des objets que vous devez stocker. Si elles sont simples, ou si vous avez le temps d'écrire pour écrire vos propres objets Writer et Reader, j'irais toujours avec un format de texte personnalisé, car ils sont les plus faciles à déboguer.

Si vous avez un serveur comprenant des commandes de texte, vous pouvez même vous connecter avec putty ou telnet et tester votre serveur!

Mais si vous devez transporter des structures d'objets complexes, cela pourrait même changer pendant le développement, j'irais certainement avec une certaine forme de sérialisation. S'il vous plaît noter ici que la sérialisation par défaut de Javas n'est pas un bon candidat pour un protocole de communication, en raison de la surcharge importante qu'ils produisent dans la définition des classes encore et encore. Mieux vaut aller avec JBossSerialization si vous voulez que quelque chose d'API compatible avec Java soit intégré dans les classes, ou aller avec JSON, si vous n'avez pas besoin de transporter beaucoup de données binaires.

0

Les avantages de sérialisation Java ObjectStream sont:

  • Vous avez un minimum de code à écrire, et la pensée minimale à faire lors de la conception de votre format de sérialisation .
  • Traiter des réseaux d'objets compliqués (structurés graphiquement) est simple.
  • Le résultat final devrait être de sécurité type et sans bug (en supposant que vous ne mettez pas en œuvre vos propres méthodes d'objet en lecture/écriture sur commande, etc.)

Le principal inconvénient de sérialisation Java ObjectStream est que est fragile face aux changements apportés aux classes que vous avez sérialisées. Faire face à cela peut être difficile. (En revanche, un format de texte analysé manuellement est largement immunisé contre ce problème ... et les problèmes sont plus faciles à résoudre.)