Я пишу програму, яка бере дані користувача та зберігає їх локально для подальшого використання. Додаток запускатиметься та зупинятиметься досить часто, і я хотів би змусити його зберігати / завантажувати дані при запуску / закінченні програми.
Було б досить просто, якби я використовував плоскі файли, оскільки дані насправді не потребують захисту (вони зберігатимуться лише на цьому ПК). Таким чином, я вважаю варіанти:
- Плоскі файли
- XML
- SQL DB
Плоскі файли вимагають трохи більше зусиль для підтримання (відсутні вбудовані класи, як у XML), однак я раніше не використовував XML, і SQL здається надмірним для цього порівняно легкого завдання.
Чи є інші шляхи, які варто вивчити? Якщо ні, то яке з них є найкращим рішенням?
Редагувати: Щоб додати до проблеми трохи більше даних, в основному єдине, що я хотів би зберігати, - це Словник, який виглядає так
Dictionary<string, List<Account>>
де Обліковий запис - інший спеціальний тип.
Я б серіалізував dict як xmlroot, а потім тип Account як атрибути?
Оновлення 2:
Тож можна серіалізувати словник. Ускладнює те, що значення цього дикту є самим загальним, що є переліком складних структур даних типу 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>
Як бачите, ірахія є
- Ім'я користувача (рядок dict)>
- Обліковий запис (кожен рахунок у Переліку)>
- Дані облікового запису (тобто властивості класу).
Отримати цей макет з a Dictionary<Username, List<Account>>
- хитрий біт, і суть цього питання.
Тут є багато відповідей "як відповісти" щодо серіалізації, і це моя вина, оскільки я не пояснив це на початку, але зараз я шукаю певне рішення.