Самый простой способ сериализации и хранения объектов в C #? - PullRequest
5 голосов
/ 16 июля 2011

Я ищу простое решение для сериализации и хранения объектов, которые содержат конфигурацию, состояние приложения и данные.Это простое приложение, его не много данных.Скорость не проблема.Я хочу, чтобы это было в процессе.Я хочу, чтобы его было легче редактировать в текстовом редакторе, чем в xml.

Я не могу найти ни одной базы данных документов для .net, которая может обрабатывать ее в процессе.Просто сериализация в XML Я не уверен, что хочу сделать, потому что его ... XML.Сериализация в JSON кажется очень специфичной для javascript, и я не буду использовать эти данные в javascript.

Я думаю, что есть очень удобные способы сделать это, но сейчас я склоняюсь к использованию JSON, несмотря на его вложение в javascript.

Ответы [ 2 ]

5 голосов
/ 16 июля 2011

То, что «JSON» является аббревиатурой для нотации объектов JavaScript, не имеет значения, соответствует ли оно вашим потребностям или не является форматом данных. JSON является легким, основанным на тексте, легко читаемым / редактируемым, и это независимый от языка формат, несмотря на название.

Я бы определенно склонялся к его использованию, поскольку это звучит довольно идеально для вашей ситуации.

1 голос
/ 16 июля 2011

Я дам пару вариантов:

  1. Двоичная сериализация: зависит от содержимого ваших объектов, если у вас сложное дерево зависимостей, это может создать проблемы при сериализации.Кроме того, он не очень гибок, так как стандартная двоичная сериализация, предоставляемая Microsoft, также сохраняет информацию о типах.Это означает, что если вы сохраните тип в двоичном файле и через месяц решите реорганизовать свой код и, скажем, переместить тот же класс в другое пространство имен, то при десериализации из ранее сохраненного двоичного файла произойдет сбой, поскольку тип больше не совпадает.,В этом есть несколько обходных путей, но я лично стараюсь избегать такого рода сериализации, насколько могу.

  2. ORM отображает и сохраняет его в небольшой базе данных.SQLite - отличный выбор для такого рода вещей, поскольку он небольшой (один файл) и полностью поддерживает базу данных ACID.Вам нужен маппер, или вам нужно реализовать маппер самостоятельно.

Я уверен, что через пару минут у вас будет другой выбор.

Так что выбор за вами.

Удачи.

...