2010-08-02 3 views
1

Je me suis souvent demandé dans ce cas comment stocker une liste d'objets en tant que propriété dans une classe et comment les sérialiser correctement en XML. Par exemple, nous avons une classe TabGroup qui contiendra zéro ou plusieurs Tabs.Stockage/sérialisation de la liste d'objets

Vaut-il mieux avoir une liste de propriétés Tabs ou une liste de références aux onglets? À condition que les onglets soient identifiés par des limaces uniques.

List<Tab> 

List<string> 

À la fin, il revient à

  1. sérialisation que l'ensemble graphique de TabGroup (qui contiendra tous ses onglets et leur contenu)
  2. sérialisation Tabgroups et onglets indenpendently et les maintaing séparent et référencé à travers la liste des slugs dans le graphe de Tabgroup sérialisé.

pro Le plus notable de 1:

  • Tabgroup dans son ensemble est conservé dans un fichier sérialisé, en gardant la simple structure de datastore.

con le plus notable de 1:

  • chaque fois qu'une mise à jour est faite à l'un des onglets contenus, Tabgroup doivent être mis à jour (reserialized) aussi.

Le plus notable de pro 2:

  • mise à jour des onglets ne nécessite pas de reserialization Tabgroup (au moins quand rien n'a été ajouté ou supprimé) puisque les références restent les mêmes; donc seulement l'onglet mis à jour doit être sérialisé à nouveau.

con le plus notable de 2 (ce qui est la principale raison pour laquelle je vous écris ceci)

  • individuels fichiers Tab peuvent être supprimés dans filestore mais la liste des références reste le même, si des erreurs/des exceptions se produisent lors de l'affichage/du rendu des groupes de tabulation; logique complexe devrait être mis en œuvre pour rendre quelque chose comme "Tab a été retiré de la banque de données de manière non supportée, supprimez-le du Tabgroup aussi?"

Que suggérez-vous pour résoudre ce problème? J'accepterai la réponse qui couvrira un large éventail d'implications. Veuillez noter que nous ne parlons ici que de la persistance XML, évidemment en SQL nous avons peu de place pour expérimenter puisque les Tabgroups et les Tabs seraient normalement dans des tables séparées de toute façon (avec une relation un-plusieurs entre eux).

Répondre

1

À moins que vous ayez une raison très convaincante pour laquelle la complication du magasin de données est une bonne idée, vous devriez généralement garder les choses simples. Deuxièmement, après avoir lu le message en entier deux fois, je ne comprends pas vraiment quelle est votre question.

Je ne suis pas sûr de ce que votre problème est, mais si vous demandez si votre conception doit retourner un List<Tab> ou List<string> où chaque chaîne représente un lien vers un onglet, puis je dirais pour List<Tab>. Vous pouvez charger paresseux la structure entière à l'exception de l'ID ou de tout ce que vous utilisiez pour un lien si le chargement est un problème. Généralement, il est simplement plus facile d'obtenir ce que vous recherchiez directement d'un objet au lieu de devoir obtenir une liste de liens et de charger tous les liens individuellement. Sans plus d'informations spécifiques au problème réel, je doute que quelqu'un puisse vous aider plus que cela à donner de longs avantages/inconvénients en fonction de circonstances supposées.

+0

Votre compréhension du problème était assez bonne et je suis d'accord que la liste est le choix le plus logique. – mare

Questions connexes