====== Konzept Konfiguration ======
Anwendungsprogramme, besonders wenn sie eine gewisse Größe erreichen, benötigen oftmals eine Konfiguration. Manche Konfiguration ist von globaler Bedeutung und manche Konfiguration nur von lokale Bedeutung (z.B. innerhalb eines Plug-Ins).
Dabei stellen sich oft die Frage, wie geht man mit den Konfigurationsdaten um?
* Schreibt/Liest man diese "am Stück" zum Programm-Start oder -Ende?\\ Das bedeutet, das Haupt-Programm Schreibt/Liest Konfigurationsdaten von sich selbst und seinen Plug-Ins. => Welche Daten geben die Plug-Ins in Auftrag?
* Schreibt jede kleine Einheit ihre eigenen Daten?
* Wo und in welcher Weise werden Konfigurationsdaten geschrieben/gelesen und Programmintern zur Verfügung gestellt?
* Wie steht es um Konfigurationsdaten, für die Voreinstellungen hinterlegt werden müssen, wenn eine solche Konfiguration noch gar nicht existiert?
===== Das Wie und Wo =====
Denkbar wäre, dass ...
* Daten in einem Python-Modul stehen, welches zu Programmbeginn gelesen wird. Schreiben von Änderungen ist schwerlich möglich.
* Schreiben und Lesen einer INI-Datei ist prinzipiell möglich. Jedoch muss man genau wissen welche Werte zu schreiben/lesen sind. Eine schwierige Situation, wenn ein Haupt-Programm die Daten seiner Plug-Ins schreiben/lesen muss.
* Aufbau einer Datenstruktur, in die sich auch Plug-Ins "einklinken" können. Die Gesamtstruktur wird in einer JSON-Datei ([[https://docs.python.org/3/library/json.html|JSON]]) gespeichert bzw. von ihr gelesen. Die geschriebene Datei wäre vom Benutzer lesbar und könnte auch verändert werden.
* Aufbau einer Datenstruktur, in die sich auch Plug-Ins "einklinken" können. Die Gesamtstruktur wird in einer YAML-Datei ([[|YAML]]) gespeichert bzw. von ihr gelesen. Die geschriebene Datei wäre vom Benutzer lesbar und könnte auch verändert werden.
* Aufbau einer Datenstruktur, in die sich auch Plug-Ins "einklinken" können. Die Gesamtstruktur wird in einer pickle-Datei gespeichert bzw. von ihr gelesen. Die geschriebene Datei wäre vom Benutzer nicht mehr lesbar, da sie binär ist.
* Schreiben und Lesen der Konfigurationsdaten aus einer Datenbank.
{{tag>Python Konzept}}