Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 21 Min.

Software konfigurieren

Formate für Konfigurationsdaten und wie Sie diese verarbeiten.
© Bild: Vietmeier
Schon seit es Windows-Programme gibt, lassen diese sich von außen konfigurieren, beispielsweise durch die im System hinterlegten Umgebungsvariablen, durch Initialisierungsdateien, über in der Systemregistrierung (Registry) hinterlegte Werte oder durch explizit dafür geschaffene Konfigurationsdateien. Reine Konsolenanwendungen nutzten auch schon vor Windows Kommandozeilenschalter, um zum Zeitpunkt des Programmstarts eine Konfiguration auswählen zu können. In modernen Anwendungen mit grafischen Benutzeroberflächen stehen weitaus mehr Optionen für die Konfiguration der Software zur Verfügung, und selbstverständlich kann jedes Programm mehrere oder alle Optionen für sich nutzen – von Umgebungsvariablen über die Registry bis zu individuellen Konfigurationsdateien.Selbst Programme, die keine offengelegten Konfigura­tions­funktionen bieten, nutzen in der Regel diverse Systemeinstellungen, die über die Registry verwaltet werden. Sie regeln beispielsweise das Aussehen von Dialogen, das Verhalten von Eingabegeräten, geben die Systemfarben vor oder nutzen die interne Konfiguration von Druckern, Netzwerk, System oder Internet. Dies erklärt auch, dass viele Anwendungen Systemdialoge zur Konfiguration anbinden, um Anwendern diese Einstellungen direkt im Programm anzubieten.Die Registry als Zentrum für Konfigurationsdaten zu nutzen birgt den Nachteil, dass diese – da sie schon mit einer großen Menge Betriebssystemdaten beladen ist – mit der Zeit sehr, sehr groß wird. Zumal viele Anwendungen beim De­installieren die von ihnen in der Registry abgelegten Daten nicht entfernen.Bei der Konzeption eigener Programme müssen Sie deshalb entscheiden, ob Sie Einstellungen, die der Anwender vornimmt, in der Registry oder in einer externen Konfigura­tionsdatei ablegen wollen. Wichtig ist außerdem, zu entscheiden, ob das Bearbeiten der Konfigurationsdaten ausschließlich in der eigenen Anwendung oder auch über externe Programme möglich sein soll – etwa über Texteditoren oder den Registrierungseditor. Abhängig von Ihrer Entscheidung wählen Sie ein Konfigurationsdateiformat, das Sie wahlweise komprimieren und/oder verschlüsseln. Optional schränken Sie die Bearbeitung der Einstellungen über Benutzer-Accounts oder Rechte ein.

Einstellungen verwalten

In Bild 1 sehen Sie die allgemeine Vorgehensweise beim Verwalten von Konfigurationsdaten. Einstellungen, die der Anwender nicht ändern darf, werden auf feste Werte gesetzt und intern verwaltet. Das Ändern der Standardwerte erfordert eine Änderung des Quelltextes.
Programmeinstellungenverwalten(Bild 1) © Autor
Für Einstellungen, die der Anwender ändern darf, werden ebenfalls Vorgabewerte vergeben. Das Anpassen dieser Werte erfolgt bevorzugt über einen Optionendialog, den die Anwendung selbst verwaltet und nach Bedarf anzeigt. Der Dialog sorgt dafür, dass nur gültige Werte akzeptiert werden. Die Einstellungen werden direkt übernommen und gesichert, und zwar wahlweise in der Registry oder in einer beziehungsweise mehreren Konfigurationsdateien. Beim Speichern in der Registry geben Sie den Zielknoten an. Die Einstellungen werden im Zielknoten über Schlüsselnamen und zugeordnete Werte abgelegt.Bei den externen Konfigurationsdateien geben Sie an, welcher Speicherort – sinnvoll sind zum Beispiel das AppData-Verzeichnis, das Programmverzeichnis oder das Datenverzeichnis der Anwendung – und welches Format genutzt werden. Ferner vergeben Sie einen eindeutigen Dateinamen. Der Hauptdateiname entspricht hier häufig dem Namen der Anwendung oder gibt den Funktionsbereich wieder, wenn Einstellungen in unterschiedliche Konfigurationsdateien gesplittet werden – zum Beispiel Folder.ini für das Verwalten von Arbeitsverzeichnissen.Die Verwaltung von Werten variiert je nachdem, für welches Format Sie sich entschieden haben. Neben Standardformaten (zum Beispiel INI, XML, JSON) sind auch benutzerdefinierte Formate denkbar.Sind die aus der Registry oder aus externen Konfigurationsdateien gelesenen Daten fehlerhaft, beispielsweise weil sie über externe Programme ohne Prüflogik verändert wurden, oder weil sie aufgrund von Defekten nicht mehr lesbar sind, sind die im Quellcode hinterlegten Vorgabewerte über interne Kontrollfunktionen wiederherzustellen.Die im Code hinterlegten Vorgabewerte stellen sicher, dass immer alle wichtigen Einstellungswerte vorhanden sind. Nicht nur, wenn sie noch nicht in der Registry oder in einer Konfigurationsdatei hinterlegt wurden – etwa beim ersten Aufruf der Anwendung, oder wenn die Werte nicht durch ein Installationsprogramm angelegt worden sind. Das Überschreiben der Vorgabewerte findet folglich nur statt, wenn die Werte geändert wurden, gültig sind und sich aus der Registry oder einer Konfigurationsdatei auslesen lassen.Die Anwendung kennt den Speicherort, das Format und auch die Schlüsselnamen für den Zugriff auf die Einstellungen. Wird mit externen Konfigurationsdateien gearbeitet, so werden die Standard-Konfigurationsdaten häufig als Ressourcen in der Programmdatei abgelegt und beim ersten Programmstart extrahiert.Die Entscheidung, ob Sie für das Speichern von Konfigurationsdaten eigenständige Konfigurationsdateien oder die Registry benutzen, sollten Sie davon abhängig ­machen, um wie viele Werte es dabei geht und ob diese verschleiert werden sollen (etwa Aktivierungsschlüssel). Externe Konfigurationsdateien haben Vorteile, da sie nicht auf bestimmte Formate beschränkt sind, die Serialisierungsfunk­tionen von .NET nutzen können und man durch Verschlüsselung das unerwünschte Editieren unterbinden kann. Auch mit binären Formaten oder komprimierten Daten lässt sich das Bearbeiten der Daten erschweren. Übrigens lassen sich auch in der Registry hinterlegte Daten verschlüsseln und damit das direkte Auslesen verhindern.Ist das Ziel, das Bearbeiten der Konfiguration so einfach wie möglich zu gestalten, nutzen Sie für die externen Konfigurationsdateien einfache Textformate, wie beispielsweise INI, XML, JSON oder SOAP.Bleibt abschließend, noch einmal auf die Speicherorte für externe Konfigurationsdateien hinzuweisen. Obgleich diese in der Regel im Anwendungsverzeichnis oder dem anwendungsspezifischen Ordner im AppData-Verzeichnis abgelegt werden, können Sie auch ein gesondertes Konfigurationsdatenverzeichnis eines Herstellers oder ein beliebiges Datenverzeichnis nutzen.Für das Verarbeiten von Konfigurationsdateien und den Zugriff auf die Registry stellt das .NET Framework diverse Klassen bereit. Für Formate, die durch .NET nicht direkt unterstützt werden, greifen Sie auf das Windows-API oder auf Komponenten und Klassen von Drittherstellern zurück. Die wichtigsten Formate für Konfigurationsdateien und dafür bereitgestellte Klassen und Tools werden nachfolgend zusammengestellt.

