Я пишу приложение, которое берет данные пользователя и сохраняет его локально для использования позже. Приложение будет запущено и остановлено довольно часто, и я бы хотел, чтобы он сохранял/загружал данные в начало и конец приложения.
Было бы довольно просто, если бы я использовал плоские файлы, так как данные действительно не нужно защищать (он будет храниться только на этом ПК). Возможные варианты:
- Плоские файлы
- XML
- SQL DB
Плоские файлы требуют немного больше усилий для поддержки (нет встроенных классов, таких как XML), однако я раньше не использовал XML, и SQL кажется излишним для этой относительно простой задачи.
Есть ли другие возможности, которые стоит изучить? Если нет, то какое из них является лучшим решением?
Изменить: Чтобы добавить немного больше данных в проблему, в основном единственное, что я хотел бы сохранить, - это словарь, который выглядит так:
Dictionary<string, List<Account>>
где Учетная запись - другой пользовательский тип.
Я бы сериализовал dict как xmlroot, а затем тип учетной записи как атрибуты?
Обновление 2:
Таким образом, можно сериализовать словарь. Сложность заключается в том, что значение для этого dict является самим обобщением, который представляет собой список сложных структур данных типа Account. Каждая учетная запись довольно проста, это всего лишь куча свойств.
Я понимаю, что цель здесь состоит в том, чтобы попытаться в итоге:
<Username1>
<Account1>
<Data1>data1</Data1>
<Data2>data2</Data2>
</Account1>
</Username1>
<Username2>
<Account1>
<Data1>data1</Data1>
<Data2>data2</Data2>
</Account1>
<Account2>
<Data1>data1</Data1>
<Data2>data2</Data2>
</Account2>
</Username2>
Как вы видите, heirachy
- Имя пользователя (строка dict) >
- Аккаунт (каждая учетная запись в списке) >
- Данные учетной записи (т.е. свойства класса).
Получение этого макета из Dictionary<Username, List<Account>>
- это сложный бит и суть этого вопроса.
В сериализации есть много ответов "как", это моя ошибка, так как я не делал это более ясными на ранней стадии, но теперь я ищу определённое решение.