2010-08-02 5 views
1

Я использую в этом случае то, что является правильным способом хранения списка объектов как свойства в классе и правильной сериализации их в XML.Хранение/сериализация списка объектов

Например, у нас есть класс TabGroup, который будет содержать ноль или несколько вкладок.

Лучше ли иметь список свойств Tabs или список ссылок на вкладки? При условии, что вкладки идентифицируются пулями, которые являются уникальными.

List<Tab> 

List<string> 

В конце концов все сводится к

  1. Сериализация только весь TabGroup граф (который будет содержать все свои вкладки и их содержание)
  2. сериализации Tabgroups и Вкладки indenpendently и сохранением их отдельно и с помощью списка списков в сериализованном графе Tabgroup.

Наиболее примечательные про 1:

  • Tabgroup в полном объеме будет упорствовать в одном файле сериализованного, сохраняя структуру хранилища просто.

Наиболее примечательный жулик 1:

  • каждый раз, когда обновление производится к одному из содержащихся Вкладок, Tabgroup должны быть обновлены (reserialized) тоже.

Наиболее примечательные про 2:

  • обновление вкладок не требует reserialization из Tabgroup (по крайней мере, когда ничего не было добавлено или удалено), так как ссылки остаются неизменными; поэтому только обновленная Tab снова должна быть сериализована.

Наиболее примечательным жулик 2 (это основная причина, почему я пишу это)

  • отдельные файлы Tab могут быть удалены файлового хранилища, но список ссылок остается неизменным, поэтому ошибки/исключения возникают при просмотре/рендеринге Tabgroups; сложную логику нужно было бы реализовать, чтобы вывести что-то вроде «Tab был удален из хранилища данных неподдерживаемым образом, также удалить его из Tabgroup»?

Что вы предлагаете решить эту проблему? Я приму ответ, который охватит широкий спектр последствий. Обратите внимание, что мы говорим только о сохранении XML здесь, очевидно, что в SQL у нас мало возможностей для экспериментов, так как Tabgroups и Tabs обычно будут в отдельных таблицах в любом случае (с одним отношением между ними).

ответ

1

Если у вас есть какая-то очень веская причина, почему усложнение хранилища данных является хорошей идеей, вы должны, как правило, придерживаться ее простого. Во-вторых, дважды прочитав весь пост, я действительно не понимаю, в чем ваш вопрос.

Я не совсем уверен, что ваша проблема, но если вы спрашиваете, должен ли ваш дизайн возвращать List<Tab> или List<string>, где каждая строка представляет собой ссылку на вкладку, то я бы поспорил за List<Tab>. Вы можете ленить загрузку всей структуры, за исключением идентификатора или того, что вы использовали для ссылки, если загрузка является проблемой. Как правило, это упрощает получение того, что вы искали непосредственно из объекта, вместо того, чтобы получать список ссылок и загружать все ссылки по отдельности.

Без дополнительной информации, относящейся к конкретной проблеме, я сомневаюсь, что кто-то сможет помочь вам больше, чем иначе, чем дать некоторые длинные профили/минусы на основе предполагаемых обстоятельств.

+0

Ваше понимание проблемы было достаточно хорошим, и я согласен с тем, что список является наиболее логичным выбором. – mare