INI-Dateien

Das Initialisierungsdateiformat wurde unter Windows schon mit den ersten 16-Bit-Versionen eingeführt und wird auch heute noch von Anwendungen genutzt. Noch heute bekannt sind die Initalisierungsdateien win.ini und user.ini. Sie sorgten für eine Trennung zwischen System- und Anwendungseinstellungen.INI-Dateien verwenden reinen Text ohne jegliche Formatierung und können daher mit dem Windows-Systemprogramm Notepad.exe bearbeitet werden. Die Einstellungen werden in Bereiche, die sogenannten Sektionen, unterteilt. Eindeutige Bezeichner in eckigen Klammern definieren die Sektionsnamen. Einzelne Einstellungen werden in der Form Schlüsselname = Wert unter den Sektionsnamen geschrieben. In unterschiedlichen Sektionen können gleiche Schlüsselnamen verwendet werden.

[Menuesowner] 
ShowFileMenue = True 
ShowEditMenue = True 
ShowExtrasMenue = False 
ShowHelpMenue = True 
[Colors] 
BackgroundColor = Gray 
ForegroundColor = Black 

[Settings] 
MaxLoginTries = 1 
LastUser = Andreas 

[Users] 
User1 = Andreas 
User2 = Pia 
User3 = Dominik 
User4 = Natascha 
 
INI-Dateien verwenden ein einfaches Textformat, das sich sehr leicht bearbeiten lässt (sequenziell, StreamWriter, StreamReader). In .NET finden Sie keine Klasse und keine Methoden, um direkt auf INI-Dateien und deren Sektionen und Schlüsselnamen zuzugreifen. Allerdings gibt es Windows-API-Funktionen dafür: GetPrivateProfileString und SetPrivateProfileString. Mit GetPrivateProfileString lesen Sie einen Wert aus und mit SetPrivateProfileString legen Sie einen Wert in einer INI-Datei ab. Deklariert werden die API-Funktionen wie folgt – hier in der Syntax für Visual Basic .NET:

Public Declare Function 
  GetPrivateProfileString Lib 
  "kernel32" Alias "GetPrivateProfileStringA" ( 
  ByVal lpApplicationName As String, 
  ByVal lpKeyName As String, 
  ByVal lpDefault As String, 
  ByVal lpReturnedStr As String, 
  ByVal nSize As Integer, 
  ByVal lpFileName As String) As Integer 

Public Declare Function 
  SetPrivateProfileString Lib 
  "kernel32" Alias "WritePrivateProfileStringA" ( 
  ByVal lpApplicationName As String, 
  ByVal lpKeyName As String, 
  ByVal lpValue As String, 
  ByVal lpFileName As String) As Integer 
 
Die nachfolgend gezeigten benutzerdefinierten Funktionen GetIni und SetIni vereinfachen die Nutzung der beiden API-Funktionen. Der Routine GetIni zum Einlesen eines Wertes übergeben Sie den Dateinamen samt Suchpfad zur INI-Datei (zum Beispiel Anwendungspfad\Anwendungsname.ini) über den Parameter File, die Sektion mit dem auszulesenden Schlüssel über den Parameter Sektion, den Schlüsselnamen über den Parameter Key sowie über den sDefault einen Vorgabewert. Der Vorgabewert wird übernommen, sofern die INI-Datei keinen Wert für den angegebenen Schlüssel enthalten sollte.Innerhalb der Funktion wird zunächst die Existenz der INI-Datei geprüft. Existiert die Datei nicht, wird der Standardwert zurückgegeben. Das Ergebnis der API-Funktion wird als Zeichenkette zurückgeliefert. Das aufrufende Programm muss selbst dafür sorgen, dass Strings, die Zahlenwerte repräsentieren, passend umgewandelt werden.

Public Function GetIni(ByVal File as String, 
  ByVal Sektion As String, ByVal Key As String, 
  ByVal sDefault As String) 

  Dim ret As Integer 
  Dim Wert As String 
  Dim File As String 
  Wert = Space(255) 
  If System.IO.File.Exists(File) Then 
    ret = GetPrivateProfileString(Sektion, Key, 
      sDefault, Wert, Len(Wert), File) 
    Return Left(Wert, ret) 
  Else 
    Return sDefault 
  End If 
End Function 
Mithilfe von SetIni vereinfachen Sie die Nutzung der API-Funktion SetPrivateProfileString. Sie erwartet den Namen der Initialisierungsdatei samt Suchpfad, den Sektions- und Schlüsselnamen sowie einen zuzuordnenden Zeichenkettenwert. Bitte beachten Sie: Die Länge eines einzelnen Schlüsselwertes ist auf 255 Zeichen beschränkt. Unter Umständen müssen längere Zeichenketten also auf mehrere Schlüssel aufgeteilt werden.

Public Sub SetIni(
  ByVal File As String, 
  ByVal Sektion As String, 
  ByVal Key As String, 
  ByVal Value As String) 

  SetPrivateProfileString( 
    Sektion, Key, Value, File) 
End Function 
 
Tabelle 1 stellt weiterführende Informationen zu INI-Dateien und Klassen zusammen.

Tabelle 1: Infos und Klassen zu INI-Dateien

