Ich möchte die Konfiguration meines Projekts speichern, einschließlich
- Bildschirmgröße
- Bildschirmposition
- Ordnerpfade
- Benutzereinstellungen und so weiter.
Die Standardspeicherorte für diese Konfigurationswerte sind:
- Registrierung
- INI-Dateien
- Persönliche Dateien (wie * .cfg)
Wie wählen Sie zwischen diesen Orten? Gibt es auch Vor- und Nachteile , wenn Sie eines davon verwenden?
Antworten:
Registrierung:
+
Relativ Standard in der Windows-Umgebung.+
Generell gute Unterstützung durch Installateure etc.-
Plattformspezifische API, falls Sie jemals Ihre Anwendung portieren möchten.-
Nicht besonders lesbar für Menschen.INI-Dateien:
+
Einfaches Format.+
Tragbar.+
Für Menschen lesbar.-
Es kann schwierig sein, komplexere Informationen zu speichern (z. B. alles, was mehr als zwei Ebenen tief verschachtelt ist).?
Möglicherweise müssen Sie Ihren eigenen Parser schreiben (obwohl nicht schwierig) oder eine externe Bibliothek wie SimpleIni verwenden (danke an Jonathan Merlet für den Kommentar).XML-Dateien (ich vermute, dies ist die .cfg-Option):
+
Ein Standardformat.+
Tragbar.+
Unterstützt tief verschachtelte Strukturen.-
Nicht besonders lesbar für Menschen.Persönlich verwende ich für Windows-Anwendungen in der Regel C # und gehe zu einer persönlichen Datei für den Benutzer, die als XML gespeichert ist. Ich mache dies normalerweise, weil die menschliche Lesbarkeit bei den von mir geschriebenen Anwendungstypen normalerweise keine Priorität hat (und die Anwendung sollte auf jeden Fall einen Konfigurationseditor haben), und in der .NET- Umgebung ist es sehr einfach, mit XML zu arbeiten. Ich habe sehr oft ein UserConfiguration-Objekt, das einfach in und aus einer Konfigurationsdatei serialisiert wird - fast ohne Entwicklungsaufwand (Parsen, Stöbern), und Sie haben Ihre Konfiguration bereit, um sie in einer stark typisierten Umgebung zu verwenden.
quelle
Ich würde mit INI-Dateien gehen, sie sind die menschlichere Option:
XML mag eine gute Option sein, kann aber die Einfachheit und Eleganz von INIs nicht übertreffen:
INIs sind auch sehr gut verstanden und plattformunabhängig. Es gibt wahrscheinlich nicht so viele Tools für sie wie für XML-Dateien, denn wer braucht ein spezielles Tool, um eine INI-Datei zu lesen und zu bearbeiten?
quelle
<window width="600" height="350" />
Ich bevorzuge XML-Dateien. Sie sind hierarchisch, Sie können sie auf fast jede erdenkliche Weise nach Ihrem Willen biegen, sie sind gut verstanden, plattformunabhängig und es gibt eine breite Palette von Software zum Lesen und Schreiben.
quelle
Um Jeff Ds Vorschlag von YAML zu erweitern , folgt eine kurze Einführung.
YAML ähnelt JSON (JSON ist eine Teilmenge von YAML seit Version 1.2 des YAML-Standards, und daher kann gültiges JSON von YAML-Parsern analysiert werden). Auf den ersten Blick besteht der Hauptunterschied darin, dass YAML (standardmäßig) Einrückungen anstelle von Klammern verwendet, um die Hierarchie anzuzeigen. Es gibt auch einen merklichen Mangel an Anführungszeichen für Zeichenfolgen. Ein kurzes Beispiel von oben:
Weitere Beispiele finden Sie auf der YAML-Seite von Wikipedia . Unterstützung für YAML gibt es für die meisten Hauptsprachen ( Details finden Sie unter yaml.org ).
quelle
Sie haben eine Option vergessen: die Datenbank. Dies wird hauptsächlich in Szenarien verwendet, in denen sich Benutzer bei Ihrer Anwendung anmelden, wenn sich Ihre Anwendung nicht auf den angemeldeten Windows-Benutzer verlassen kann. Dies ist beispielsweise der Fall, wenn Ihre App in einem Kioskmodusfenster ausgeführt wird.
quelle
Meine persönlichen Vorlieben sind XML-Dateien:
In den meisten Fällen erwarte ich nicht, dass der Benutzer seine Konfigurationseinstellungen bearbeiten muss, sodass das Problem der Lesbarkeit in diesem Fall kein Argument ist.
Wenn sie bearbeitet werden müssen, können Sie ein Bearbeitungswerkzeug bereitstellen - dies verhindert, dass der Benutzer etwas Dummes mit den Daten macht. Wenn sie die Standardeinstellungen wiederherstellen möchten, können Sie ihnen einfach sagen, dass sie die Datei x löschen sollen, was die meisten Benutzer gerne tun.
Beachten Sie, dass Sie weiterhin darauf achten müssen, dass Sie zum Speichern Ihrer Datei berechtigt sind, da einige Speicherorte in Windows 7 usw. standardmäßig keinen Schreibzugriff haben.
INI-Dateien sind eine gute Standardmethode zum Speichern von Konfigurationen und haben sich bewährt, aber sie fühlen sich für mich ein bisschen wie Windows 3.1 an!
Wahrscheinlich die beste Option, wenn Sie möchten, dass der Benutzer an seinen Daten basteln kann
Ich würde mich persönlich von der Registry fernhalten. Zum einen können Sie nicht garantieren, dass der Benutzer über die erforderlichen Lese- / Schreibrechte verfügt, wo immer Sie Ihre Daten speichern möchten.
In neueren Betriebssystemen, in denen die Registrierungsvirtualisierung zum Einsatz kommt, kann dies große Verwirrung stiften, da Sie die virtualisierten Einstellungen nicht "sehen" können. Dies hat uns mehr als einmal gestört, da wir stundenlang versucht haben, herauszufinden, warum etwas nicht funktioniert hat.
quelle