Laden...

INI vs XML

Erstellt von no1gizmo vor 16 Jahren Letzter Beitrag vor 16 Jahren 5.713 Views
N
no1gizmo Themenstarter:in
161 Beiträge seit 2006
vor 16 Jahren
INI vs XML

Hi,

ich hatte vor kurzem eine Diskussion mit einem anderen Anwendungsentwickler. Was spricht denn eurer Meinung nach für XML und gegen eine INI-Datei, wenn man Programmeinstellungen (geringer Umfang) lokal abspeichern will?

460 Beiträge seit 2004
vor 16 Jahren

Für XML spricht meiner Meinung nach, dass man diese Datei leichter mit anderen Anwendungen einlesen / austauschen kann.

925 Beiträge seit 2004
vor 16 Jahren

Für XML spricht außerdem die beliebige hierarchische Tiefe der Daten. Versuch mal in einer INI Datei mehr als 2 Ebenen zu bauen!

F
10.010 Beiträge seit 2004
vor 16 Jahren

Gegen Ini-Dateien spricht vorallem, das es ein eingebautes System in .NET gibt.

1.373 Beiträge seit 2004
vor 16 Jahren

Für INIs spricht vor allem, dass sie manuell sehr leicht zu editieren sind, vor allem für Laien, die kein XML kennen.

Übrigens gibt es durchaus auch für .NET brauchbare Bibliotheken, um INIs und andere Konfigurationsdateien komfortabel zu handhaben, siehe Nini

Wenn zu erwarten ist, dass die Nutzer regelmäßig von Hand in der Config-Datei herumfummeln, wäre INI also durchaus brauchbar - weniger ist dann mehr. Man kann auch in einer INI-Datei einigermaßen hierarchische Daten abbilden, wie etwa log4j es gemacht hat, bevor es die XML-Konfigurationsdateien gab.

Wenn die Benutzer nicht an der Datei schrauben werden, ist es im Prinzip vollkommen egal, wie die Daten gespeichert werden. Hier bieten sich XML/Binär-Serialisierung an aufgrund ihrer Einfachheit. Falls Interoperabilität mit anderen Programmen benötigt wird, ist XML natürlich empfehlenswert.

Grüße,
Andre

0
767 Beiträge seit 2005
vor 16 Jahren

Original von VizOne
Für INIs spricht vor allem, dass sie manuell sehr leicht zu editieren sind, vor allem für Laien, die kein XML kennen.

Find ich nicht als Argument gegen Xml, da man grade bei Config Dateien diese meistens sowieso vorbereitet und mit Standardwerten füllt. Wenn der Benutzer wirklich direkt rein muss, und das Xml gut aufgebaut ist, ist das nicht schwerer zu lesen als .ini (wobei die standard .net config dateien nicht grad ideal sind).

Aber sowas in der art ist leicht les- und editierbar:


<configuration>
    <Connection server="localhost"
                username="ich"
                password="geheim" />

    <Startup firstpage="Email" 
             autoconnect="true" />

    <Backup enabled="true"
            fileextension=".bak" 
            autosave="0:05:00"/>
</configuration>

Beim lesen und speichern hilft -> XmlSerializer

loop:
btst #6,$bfe001
bne.s loop
rts

1.373 Beiträge seit 2004
vor 16 Jahren

Da ich keine wissenschaftlichen Untersuchungen dazu nennen kann, ist es schwer zu sagen, was wirklich leichter zu begreifen ist. Ich setze einfach mal das Ini-Pendant daneben.


[Connection]
server=localhost
username=ich
password=geheim

[Startup]
firstpage=Email
autoconnect=true

[Backup]
enabled=true
fileextension=.bak
autosave=0:05:00

Mein Bauchgefühl sagt mir, dass Otto-Normal-User diese Version zugänglicher findet. Aber wie sagt, ich habe es nicht gemessen und kann entsprechend keine begründeten Behauptungen aufstellen. Wäre vielleicht mal eine interessante Untersuchung. Wobei in der Regel der User überhaupt nichts manuell in der Config einstellen brauchen sollte. Und dass sich die Serializer recht gut zum Speichern der Konfigurationsdateien eignen, hatte ich ja bereits erwähnt.

Viele Grüße,
Andre

0
767 Beiträge seit 2005
vor 16 Jahren

ich kenn auch keine diesbezüglichen wissenschaftlichen untersuchungen g

mit "nicht schwerer zu lesen als ini" hab ich wohl gemeint, wenns kein problem ist, das core-temperatur im gehirn um 0.1 grad zu erhöhen...

ich setz dem einfach einfach die 10 grad gegenüber die es dem programmierer wärmer wird, wenn man dann .ini verarbeiten muss, bei denen das xml-pendant einige tiefere verschachtelte ebenen hat.

oder wenn schauder newlines mit rein müssen.

mit xml jag ich das durch den xmlserializer und hab ein object auf das ich so zugreif:


string myServer = config.Connection.server;
bool backupOn = config.Backup.enabled;

klar. alles auch mit .ini machbar. aber schon beim dran denken das selber auslesen zu müssen wirds mit 1 grad wärmer, wenn ich weiss dass ichs mit xml umsonst bekomm.

da schreib ich lieber einen winforms editor dazu, mit dem man die .xml config komfortabel ändert bevor ich das lesen/schreiben von .inis schreibe

aber is auch ansichtssache 🙂

loop:
btst #6,$bfe001
bne.s loop
rts