2009-04-23 5 views
8

J'écris un service C# que je veux pouvoir utiliser sous Windows et Mono. Je viens de commencer à expérimenter avec Mono et j'essaie de déterminer la meilleure façon de stocker les paramètres pour contrôler le service qui fonctionne pour Windows et Mono.Enregistrement des paramètres de service C# sous Windows et Mono

  1. fichier de paramètres où le service est installé

    • Plus: Même code pour chaque plate-forme, facile à trouver pour l'édition
    • Moins: Autorisations, de Windows ne sera probablement pas envie d'écrire dans le fichier
  2. fichier de paramètres dans le stockage de la plate-forme (% AppData,/etc, ...)

    • Plus: Auront autorisations, plus faciles à trouver pour l'édition
    • Moins: Plus codage nécessaire pour gérer chaque plate-forme
  3. petite base de données (SQLite peut-être?)

    • Plus: Plus facile à écrire le code pour stocker et récupérer les paramètres
    • Les inconvénients: Pas facile à éditer manuellement, le même problème de l'endroit où stocker

Selon vous, quel est le meilleur, ou avez-vous une meilleure suggestion?
J'écrirai aussi probablement un client en ligne de commande pour faciliter la modification des paramètres, cela changera-t-il la façon dont les paramètres devraient être stockés?

Répondre

5

Jetez un oeil à IsolatedStorage. Ceci est une API pour vous fournir le stockage par application, il est intégré dans .NET et est pris en charge dans Mono. L'API vous fournit des fichiers d'E/S sur les fichiers stockés dans un emplacement géré par l'infrastructure: dans Mono, ce sera un répertoire ~/.isolatedstorage, dans Windows, il se trouvera quelque part dans les Documents et les Paramètres de l'utilisateur. Avec cette API, vous pouvez gérer votre fichier de paramètres sans avoir à vous soucier des spécificités ou des autorisations du système d'exploitation.

+0

N'avait aucune idée IsolatedStorage a été implémenté en Mono. On dirait que SQLite ADO.NET a un support IsolatedStorage prévu. – Samuel

+0

IsolatedStorage ne semble pas autoriser le partage d'un magasin entre plusieurs projets. Ce genre de tue ce que je veux faire. Il meurt également si vous déplacez l'assemblage. – Samuel

+0

Etes-vous sûr? Que faire si vous demandez le magasin de stockage isolé pour IsolatedStorageScope.User? Je n'ai pas essayé ça, mais ça peut marcher ... –

Questions connexes