Diese Frage ist unklarer als Sie denken. Unter "Einstellungen" kann man eine ganze Menge verstehen.
Es gibt eine gute .NET-Infrastruktur für die Handhabung von Anwendungseinstellungen in Konfigurationsdateien. Diese werden im Allgemeinen Ihrem Programm als Eigenschaften eines globalen Settings-Objekts angezeigt; die Klassen in der System.Configuration
Namespace kümmern sich um das Lesen und Persistieren, und es gibt in Visual Studio integrierte Tools, die den Code für den Umgang mit ihnen automatisch generieren. Einer der Datentypen, die diese Infrastruktur unterstützt, ist StringCollection
so dass Sie damit eine Liste von Servern speichern können.
Aber für eine große Liste von Servern wäre dies aus mehreren Gründen nicht meine erste Wahl. Ich gehe davon aus, dass die Elemente in Ihrer Liste Tupel sind (z.B. Hostname, Port, Beschreibung) und nicht einfache Strings. In diesem Fall müssen Sie die Daten formatieren und parsen, um sie in eine StringCollection
und das ist im Allgemeinen ein Zeichen dafür, dass Sie etwas anderes tun sollten. Außerdem sind Anwendungseinstellungen schreibgeschützt (zumindest unter Vista), und obwohl Sie einer Einstellung einen Benutzerbereich geben können, um sie persistent zu machen, führt Sie das auf einen Weg, den Sie wahrscheinlich verstehen möchten, bevor Sie ihn einschlagen.
Das ist eine weitere Sache, die ich in Betracht ziehen würde: Ist Ihre Serverliste einfach nur eine Liste, oder haben Sie ein internes Objektmodell, das sie repräsentiert? Im letzteren Fall würde ich eine XML-Serialisierung zum Speichern und Abrufen der Objekte in Betracht ziehen. (Das Einzige, was ich in der Anwendungskonfigurationsdatei behalten würde, wäre der Pfad zu der serialisierten Objektdatei.) Ich würde dies tun, weil die Serialisierung und Deserialisierung von einfachen Objekten in XML wirklich einfach ist; Sie müssen sich nicht mit dem Entwurf und dem Testen eines geeigneten Serialisierungsformats befassen, da die Tools dies für Sie erledigen.
Der Hauptgrund, warum ich eine Datenbank verwende, ist, wenn mein Programm eine Reihe von Operationen durchführt, deren Ergebnisse atomar und dauerhaft sein müssen, oder wenn ich aus irgendeinem Grund nicht alle meine Daten gleichzeitig im Speicher haben möchte. Wenn ich jedes Mal, wenn X passiert, eine dauerhafte Aufzeichnung davon haben möchte, dann führt mich das in die Richtung, eine Datenbank zu verwenden. Die XML-Serialisierung ist für so etwas in der Regel nicht geeignet, da man realistischerweise nicht nur ein Objekt serialisieren kann, wenn man alle seine Objekte in einer einzigen physischen Datei speichert. (Obwohl es sicherlich nicht verrückt ist, einfach das gesamte Objektmodell zu serialisieren, um eine Änderung zu speichern. Genau das macht das Produkt meines Unternehmens, und das weist auf einen weiteren Umstand hin, unter dem ich keine Datenbank verwenden würde: wenn sich das Schema der Daten häufig ändert).