2009-04-23 3 views
8

Я пишу службу C#, которую я хочу использовать в Windows и Mono. Я только что начал экспериментировать с Mono и пытаюсь определить лучший способ сохранить настройки для управления сервисом, который работает как для Windows, так и для Mono.Сохранение настроек службы C# в Windows & Mono

  1. файл настройки, на котором установлена ​​служба

    • Плюсы: Same код для каждой платформы, легко найти для редактирования
    • Минусы: Разрешения, Windows, вероятно, не будет, как запись в файл
    • файл
  2. Настройки в хранилище платформы (% APPDATA,/и т.д., ...)

    • Плюсы: Будет ли иметь права доступа, проще найти для редактирования
    • Минусы: Больше кодирования требуется для обработки каждой платформы
  3. небольшой базы данных (SQLite может быть?)

    • Pros: Легче написать код для хранения и извлечения настроек
    • Против: Непросто редактировать вручную, та же проблема, где хранить

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

ответ

5

Посмотрите на IsolatedStorage. Это API для предоставления вам хранилища для каждого приложения, он встроен в .NET и поддерживается в Mono. API предоставляет вам файл IO для файлов, которые хранятся в местоположении, управляемом инфраструктурой: в Mono это будет каталог ~/.isolatedstorage, в Windows это будет где-то в пользовательских документах и ​​настройках.

С помощью этого API вы можете сохранить свой файл настроек, не беспокоясь о специфике или разрешениях операционной системы.

+0

Не имеет понятия ИзолированнаяСтоимость была реализована в моно. Похоже, SQLite ADO.NET запланировал поддержку IsolStorage. – Samuel

+0

IsolatedStorage, похоже, не позволяет обмениваться хранилищем через несколько проектов. Это убивает то, что я хочу. Он также умирает, если вы перемещаете сборку. – Samuel

+0

Вы уверены? Что делать, если вы запрашиваете изолированное хранилище для InventoryScope.User? Я не пробовал это, но это может сработать ... –