Какие параметры доступны для сохранения локального состояния в .Net - PullRequest
4 голосов
/ 15 сентября 2011

Я ищу хорошие варианты для сохранения локального состояния приложения (созданного в .Net / C #.)

Я подумал о том, чтобы развернуть свое собственное решение или использовать простую локальную базу данных, такую ​​как Sqllite, однако я решил спросить сообщество SO, какие варианты доступны.

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

Что вы рекомендуете?

Обновление

Что ж, после дальнейшего рассмотрения я решил использовать SQLite с DbLinq, основным альтернативным претендентом был выпуск SQL Server Compact, но я нашел несколько важных факторов, которые поставили SQLite выше SQLCE.

В частности.

  • API, предоставляемый SQLCE (IMO), не был таким богатым, как API SQLite.net или DbLinq.
  • Производительность SQLCE во время выполнения была не такой хорошей, как у SQLite.
  • SQLite с открытым исходным кодом является полезным фактором.

Почему я не использовал Properties.Settings или app.config?

Для моего варианта использования мне нужно было что-то вроде (легко) запрашиваемого журнала событий (мне нужно разрешить аудит кредитных транзакций.) Основное значение состояния, которое я здесь рассматривал, было доступным кредитом в киоске. Таким образом, чтобы восстановить мои переменные состояния при запуске приложения, я могу запросить в журнале последнюю запись и получить оттуда необходимые значения.

Когда вам нужно только сохранить значение и извлечь его. Properties.Settings или app.config являются совершенно подходящими местами для этого.

Ответы [ 5 ]

4 голосов
/ 15 сентября 2011

Я бы порекомендовал XmlSerializer или BinaryFormatter, вы можете посмотреть их как в SO, так и в Google.

Ваш выбор будет зависеть от нескольких параметров, таких как размер набора данных или возможность его быстрой сериализации.

И то, и другое очень быстро, ЕСЛИ ВАМ НУЖНО сохранить все состояние приложения за один раз.

Однако, если вам нужно сохранить состояние приложения по частям, так как изменения происходят, вы будете лучшес какой-то базой данных, например http://www.sqlite.org/.

http://www.jonasjohn.de/snippets/csharp/xmlserializer-example.htm

http://www.jpreece.com/csharp/serialization-tutorial/

3 голосов
/ 15 сентября 2011

SQLite, безусловно, хороший вариант, он легче, чем полноценная база данных, и совместим с ACID на случай, если что-то пойдет не так.

Единственное требование здесь - чтобы у вас был один параллельный пользователь для базы данных.

1 голос
/ 15 сентября 2011

Вы можете использовать Настройки в VS . В вашем случае вам нужны настройки пользовательской области, в которых хранятся пользовательские настройки.

1 голос
/ 15 сентября 2011

Можете ли вы использовать app.config или Properties.Settings?

0 голосов
/ 15 сентября 2011

Вы можете использовать SQL Server CE 4.0 вместо SQLite.Храните данные в одном файле, и вы можете использовать Entity Framework Code-First.

...