Anbieter Programmtyp Beschreibung URL
CodeProject Klasse .NET-Klasse für das Anlegen, Lesen und Bearbeiten von INI-Dateien. www.dotnetpro.de/SL1903Konfiguration1
CodeProject / aejw Klasse C#-Klasse zum Verarbeiten von INI-Dateien in .NET. www.dotnetpro.de/SL1903Konfiguration2
CodeProject / BLaZiNiX Klasse C#-Klasse zum Verarbeiten von INI-Dateien. www.dotnetpro.de/SL1903Konfiguration3
CodeProject / Ludvik Jerabek Klasse Klasse zum Schreiben und Lesen von Werten in INI-Dateien unter C#, VB.NET und VBScript. www.dotnetpro.de/SL1903Konfiguration4
Developer.com / Karl Moore Information Beispiele und Deklarationsanweisungen des WinAPI zur Verarbeitung von INI-Dateien in VB.NET. www.dotnetpro.de/SL1903Konfiguration5
Faulkner132 / IniFileIO Klasse .NET-Klasse zum Lesen und Schreiben von INI-Dateien. www.dotnetpro.de/SL1903Konfiguration6
Jeevan James / CodeBits Klassen Klassen zur Verwaltung von INI-Dateien und weiteren Hilfsklassen (Byte-Arrays, Kennwortgenerator, Hashwerte). www.dotnetpro.de/SL1903Konfiguration7
Jeevan James / IniFile Klasse Bibliothek für .NET zum Öffnen, Bearbeiten und Speichern von INI-Dateien. www.dotnetpro.de/SL1903Konfiguration8
Larry57 / ini.cs Klasse C#-Klasse zur Verarbeitung von INI-Dateien. www.dotnetpro.de/SL1903Konfiguration9
Lukazh / ini-parser- standard Klasse .NET-Bibliothek zur Verarbeitung von INI-Dateien. www.dotnetpro.de/SL1903Konfiguration10
MadMilkman.Ini Projekt /Komponente C#-Komponente zur Verwaltung von INI-Dateien, ab .NET 2.0, kompatibel zu Mono, mit C#, VB.NET und anderen .NET-Sprachen nutzbar. www.dotnetpro.de/SL1903Konfiguration11
Martinusso / Ini.NET Klasse Klasse zum Verwalten von INI-Dateien unter .NET. www.dotnetpro.de/SL1903Konfiguration12
Microsoft Klasse IniConfigurationProvider: Klasse für die Verwaltung von INI-Dateien in ASP.NET Core 2.1. www.dotnetpro.de/SL1903Konfiguration13
Microsoft Windows-API Infos zur API-Funktion GetPrivateProfileString, mit deren Hilfe Sie Text aus INI-Dateien auslesen. www.dotnetpro.de/SL1903Konfiguration14
Microsoft Windows-API Infos zur API-Funktion WritePrivateProfileStringA, mit deren Hilfe Sie Text in INI-Dateien schreiben. www.dotnetpro.de/SL1903Konfiguration15
Nini – .NET Configuration Library Komponente Komponente für Konfigurationseinstellungen in den Formaten INI, XML und Registry. http://nini.sourceforge.net/index.php
Nuget / Ricardo Amores Hernández Klasse/Projekt INI-Parser, der mit .NET, Mono und Unity3D kompatibel ist (Quelltext in C#). www.nuget.org/packages/ini-parser
Troygeiger / TG.INI Klasse Klasse zum Verwalten, Lesen und Schreiben von INI-Dateien. https://github.com/troygeiger/TG.INI

Die Registry in Windows

Die Registrierungsdatenbank wurde bereits in den 1990er Jahren eingeführt. In allen aktuellen Windows-Versionen ist sie der Hauptspeicherort für System- und Programmeinstellungen. Gegenüber einfachen INI-Dateien erlaubt die Re­gistry nicht nur größere Datenmengen, sondern bietet auch ­einen strukturierten Zugriff auf die Daten.Mithilfe des Registrierungseditors kann man die Daten anzeigen und ändern. Er zeigt auf der linken Seite die Datenstruktur und rechts die Werte zum angewählten Registrierknoten. Jeder Knoten kann einen Standardwert, der auch als Standard gekennzeichnet ist, und einen oder mehrere Schlüssel verwalten. Jedem Schlüssel weisen Sie einen Wert mit einem bestimmten Datentyp zu. Sie verwalten binäre Daten, Zeichenketten, Ganzzahlwerte (32 oder 64 Bit) sowie mehrzeilige und erweiterbare Zeichenfolgen.Das Lesen, Schreiben und Anlegen (Bild 2) von Registrierknoten und Schlüsseln erfolgt über den Registrierungseditor oder in Anwendungsprogrammen auf Quelltextebene.
Die Registrykennt sechs unterschiedliche Datentypen(Bild 2) © Autor
Aufgrund der Vielzahl an Daten und trotz strukturierter Verwaltung ist der Zugriff auf die Daten dennoch unübersichtlich. Häufig wird intern mit Klassenkennungen gearbeitet (per GUIDs), deren Bezug auf den ersten Blick nicht erkennbar ist. Außerdem werden Informationen zu Programmen und Komponenten (zum Beispiel COM-Steuerelementen) getrennt verwaltet.Hinzu kommt, dass sich auf Dauer fehlerhafte Inhalte ansammeln und die Verarbeitung aufgrund der wachsenden Datenmengen langsamer wird. Die Datenstruktur ist zudem in mehrere Hauptschlüssel gegliedert. Teilweise sind Informationen zu Programmen und Komponenten auf zwei oder mehr Hauptschlüssel verteilt. So finden Sie Anwendungseinstellungen im Hauptschlüssel HKEY_CLASSES_ROOT, Benutzereinstellungen für den aktuellen Benutzer im Hauptschlüssel HKEY_CURRENT_USER, Einstellungen, die für alle Benutzer gelten, im Hauptschlüssel HKEY_USERS, Geräteeinstellungen zum aktuellen Rechner im Hauptschlüssel HKEY_LOCAL_MACHINE und Einstellungen zur aktuellen Systemkonfiguration im Hauptschlüssel HKEY_CURRENT_CONFIG(Bild 3).
Hauptknotender Registry(Bild 3) © Autor
Anwendungseinstellungen werden in der Registry im Knoten HKEY_CURRENT_USER\Software verwaltet. Bleibt anzuführen, dass im Hierarchiezweig HKEY_USERS Einstellungen verwaltet werden, die nur für bestimmte Benutzer gelten. Darüber wird beispielsweise sichergestellt, dass Einstellungen zwischen den Benutzern variierbar sind, wie bei den auf dem Desktop angezeigten Symbolen. Jeder Benutzer wird über eine eindeutige Kennung verwaltet und der Standardbenutzer wird dabei unter .DEFAULT verwaltet. Untergeordnet unter jedem Benutzerhauptschlüssel finden Sie erneut den Eintrag Software mit entsprechenden Hersteller- und Programmknoten.Das Windows-API stellt die Basisfunktionen zum Zugriff auf die Registry bereit. Die Nutzung ist jedoch für C++ ausgelegt und eine Anpassung der Deklarationsanweisungen ist zu aufwendig, insbesondere weil .NET entsprechende Verarbeitungsfunktionen bietet. Ferner bietet auch Visual Basic .NET Sonderfunktionen für den Registrierungszugriff im Namespace Microsoft.VisualBasic (auch in C# nutzbar), der von VBA (Visual Basic for Applications) übernommen wurde, aber nur Daten im Zeichenkettenformat unterstützt. Der einzige Unterschied gegenüber den API-Registry-Funktionen ist ansonsten, dass Sie die Information nicht beliebig hierarchisch in die Registrierdatenbank einordnen können. Stattdessen werden die Daten immer unter dem Schlüssel HKEY_USERS\.Default\Software\VB and VBA Program Settings beziehungsweise HKEY_CURRENT_USER\Software\VB and VBA Program Settings eingetragen, und zwar geordnet nach Programmnamen und nicht nach Herstellern. Mit der Funktion GetSetting rufen Sie den Wert einer Programmeinstellung ab:

'Syntax 
Dim value as String = GetSetting ( 
  AppName, Section, KeyName, [[Default]="Wert"]) 

'Beispiel 
Dim value as String = GetSetting( 
  "RegistryTest", "User", "Benutzername", 
  [Default]="unbekannt") 
 
Mit GetAllSettings lesen Sie eine Liste mit Werten ein, die Sie in ein Zeichenkettendatenfeld übernehmen:

'Syntax (Ergebnis als 2-dimensionales Datenfeld) 
Dim values as String(,) = 
  GetAllSettings (AppName, Section) 

'Beispiel 
Dim values as String(,) = 
  GetAllSettings ("RegistryTest", "User") 
 
Mit DeleteSetting löschen Sie eine Sektion (Hauptschlüssel zu einer Anwendung) oder einen Schlüsselwert:

'Syntax 
DeleteSetting (AppName, Section) 
DeleteSetting (AppName, Section, Key) 

'Beispiel zum Löschen einer Sektion/eines Schlüssels 
DeleteSetting("RegistryTest", "User") 
DeleteSetting("RegistryTest", "User", "Benutzername") 
 
Das Sichern eines Einstellungswertes klappt mit der Methode SaveSetting:

'Syntax 
SaveSetting(AppName, Section, Key) 

'Beispiel 
SaveSetting("RegistryTest", "User", "Benutzername") 
Mit dem Registrierungseditor können Sie Änderungen in der Registrierdatenbank jederzeit überprüfen. Auch im Namespace My.Computer.Registry von Visual Basic .NET stehen Methoden für den Zugriff auf die Registry bereit, die auch in C# nutzbar sind, sofern Sie den entsprechenden Verweis herstellen. Die darüber bereitgestellten Methoden werden intern auf die Methoden der Klasse Microsoft.Win32.Registry um­geleitet und können alternativ dazu verwendet werden. Praktische Beispiele sowie alternative Tools, Bibliotheken und ­erweiterte Informationen zum Zugriff auf die Registry stellt Tabelle 2 zusammen.

Tabelle 2: Registry: Infos und Klassen

Anbieter Programmtyp Beschreibung Webadresse
CodeProject / Hoang Khanh Nguyen Bibliothek / Registrierungseditor .NET-Bibliothek für den Zugriff auf die Registry inklusive eigenständigem Registrierungseditor (mit Quelltexten). www.dotnetpro.de/SL1903Konfiguration16
hoaproject / Registry Information Beispiel zum Schreiben von Einstellungen in die Registry während der Programmeinrichtung am Beispiel des WiX Toolset. www.dotnetpro.de/SL1903Konfiguration17
Microsoft Information Mit der SaveSetting-Anweisung im Namespace Microsoft.VisualBasic sichern Sie einen einzelnen Wert in der Registry. www.dotnetpro.de/SL1903Konfiguration18
Microsoft Information Mit der GetSetting-Anweisung im Namespace Microsoft.VisualBasic lesen Sie einen einzelnen Wert aus. www.dotnetpro.de/SL1903Konfiguration19
Microsoft Information Alle Infos zum Zugriff auf die .NET-Klasse Microsoft.Win32.Registry www.dotnetpro.de/SL1903Konfiguration20
Microsoft Information Hinweise und Links zum Zugriff auf die Registry über das Objekt My.Computer.Registry unter Visual Basic .NET. www.dotnetpro.de/SL1903Konfiguration21
Microsoft Information Infos zu Funktionen, die das Windows-API für den Zugriff auf die Registry bereitstellt. www.dotnetpro.de/SL1903Konfiguration22
Microsoft Information Praktische Hinweise und Beispiele zur Nutzung des Objekts My.Computer.Registry. www.dotnetpro.de/SL1903Konfiguration23
Nini – .NET Configuration Library Komponente Leistungsfähige Komponente für Konfigurationseinstellungen in den Formaten INI, XML und Registry. http://nini.sourceforge.net/index.php
WiX Toolset Programmeinrichtung Tools für die Anlage von Setups für die Programmeinrichtung unter Windows. http://wixtoolset.org

Konfigurationsverwaltung im XML-Format

XML, die Extensible Markup Language, ist eine erweiterbare Auszeichnungssprache, die für den Austausch strukturierter Daten genutzt wird. Das eingangs zu INI-Dateien angeführte Beispiel kann auch mit XML umgesetzt werden. Hier werden Inhalte erneut Schlüsseln zugeordnet, wobei immer ein Eingangs- und Abschluss-Tag verwendet wird.Die Schlüssel werden in XML als Elemente bezeichnet. Das Format ist plattformübergreifend und sprachunabhängig einsetzbar. XML ist zwar ein reines Textformat, optional können Sie aber die in der Struktur abzulegenden Werte auch verschlüsseln.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Configuration> 
  <Menues> 
    <ShowFileMenue>True</ShowFileMenue> 
    <ShowEditMenue>True</ShowEditMenue> 
    <ShowExtrasMenue>False</ShowExtrasMenue> 
    <ShowHelpMenue>True</ShowHelpMenue> 
  </Menues> 
  <Colors> 
    <BackgroundColor>Gray</BackgroundColor> 
    <ForegroundColor>Black</ForegroundColor> 
  </Colors> 
  <Settings> 
    <MaxLoginTries>1</MaxLoginTries> 
    <LastUser>Andreas</LastUser> 
  </Settings> 
  <Users> 
    <User1>Andreas</User1> 
    <User2>Pia</User2> 
    <User3>Dominik</User3> 
    <User4>Natascha</User4> 
  </Users> 
</Configuration> 
 
In .NET steht das XML-Format für die Serialisierung von Objekten zur Verfügung. Dazu definieren Sie ein Objekt, sichern es per Serialisierung und stellen es bei Bedarf per Deserialisierung wieder her. Das XML-Speicherformat wird über die Klasse XmlSeralizer realisiert, welche die Methoden Serialize und Deserialize bietet.Verglichen mit einfachen INI-Dateien sind die Inhalte von XML-Dateien, insbesondere bei komplexen Datenstrukturen, für Menschen schlechter lesbar. Dafür sind die Daten per Serialisierung einfach zu schreiben und zu lesen, wobei allerdings die Objektdefinition für die zu verwaltenden Daten gesondert zu behandeln ist.Ein weiterer Nachteil ist, dass das Format aufgrund der Elementnamen und deren Tags viel Speicherplatz belegt, zumindest dann, wenn Sie aussagekräftige Bezeichner verwenden. Nutzen Sie keinen XML-Editor zur Dateneingabe, ergibt sich aufgrund von Schreibfehlern eine hohe Fehleranfälligkeit. Wollen Sie das XML-Format nicht nur im Rahmen der Serialisierung nutzen, so verwenden Sie die Klassen System.Xml, System.Xml.XPath, System.Xml.Xsl, System.Xml.Schema und System.Xml.Linq. Weiterführende Informationen zu XML, zur XML-Verarbeitung sowie zu Projekten, Beispielen, Serialisierungsbibliotheken und Komponenten finden Sie in Tabelle 3.

Tabelle 3: Infos und Klassen zu XML-Dateien

Anbieter Programmtyp Beschreibung Webadresse
ClosedXML Projekt / Komponente .NET-Bibliothek zum Lesen, Bearbeiten, und Schreiben von Excel-Dateien in den Formaten XSLX und xlsm inklusive Schnittstelle für das OpenXML-Format. https://github.com/ClosedXML/ClosedXML
CodeProject / gokselm Projekt C#-Beispiele zur XML- und SOAP-Serialisierung in .NET. www.dotnetpro.de/SL1903Konfiguration24
Sina Iravanian (YAXLib) Projekt / Komponente XML-Serialisierungsbibliothek für .NET. https://github.com/sinairv/YAXLib
Doublecloud.org / Steve Jin Programmbeispiel Kompaktes C#-Beispiel zum Parsen von XML. www.dotnetpro.de/SL1903Konfiguration25
KirillOsenkov / XmlParser Projekt XML-Parser, der ohne Abhängigkeiten auskommt, sowie ein einfacher XML-Sprachdienst für Visual Studio. www.dotnetpro.de/SL1903Konfiguration26
Maxtoroq / dotnet-xml Information Liste mit XML-Bibliotheken, Frameworks, Parsern und Tools für .NET. https://github.com/maxtoroq/dotnet-xml
Microsoft Information XML-Dokumente und XML-Daten mithilfe der Klassen System.Xml, System.Xml.XPath, System.Xml.Xsl, System.Xml.Schema und System.Xml.Linq verarbeiten. www.dotnetpro.de/SL1903Konfiguration27
Microsoft Information Einführung in die XML-Serialisierung. www.dotnetpro.de/SL1903Konfiguration28
Microsoft Information Parsen von XML in C#. www.dotnetpro.de/SL1903Konfiguration29
Microsoft Information Analysieren von XML in Visual Basic .NET. www.dotnetpro.de/SL1903Konfiguration30
Microsoft Information Allgemeine Informationen zur XML- und SOAP-Serialisierung. www.dotnetpro.de/SL1903Konfiguration31
Mvp.xml Projekt / Klassen XML-Erweiterungen zu EXSLT, XML Base, XInclude, XPointer sowie Hilfsklassen und Tools für den XML-Einsatz unter .NET. https://archive.codeplex.com/?p=mvpxml
Netbike /  netbike.xml Projekt / Komponente XML-Serialisierungsbibliothek für .NET. https://github.com/netbike/netbike.xml
Nini – .NET Configuration Library Komponente Komponente für Konfigurationseinstellungen in den Formaten INI, XML und Registry. http://nini.sourceforge.net/index.php
OfficeDev / Open-XML-SDK SDK SDK für OpenXML. www.dotnetpro.de/SL1903Konfiguration32
RapidXml Programm XML-Hochleistungsparser (C++). http://rapidxml.sourceforge.net
Shehan Peruma Programmbeispiel Einfacher XML-Parser in C#. www.dotnetpro.de/SL1903Konfiguration33
System.Xml Namespace Information Infos über den Namensraum System.Xml. www.dotnetpro.de/SL1903Konfiguration34
XmlDocument Information Infos zur XML-Dokumentenklasse. www.dotnetpro.de/SL1903Konfiguration35

Das JSON-Format

Die JavaScript Object Notification (JSON) ist ebenfalls ein strukturiertes Textformat, das sich gut zum Verwalten von Konfigurationseinstellungen nutzen lässt. Es ist leicht lesbar, kann per Editor bearbeitet werden und taugt zum Austausch von Daten zwischen Anwendungsprogrammen und Systemplattformen. Zum Schreiben und Einlesen von JSON-Dateien stellt .NET in der Klasse System.Runtime.Serialization.Json geeignete Methoden bereit. Prinzipiell ist ein JSON-Dokument auch ein gültiges JavaScript-Dokument. Die Daten können beliebig verschachtelt sein und diverse Datentypen enthalten (Nullwerte, Wahrheitswerte, Zahlen, Zeichenketten, Datenfelder, Objekte).

{ 
  "Books": [ 
    { 
      "Kennung": "056844", 
      "Autor": "Pan, Peter", 
      "Titel": "Mein Leben mit .NET", 
      "Genre": "EDV", 
      "Preis": 19.99, 
      "Beschreibung": "Einführung in .NET" 
    } 
    ... 
  ] 
} 
 
Das Format ist kompakt uund einfach zu schreiben sowie zu lesen. Die Inhalte von eckigen Klammern verwalten Datenfelder, geschweifte Klammern definieren Datensätze, und zwei durch einen Doppelpunkt getrennte Werte definieren einen Schlüssel nebst zugehörigem Wert. Alle Schlüsselnamen sind, ebenso wie Zeichenkettenwerte, in Anführungszeichen einzufassen. Damit ist das Format effektiver als XML. Mit JSON.NET steht eine komplexe Open-Source-Bibliothek bereit, über die Sie JSON-Dateien verarbeiten. Alternative Tools, weiterführende Informationen, Parser, Serialisierer und Lösungen zum Verarbeiten von Dateien im JSON-Format unter .NET finden Sie in Tabelle 4.

Tabelle 4: JSON-Dateien

Anbieter Programmtyp Beschreibung Webadresse
C# Corner /  Manas Mohpatra Information JSON.NET mit C#. www.dotnetpro.de/SL1903Konfiguration36
CodeProject / fastJSON Projekt Kompakter und schneller JSON-Serialisierer mit Unterstützung für Silverlight4, MonoDroid und .NET Core. www.dotnetpro.de/SL1903Konfiguration37
Dday9 / .NET-JSON-Transformer Projekt In Visual Basic .NET implementierte Lösung zum Überführen von JSON-Zeichenketten in ein verwaltetes XDocument. www.dotnetpro.de/SL1903Konfiguration38
Fluent-json Projekt JSON-Parser und -Generator für Dateien im JSON-Format, der in C# geschrieben ist und Multi-Threading unterstützt. www.dotnetpro.de/SL1903Konfiguration39
Gregsdennis / Manatee.Json Projekt .NET-Lösung zur Manipulation, Überprüfung und Serialisierung von Objektdaten im JSON-Format (auch für .NET 1.3, 2.0 und 4.0). www.dotnetpro.de/SL1903Konfiguration40
Introducing JSON Information Grundlegende Infos zum JSON-Format. http://json.org
Jayrock Klassen / Webdienste Open-Source-Implementierung einschließlich der Un- terstützung von Remote Procedure Calls (JSON-RPC). www.dotnetpro.de/SL1903Konfiguration41
JSON Checker Tool C#-Tool zur Syntaxprüfung von JSON-Dateien. www.dotnetpro.de/SL1903Konfiguration42
JSON for .NET Projekt Einfache Bibliothek zum Verarbeiten und Anlegen von JSON-Dateien. https://sourceforge.net/projects/csjson/
Json.NET (NewtonSoft) Framework Hochperformantes JSON-Framework für .NET (Serialisierung, XML-Unterstützung, Open Source). www.newtonsoft.com/json
JsonSharp Klasse Bibliothek zur Anlage von JSON-Dateien. www.dotnetpro.de/SL1903Konfiguration43
LitJSON / litjson Projekt In C# geschriebene JSON-Bibliothek für .NET. https://litjson.net
Microsoft Information Infos zur JSON-Serialisierung in .NET. www.dotnetpro.de/SL1903Konfiguration44
Microsoft Namensraum Infos Namensraum System.Runtime.Serialization.Json. www.dotnetpro.de/SL1903Konfiguration45
Steffen-liersch / Liersch.Json Projekt C#- Klassen zur Bereitstellung von JSON unter .NET. www.dotnetpro.de/SL1903Konfiguration46
WYAM Projekt Leistungsfähiges Toolkit für .NET mit Parsern für YAML und JSON (Open Source). https://wyam.io
Ysharplanguage / FastJsonParser Projekt Einfacher und schneller JSON-Parser und Serialisierer für .NET. www.dotnetpro.de/SL1903Konfiguration47

SOAP-Format

Das Simple Object Access Protocol (SOAP) ist ein XML-basiertes Format, das im Netzwerk und im Internet zum Datenaustausch verwendet wird. Es ist im Rahmen der Serialisierung unter Verwendung der .NET-Klasse SoapFormatter nutzbar. Auch hier definieren Sie zunächst ein Datenobjekt. Nach der Wertzuweisung sichern Sie die Daten per Serialisierung und stellen diese dann per Deserialisierung jederzeit wieder her. SOAP ist zwar nicht als Format für Konfigura­tionsdaten optimiert, lässt sich aber dennoch zur Serialisierung nutzen. In SOAP-Dateien legen Sie beispielsweise auch Bilddaten im Textformat ab, die Sie jederzeit wieder einlesen und anzeigen lassen können. Gegenüber XML ist das SOAP-Format speicherintensiver und je nach Datenbestand auch schwieriger zu lesen. Leistungsfähige Komponenten, um SOAP-Dateien detailliert anzulegen, sind rar. Beispielprogramme und weiterführende Infos zum Format sowie zur SOAP-Serialisierung liefert Tabelle 5.

Tabelle 5: Infos und Klassen zum SOAP-Format

Anbieter Programmtyp Beschreibung Webadresse
CenterSpace Beispiel Beispiel zur SOAP-Serialisierung unter C#. www.dotnetpro.de/SL1903Konfiguration48
CodeProject / Alex Sivokho Projekt Beispiel zur SOAP-Serialisierung. www.dotnetpro.de/SL1903Konfiguration49
CodeProject / gokselm Beispiel C#-Beispiele zur XML- und SOAP-Serialisierung in .NET. www.dotnetpro.de/SL1903Konfiguration50
Gravity00 / SimnpleSOAPClient Projekt Kompakter SOAP-Client für den Aufruf von HTTP-SOAP-Endpunkten. www.dotnetpro.de/SL1903Konfiguration51
John Nelson’s Blog Beispiel SOAP-Serialisierung mit C# und .NET. www.dotnetpro.de/SL1903Konfiguration52
Microsoft Information Allgemeine Infos zur XML- und SOAP-Serialisierung. www.dotnetpro.de/SL1903Konfiguration53
Microsoft Information Infos zur .NET-Klasse SoapFormatter. www.dotnetpro.de/SL1903Konfiguration54
Microsoft Information Serialisieren eines Objekts als SOAP-codierter XML-Stream. www.dotnetpro.de/SL1903Konfiguration55
Microsoft Information Webkomponenten mit SOAP und ASP.NET. www.dotnetpro.de/SL1903Konfiguration56
SalesForce Beispiel Einfaches SOAP-Beispiel in C# im Salesforce-Verbund. www.dotnetpro.de/SL1903Konfiguration57

Konfigurationsverwaltung im TOML-Format

Tom’s Obvious, Minimal Language (TOML) ist ein Textformat, das sich am Aufbau herkömmlicher INI-Dateien orientiert, aber das strukturiertere Verwalten von Konfigurationsdaten erlaubt. Es wurde von Tom Preston-Werner entwickelt.Gegenüber herkömmlichen INI-Dateien hat TOML den Vorteil, dass Sie darüber auch mehrzeilige Zeichenketten sowie unterschiedliche Datentypen verwalten (String, Integer, Float, Boolean, Datetime, Array und Table). TOML verwaltet Schlüssel-Wert-Paare, wobei zwischen Groß- und Kleinbuchstaben unterschieden wird.Jede TOML-Datei muss ein UTF8-codiertes Unicode-Dokument sein. Es werden Standardzeichen für Leerzeichen (Chr(20)), Tabulatoren (Chr(9)) und Zeilenumbrüche genutzt. Nebenstehend sehen Sie ein Beispiel eines gültigen TOML-Dokuments:
# Dies ist ein TOML Dokument. 

Title = "Configuration" 

[Menues] 
ShowFileMenue = True 
ShowEditMenue = True 
ShowExtrasMenue = False 
ShowHelpMenue = True 

[Colors] 
BackgroundColor = Gray 
ForegroundColor = Black 

[Settings] 
MaxLoginTries = 1 
LastUser = "Andreas" 
OpenDialog = true 

[Users] 
  [Users.User1] 
    Name = "Andreas" 
  [Users.User2] 
    Name = "Pia" 
  [Users.User3] 
    Name = "Dominik" 
  [Users.User4] 
    Name = "Natascha" 
 
Weiterführende Hinweise und Detailinformation zum TOML-Format sowie zu Beispielprojekten und Parsern entnehmen Sie der Aufstellung in Tabelle 6.

Tabelle 6: Infos und Klassen zum TOML-Format

Anbieter Programmtyp Beschreibung Webadresse
Azyobuzin / HyperTomlProcessor Projekt TOML-Parser für .NET. www.dotnetpro.de/SL1903Konfiguration58
Lbreedlove / Toml.net Projekt In C# programmierter TOML-Parser für .NET. https://github.com/LBreedlove/Toml.net
Nuget / iamcarbon Projekt Einfacher TOML-Parser für .NET Core. www.nuget.org/packages/Carbon.Toml
Paiden / Nett Projekt .NET-Bibliothek für das TOML-Format. https://github.com/paiden/Nett
Rossipedia / toml-net Projekt Grundlegender C#-Parser zur Verarbeitung von TOML-Markup-Sprachen. https://github.com/rossipedia/toml-net
TOML Information Definition von Sprache und Syntax. https://github.com/toml-lang/toml
Toml-lang / toml Projekt TOML-Wiki mit Infos zu Projekten, die TOML einsetzen, und einer Liste von Parsern. www.dotnetpro.de/SL1903Konfiguration59
Eine direkte Unterstützung für TOML-Dateien gibt es in .NET derzeit nicht. Allerdings können Sie die Textdateien immer direkt einlesen, speichern (zum Beispiel per StreamReader, StreamWriter) und programmintern mit Zeichenkettenmethoden verarbeiten.Weniger steinig ist allerdings der Weg über bereits implementierte Parser, die für unterschiedliche Sprachen verfügbar sind, auch für .NET und .NET Core. TOML ist einfach lesbar und bietet erhebliche Vorteile gegenüber einfachen INI-Dateien. Lediglich die Auswahl an leistungsfähigen Parsern ist derzeit noch sehr eingeschränkt.

Konfigurationsverwaltung im YAML-Format

Mit dem YAML-Format verwalten Sie Datenstrukturen über assoziative Listen, Datenfelder und Einzelwerte. Für die Verwaltung von Konfigurationseinstellungen ist das Format nur eingeschränkt geeignet. Die Datenverwaltung erfolgt angelehnt an XML, Perl, Python und C. Zwar lässt sich das Format einfach lesen und schreiben, für die komplexe Einstellungsverwaltung ist es jedoch nicht geeignet. In YAML-Dateien werden Kommentare mit Doppelkreuz (#) eingeleitet. Abschnitte führen Sie mit drei Bindestrichen (---) ein:
# Configuration 
--- 
  # Menues 
  - {ShowFileMenue: True} 
  - {ShowEditMenue: True} 
  - {ShowExtrasMenue: False} 
  - {ShowHelpMenue: True} 
    # Colors 
  BackgroundColor = Gray 
  ForegroundColor = Black 
 
In YAML-Dateien abzulegende Werte definieren Sie als Block in einer der beiden folgenden Formen:

# Person 
Vorname: Peter 
Nachname: Pan 
# Person inline 
{Vorname: Peter, Nachname: Pan} 
 
Eine direkte Unterstützung für das YAML-Format gibt es im .NET Framework nicht, allerdings sind einige Bibliotheken für .NET verfügbar. Diese und weiterführende Informationen enthält Tabelle 7.

Tabelle 7: Infos und Klassen zu YAML-Dateien

Anbieter Programmtyp Beschreibung Webadresse
Aubry / YamlDotNet Bibliothek Bibliothek zum Zugriff auf YAML-Dateien. www.dotnetpro.de/SL1903Konfiguration60
CodeProject / Liu Junfeng Projekt YAML-Parser in C# www.dotnetpro.de/SL1903Konfiguration61
WYAM Projekt Leistungsfähiges Toolkit für .NET mit Parsern für YAML und JSON (Open Source). https://wyam.io
Xoofx / SharpYaml Bibliothek .NET-Bibliothek zum Zugriff auf YAML-Dateien, die kompatibel mit .NET Core ist. https://github.com/aaubry/YamlDotNet
YAML Library for .NET Bibliothek Funktionsbibliothek zum Zugriff auf Dateien im YAML-Format. http://yaml-net-parser.sourceforge.net
Yaml.org Information Links mit Infos zu YAML-Ressourcen und zugeordneten Projekten. https://yaml.org
YamlSerializer Bibliothek YAML-Serializer für .NET. www.dotnetpro.de/SL1903Konfiguration62

Konfigurationsverwaltung im CSON-Format

Für das CSON-Format gibt es zwei Spezifikationen, die CoffeeScript Object Notation und die Cursive Script Object Notation. An dieser Stelle soll die erste Variante berücksichtigt werden, bei der es sich um eine Beschreibung für Objekte in der Skriptsprache CoffeeScript handelt.CoffeeScript ist eine Sprache, die per Compiler verarbeitet wird und dadurch JavaScript-Quelltext generiert. Ziel von CoffeeScript ist es, mit einer optimierten kompakteren Syntax Quellcode in JavaScript zu generieren. Das Format CSON hat gegenüber JSON den Vorteil, dass es ohne geschweifte Klammern auskommt.

Books: [ 
  Kennung: '056844' 
  Autor: 'Pan, Peter' 
  Titel: 'Mein Leben mit .NET' 
  Genre: 'EDV' 
  Preis: 19.99, 
  Beschreibung: 'Einführung in .NET' 
] 
 
Hierarchien werden durch Einrückungen nachgebildet. CSON ist dementsprechend ein sehr einfach zu verarbeitendes und gegenüber JSON ein speicherplatzsparendes Format. Ansonsten verwalten Sie mehrzeilige Zeichenketten, nutzen per Doppelkreuz (#) eingeleitete Kommentare, und Schlüssel-Wert-Paare sind nicht durch Kommata zu trennen. Die Verarbeitung erfolgt mit CoffeeScript.Eine CoffeeScript-Implementierung für .NET ist ebenso ­erhältlich wie Parser zum Verarbeiten der CSON-Dateien. In Tabelle 8 finden Sie weiterführende Informationen zu CoffeeScript, zum .NET-CoffeeScript-Compiler sowie detaillierte Infos zum Dateiformat und zur Verwendung von CoffeeScript in .NET.

Tabelle 8: Infos und Klassen zu CSON-Dateien

Anbieter Programmtyp Beschreibung Webadresse
CoffeeScript Information Allgemeine Infos zu CoffeeScript. https://coffeescript.org
Creamdog / JurassicCoffee Projekt CoffeeScript-Compiler-Implementierung für .NET www.dotnetpro.de/SL1903Konfiguration63
Groupon / cson-parser Projekt Einfacher und sicherer CSON-Parser. https://github.com/groupon/cson-parser
Lifthrasiir / cson Information Detaillierte Infos zur Cursive Script Object Notation. https://github.com/lifthrasiir/cson
Yobriefca.se Information Verwendung von CoffeeScript in .NET. www.dotnetpro.de/SL1903Konfiguration64

Weitere Dateiformate

Wenn Sie Konfigurationseinstellungen über Klassen und Objekte zusammenfassen, speichern Sie diese vereinfacht über die von .NET bereitgestellten Serialisierungsfunktionen. Ein erneutes Laden der Werte ist mit den Deserialisierungsfunktionen von .NET möglich. Dabei werden die Formate binär, JSON, SOAP und XML von .NET unterstützt. Dazu definieren Sie zunächst eine Klasse mit den Eigenschaften für die zu sichernden Einstellungen. Das Speichern erfolgt durch Methoden zur Serialisierung und das Laden durch gesonderte Methoden zur Deserialisierung. Beispiele dazu finden Sie unter [1 bis 4].Neben den beschriebenen Dateitypen für Konfigurationsdateien können Sie jederzeit auch eigene Formate definieren. Sie nutzen dazu wahlweise angebundene Datenbanken, sequenzielle, binäre oder Direktzugriffsdateien oder speichern und laden Einstellungen über zuvor definierte Klassen oder Datenstrukturen. Dazu nutzen Sie die von .NET bereitgestellten Anweisungen – zum Beispiel in den Klassen System.IO, FileSystem, StreamReader und StreamWriter. Weitere Infos dazu listet Tabelle 9.

Tabelle 9: Eigene Dateiformate aufbauen

Anbieter Programmtyp Beschreibung Webadresse
Microsoft Information Unter .NET mit Laufwerken, Verzeichnissen und Dateien arbeiten. www.dotnetpro.de/SL1903Konfiguration65
Microsoft Information Verwalten von Anwendungseinstellungen in .NET. www.dotnetpro.de/SL1903Konfiguration66
Microsoft Information Serialisieren von Objekten in .NET. www.dotnetpro.de/SL1903Konfiguration67
Microsoft Information Objektserialisierung in Visual Basic.NET. www.dotnetpro.de/SL1903Konfiguration68
Rheinwerk-verlag.de Information Datei und Datenformate, Textdateien und Zeichensätze, binäre Dateiformate. www.dotnetpro.de/SL1903Konfiguration69
Wikibooks.org Information Arbeiten mit Textdateien. www.dotnetpro.de/SL1903Konfiguration70
Der Vorteil ist, dass Sie dabei ein auf Ihre Anforderungen abgestimmtes Format wählen können. Allerdings müssen Sie die Parser selbst implementieren. Zum Austausch mit anderen Anwendungen eignen sich die Daten dann jedoch nicht. Eine Liste mit bereits vorhandenen anwendungsspezifischen Konfigurationsdateien von ACF-Dateien für Adobe Photoshop-Filter bis zu XLW-Dateien für Excel finden Sie auf der Webseite unter [5].Ob Sie einfache INI-Dateien, die Registry oder komplexere XML-, JSON-, XAML-, YAML- oder auch TOML-Dateien nutzen, hängt von der jeweiligen Aufgabenstellung ab. Ein ausführliches Beispiel zur Verwaltung von Konfigurationseinstellungen über benannte und anonyme Typen unter Visual Basic .NET können Sie in der kommenden Ausgabe der dotnetpro in der Rubrik Basic Instinct kennenlernen.

Fussnoten

  1. Andreas Maslo, Objektdaten laden und speichern, Teil 6, Flexibel serialisieren, dotnetpro 12/2018, Seite 130 ff., http://www.dotnetpro.de/A1812BasicInstinct
  2. Andreas Maslo, Objektdaten laden und speichern, Teil 7, Vier Varianten einbinden, dotnetpro 1/2019, Seite 132 ff., http://www.dotnetpro.de/A1901BasicInstinct
  3. Andreas Maslo, Objektdaten laden und speichern, Teil 8, Serialisierung und Datenexport, dotnetpro 2/2019, Seite 136 ff., http://www.dotnetpro.de/A1902/BasicInstinct
  4. Andreas Maslo, Objektdaten laden und speichern, Teil 9, Export und Import, dotnetpro 3/2019, Seite 136 ff., http://www.dotnetpro.de/A1903/BasicInstinct
  5. Dateitypen proprietärer Konfigurationsdateien, http://www.dateiendung.com/type/config

Neueste Beiträge

DWX hakt nach: Wie stellt man Daten besonders lesbar dar?
Dass das Design von Websites maßgeblich für die Lesbarkeit der Inhalte verantwortlich ist, ist klar. Das gleiche gilt aber auch für die Aufbereitung von Daten für Berichte. Worauf besonders zu achten ist, erklären Dr. Ina Humpert und Dr. Julia Norget.
3 Minuten
27. Jun 2025
DWX hakt nach: Wie gestaltet man intuitive User Experiences?
DWX hakt nach: Wie gestaltet man intuitive User Experiences? Intuitive Bedienbarkeit klingt gut – doch wie gelingt sie in der Praxis? UX-Expertin Vicky Pirker verrät auf der Developer Week, worauf es wirklich ankommt. Hier gibt sie vorab einen Einblick in ihre Session.
4 Minuten
27. Jun 2025
„Sieh die KI als Juniorentwickler“
CTO Christian Weyer fühlt sich jung wie schon lange nicht mehr. Woran das liegt und warum er keine Angst um seinen Job hat, erzählt er im dotnetpro-Interview.
15 Minuten
27. Jun 2025
Miscellaneous

Das könnte Dich auch interessieren

UIs für Linux - Bedienoberflächen entwickeln mithilfe von C#, .NET und Avalonia
Es gibt viele UI-Frameworks für .NET, doch nur sehr wenige davon unterstützen Linux. Avalonia schafft als etabliertes Open-Source-Projekt Abhilfe.
16 Minuten
16. Jun 2025
Mythos Motivation - Teamentwicklung
Entwickler bringen Arbeitsfreude und Engagement meist schon von Haus aus mit. Diesen inneren Antrieb zu erhalten sollte für Führungskräfte im Fokus stehen.
13 Minuten
19. Jan 2017
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige