Каков принятый способ сохранения переменных в службе Windows

#c# #.net #.net-4.0 #windows-services

#c# #.net #.net-4.0 #windows-services

Вопрос:

У меня есть служба Windows, которая будет работать все время, но активируется только в том случае, если с момента последнего раза прошло не менее 24 часов. Поэтому мне нужно сохранить время и дату с момента последнего выполнения его полезной нагрузки.

Для этого я думал о записи в App.Config с помощью:

 ConfigurationManager.AppSettings.Set("LastRunTime", DateTime.Now.ToString());
 

однако, похоже, это не сохраняется, а скорее кэшируется, что бесполезно, если служба перезапущена.

Итак, каков принятый метод сохранения значений для службы Windows?

Комментарии:

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

2. Можете ли вы указать другое местоположение для настроек вашего приложения, папку пользователя? Я предполагаю, что он не сохраняется из-за безопасности в system32?

3. Вы не можете использовать System. Конфигурация. Конфигурация. Save() или .SaveAs()?

Ответ №1:

Используйте базу данных, простой xml / текстовый файл, значение реестра.

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

Комментарии:

1. Это достаточно справедливо, но database является излишним для простого значения. Итак, каков принятый способ? Я уже упоминал консольное приложение для руководства, они не заинтересованы в этом методе.

2. Делайте то, что считаете лучшим. Если DB является излишним, используйте текстовый / XML-файл или значение реестра. Вероятно, вы не найдете для этого «принятый» метод, просто личные предпочтения.

3. Вам нужен параллелизм? Имейте в виду при использовании текстового файла.

Ответ №2:

В итоге я сериализовал объект в соответствии с this article и в соответствии с тем, что сказал @ChrisBint, я сохранил его в текстовом файле. Это то, что я искал как «принятое», я знал, что могу записывать в текстовые файлы, но это был тот метод, который я искал. Я хотел сохранить все структурированным и строго типизированным вместо того, чтобы писать свои собственные методы для сохранения данных.

Поскольку @Chris предоставил только частичный ответ, я поддержал его и принял это.

Комментарии:

1. «Принято»? Кем? Хотя я ценю одобрение, в вашем вопросе был задан вопрос, каков принятый метод сохранения значений для службы Windows, и эта ссылка, конечно, не такова, это стандартные методы сериализации. В вашем вопросе также не запрашиваются детали реализации, просто предложения о том, как это можно сделать. Исходя из этого, я отклонил это, поскольку я не чувствую, что это представляет собой что-то вроде ответа (которого, честно говоря, я чувствую, что для этого вопроса не будет)

2. @ChrisBint — Я понимаю, о чем вы говорите, вероятно, с моей стороны не удалось задать правильный вопрос, и я подумаю об его удалении, поскольку здесь, вероятно, нет ничего ценного в будущем.