2009-04-23 15 views
8

Piszę usługę C#, którą chcę móc używać w systemach Windows i Mono. Właśnie zacząłem eksperymentować z Mono i próbuję określić najlepszy sposób przechowywania ustawień, aby kontrolować usługę działającą zarówno w systemie Windows, jak i Mono.Przechowywanie ustawień usługi C# w Windows i Mono

  1. Ustawienia pliku, w którym jest zainstalowana usługa

    • Plusy: sam kod dla każdej platformy, łatwe do znalezienia dla edycji
    • Wady: Uprawnienia systemu Windows prawdopodobnie nie będzie jak pisanie do pliku
    • plik
  2. Ustawienia w Storage platform (% APPDATA/etc ...)

    • Plusy: będziemy mieć uprawnienia, łatwiej znaleźć do edycji
    • Wady: Więcej kodu potrzebną do obsługi każdej platformy
  3. małą bazę danych (SQLite może?)

    • Zalety: Łatwiejsze napisz kod do przechowywania i pobierania ustawień
    • Minusy: Niełatwe do edycji ręcznie, ten sam problem dotyczący miejsca przechowywania

Który według ciebie jest najlepszy, czy masz lepszą sugestię?
Prawdopodobnie będę również pisać klienta wiersza poleceń, aby umożliwić łatwiejszą zmianę ustawień, czy to zmieni sposób zapisywania ustawień?

Odpowiedz

5

Spójrz na IsolatedStorage. Jest to interfejs API zapewniający pamięć dla aplikacji, wbudowany w platformę .NET i obsługiwany w trybie Mono. Interfejs API udostępnia plik IO na plikach przechowywanych w lokalizacji zarządzanej przez framework: w Mono będzie katalogiem ~/.isolatedstorage, w Windows będzie gdzieś w Dokumentach i ustawieniach użytkownika.

Za pomocą tego interfejsu API można zachować plik ustawień bez obawy o szczegóły systemu operacyjnego i uprawnienia.

+0

Nie miałem pojęcia, że ​​IsolatedStorage został zaimplementowany w Mono. Wygląda na to, że SQLite ADO.NET ma zaplanowaną obsługę IsolatedStorage. – Samuel

+0

IsolatedStorage nie pozwala na udostępnianie sklepu w wielu projektach. Ten rodzaj zabija to, co chcę robić. Umiera także, jeśli poruszasz zespołem. – Samuel

+0

Jesteś pewien? Co się stanie, jeśli poprosisz o odizolowany magazyn pamięci dla IsolatedStorageScope.User? Nie próbowałem tego, ale może działać ... –

Powiązane problemy