Individualschulungen
Entwicklung
Aktuelle Themen
.NET
JavaScript / TypeScript
Java
Programmiersprachen
Entwicklungswerkzeuge
Benutzeroberflächen / User Experience
Softwareengineering
KI in der Softwareentwicklung
Plattformen & Systeme
KI
Web & Cloud
Apps / Mobilplattformen
Datenbanken / Reporting / BI
Betriebssysteme & Virtualisierung
Microsoft Server-Produkte
Scripting
Windows & Office für Anwender
Soft Skills & IT-Recht
Das bieten nur wir
Umfangreicher Themenkatalog
Wählen Sie aus 1055 Themen
Weiterbildungsphilosophie
Individuelle Anpassung an Ihre Anforderungen
Didaktische Konzepte
Ganz nach Ihren Wünschen
Vorteile individueller Firmenseminare
Im Vergleich zu offenen Seminaren
Vor Ort oder online
Alles ist in Ihrem Hause oder online möglich
Top-Trainer
Die besten und renommiertesten Experten
Teilnehmerfeedback
Das sagen 9311 von insgesamt über 75000 Teilnehmern
Referenzkunden
Viele namhafte mittlere und große Referenzkunden
1055 Themen, die frei anpassbar und kombinierbar sind
Gesamter Themenkatalog →
Offene Schulungen
Online-Trainings
.NET-Akademie
.NET/C#-Basisseminar
WPF
WinUI
.NET MAUI, Uno & Avalonia
Blazor
ASP.NET Core WebAPI
Entity Framework Core
Unit Testing / TDD
PowerShell
Alle Seminartermine
INFOTAGE
INFOTAG ".NET 12.0"
am 22.06.2027
INFOTAG "KI" 2027
am 15.09.2027
Das bieten nur wir
Renommierte Top-Trainer
Die besten und bekanntesten Experten schulen Sie!
Teilnehmerfeedback
Das sagen 9311 von insgesamt über 75000 Teilnehmern
Referenzkunden
Viele namhafte mittlere und große Referenzkunden
Nicht das passende Thema dabei? Stellen Sie Ihre individuelle Firmenschulung aus 1055 Modulen zusammen!
Individualschulungen →
Beratung, Support & Entwicklung
Alle unsere Leistungen
Beratung
Beratung zu vielen technischen und methodischen Themen
Coaching
Projektbegleitende Unterstützung
Softwareentwicklung
Wir entwickeln einzelne Module oder ganze Anwendungen für Sie
Technischer Support
Support für einzelne technische Fragen
Individualschulungen
1055 Themen, die frei anpassbar und kombinierbar sind
Offene Seminare
Ausgewählte Themen bieten wir auch als öffentliche Online-Schulungen an.
Beratungsthemen
Anwendungsarchitektur
Datenbankzugriff/Data Access
DevOps
Frontend, GUI, UX
IT-Infrastruktur
Leistung/Performance
Machbarkeit und Prototyping
Methodik, Prozesse, Teamarbeit
Migration und Versionsumstieg
Mobilanwendungen
Reviews und Qualitätssicherung
Sicherheit/Security
Verteilte Systeme und Services
Webtechniken
Werkzeugauswahl
Weitere Themen
Auch alle Schulungsthemen sind als Beratung möglich!
Das bieten nur wir
Renommierte Top-Berater
Durch Vorträge und Veröffentlichungen sehr bekannte Experten
Referenzkunden
Viele namhafte mittlere und große Referenzkunden
Referenzprojekte
Zahlreiche Referenzprojekte
Beratung vor Ort oder remote – flexibel nach Bedarf.
Zu den Beratungsthemen →
Wissen
Publikationen & Vorträge
Fachbücher
Fachartikel
Konferenzvorträge
Weblog
Spickzettel/Cheat Sheets
Lexikon/Glossar
Programmcodebibliothek
Fallbeispiele
Newsletter
Downloads
Themenportale
Übersicht
.NET/C#/Visual Studio
.NET 11.0
.NET 10.0
.NET 9.0
.NET 8.0
ASP.NET (Core)/Blazor
PowerShell
Versionshistorie
Konferenzen/Events
Community-/Leserportal
Suche
Themenkatalog
Tag Cloud
Volltextsuche
Site Map
FAQs
Schulungen, Beratung, Support, Coaching, Softwareentwicklung
Unsere kommerziellen Leistungen →
Über uns
Unternehmen
Zahlen
Selbstdarstellung
Kernkompetenzen
Dr. Holger Schwichtenberg
Unsere Top-Experten
Leitung & Kundenteam
Partner
Weitere Websites
Referenzen
Referenzkunden
Kundenaussagen
Referenzprojekte
Kontakt & Rechtliches
Kontakt
Impressum
Datenschutzerklärung, Haftung, Urheberrecht, Barrierefreiheit
Impressum, Datenschutz und Barrierefreiheit unter Kontakt & Rechtliches.
Rechtliches →
Erklärung des Begriffs: YAML Ain't Markup Language (YAML)
Begriff
YAML Ain't Markup Language
Abkürzung
YAML
Eintrag zuletzt aktualisiert am
12.06.2019
Zur Stichwortliste unseres Lexikons
Was ist
YAML Ain't Markup Language
?
YAML ist ein textbasiertes
Datenformat
in Form einer Auszeichnungssprache. Eine Auszeichnungssprache (englisch Markup Language) ist laut [
de.wikipedia.org/wiki/Auszeichnungssprache
] eine maschinenlesbare Sprache für die Gliederung und Formatierung von Texten und anderen Daten. Bekanntere Auszeichnungssprachen sind HTML,
XML
und
JSON
. YAML zeichnet sich gegenüber HTML,
XML
und
JSON
dadurch aus, dass es kompakter und übersichtlicher ist; daher ist es nicht nur für Maschinen, sondern auch für Menschen gut lesbar.
Einsatzgebiete von YAML
YAML wird inzwischen an einigen Stellen als Konfigurationsformat eingesetzt, z.B. in
Docker
,
Kubernetes
und seit 2019 auch in
Azure DevOps
-
Pipeline
s zur Definition von Continuous Integration- und Continuous Delivery-
Prozesse
n. Grundsätzlich kann YAML aber nicht nur für
Konfigurationsdatei
en, sondern als beliebiges
Datenformat
eingesetzt werden, auch als Ersatz für
XML
und
JSON
.
Es gibt zahlreiche
Softwarekomponente
n zur Serialisierung von
Objekt
modellen in YAML bzw. der
Deserialisierung
von YAML in
Objekt
modellen in zahlreichen
Programmiersprache
n und Frameworks, z.B. C, C++,
Ruby
,
Python
, Java,
Perl
, .NET,
PHP
,
Dart
,
JavaScript
(siehe [
yaml.org/
]).
Name YAML
Die Abkürzung YAML stand ursprünglich für "Yet Another Markup Language". Mittlerweile verwendet man YAML als rekursive Abkürzung für "YAML Ain’t Markup Language".
Versionen
Die erste Version der YAML-Spezifikation von Oren Ben-Kiki, Clark Evans und Brian Ingerson stammt bereits vom 29.2.2004 [
yaml.org/spec/1.0/
]
Version 1.1: 18.1.2005 [
yaml.org/spec/1.1/
]
Version 1.2: 10.1.2009 [
yaml.org/spec/1.2/spec.html
]
Website
https://yaml.org
YAML-Parser für .NET
https://github.com/aaubry/YamlDotNet
Microsoft selbst liefert in
.NET Framework
und
.NET Core
noch keine YAML-Bibliothek mit. Diese Lücke füllt das GitHub-Projekt YamlDotNet [
github.com/aaubry/YamlDotNet
]. Die kompilierte Bibliothek gibt es auf NuGet [
www.nuget.org/packages/YamlDotNet/
]. Die erste dort veröffentlichte Version war 2013, seitdem sind zahlreiche Versionen erschienen. Die aktuelle Version zum Zeitpunkt der Erstellung des Beitrags ist 6.1.1 vom 4.6.2019. YamlDotNet basiert auf
.NET Standard
1.3, läuft daher in
.NET Core
ab Version 1.0 und
.NET Framework
ab Version 4.5 sowie
Mono
und
Unity
. Die Installation in einem Projekt erfolgt mit Install-Package YamlDotNet.
Bestandteile
Die wichtigsten Elemente in YAML sind:
Leerzeichen zur Einrückung als Strukturierungselement
Einfache Listen (alias Arrays); Listenelemente beginnen mit einem Minuszeichen
Assoziative Liste
n (alias
Hash
es, Maps, Dictionary) in der Form Name : Wert
Einzelwerte (Skalare): diese können, müssen aber nicht in einfachen oder doppelten Anführungszeichen stehen
Sprungmarken (Anker) und Verweise (Referenzen): die Sprungmarke beginnt mit dem kaufmännischen &, der Verweis darauf mit einem Stern *
Kommentare (beginnen mit #)
Abschnitte (---), die eine Datei in mehrere Dokumente teilen können
Einsatzgebiete
YAML hat erst Mitte der 2010er-Jahre größere Bedeutung erhalten als es von
Docker
als Konfigurationsformat für Deployment und
Debugging
-Einstellungen verwendet wurde.
Microsoft verwendet YAML seit 2019 in
Azure DevOps
.
Beispiel
Listing 1 zeigt ein
Objekt
modell mit verschiedenen Datentypen (inkl.
Nullable Value Type
s), Listen, einem Aufzählungstyp und einer zirkulären Referenz. Der Programmcode ist eine komplexere Form eines Beispiels auf GitHub [
github.com/aaubry/YamlDotNet/blob/master/YamlDotNet.Samples/SerializeObjectGraph.cs
]. Listing 2 zeigt die Serialisierung und
Deserialisierung
mit YamlDotNet. Listing 3 zeigt das Ergebnisdokument.
Listing 1: Ein
Objekt
modell in C# mit zirkulären Referenzen
using System;
using
System.Collections
.
Generic
;
namespace ITVisions.Demo.BO
{
public enum Title
{
None, Dr, Prof, ProfDr
}
public class Address
{
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
}
public class Order
{
public Guid Receipt
GUID
{ get; set; }
public DateTime Date { get; set; }
public Customer Customer { get; set; }
public List<Item> Items { get; set; }
public Address Bill_To { get; set; }
public Address Ship_To { get; set; }
public string SpecialDelivery { get; set; }
}
public class Customer
{
public string Name { get; set; }
public Employee Employee { get; set; }
}
public class Employee
{
public Title Title { get; set; }
public string Givenname { get; set; }
public string Surname { get; set; }
public DateTime? Birthday { get; set; }
public List<Receipt> Receipts { get; set; } = new List<Receipt>();
}
public class Item
{
public short Part_No { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
public int? Weight { get; set; }
}
}
Listing 2: Erzeugen eines
Objekt
modells und Serialisierung sowie
Deserialisierung
in YAML
using ITVisions.Demo.BO;
using System;
using System.Linq;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;
namespace ITVisions
{
public class YAMLDemo
{
public void Run()
{
Console.WriteLine("--- Creating Business Objects...");
var receipt = CreateBusinessObjects();
Console.WriteLine("--- Serializing...");
var serializer = new SerializerBuilder()
.WithNamingConvention(new PascalCaseNamingConvention())
.Build();
var yaml = serializer.Serialize(receipt);
Console.WriteLine("--- Result:");
Console.WriteLine(yaml);
Console.WriteLine("--- Deserializing...");
var deserializer = new DeserializerBuilder()
.WithNamingConvention(new PascalCaseNamingConvention())
.Build();
var receipt2 = deserializer.Deserialize<Order>(yaml);
Console.WriteLine("--- Result:");
ObjectDumper.Write(receipt2);
}
private static Order CreateBusinessObjects()
{
var address = new Address
{
Street = "De-La-Chevallerie-Straße 42,\nEtage 2",
City = "45894 Gelsenkirchen",
State = "NRW"
};
var receipt = new Order
{
Receipt
GUID
= Guid.NewGuid(),
Date = DateTime.Now,
Customer = new Customer
{
Name = "5Minds IT Solutions Gmbh & Co KG",
Employee = new Employee
{
Title = Title.Dr,
Givenname = "Dr. Holger",
Surname = "Schwichtenberg"
}
},
Items = (new Item[]
{
new Item
{
Part_No = 123,
Description = "C# 7.3 Crashkurs",
Price = 14.99M,
Quantity = 40
},
new Item
{
Part_No = 456,
Description = "Moderne Datenzugriffslösungen mit \"Entity ramework Core 2.1/2.2
Ruby
\"",
Price = 49.00M,
Quantity = 1
}
}).ToList(),
Bill_To = address,
Ship_To = address,
SpecialDelivery = "Bitte zusammen anliefern\n" +
"Wareneingang 2. Etage.\n" +
"Bitte am Empfang melden"
};
// recursion
receipt.Customer.Employee.Receipts.Add(receipt);
return receipt;
}
}
}
Listing 3: YAML-Dokument für das
Objekt
modell in Listing 1
&o0
Receipt
GUID
: d5549070-102a-4768-8b65-03501b76af24
Date: 2019-06-12T20:16:55.2529275+02:00
Customer:
Name: 5Minds IT-Solutions Gmbh & Co KG
Employee:
Title: Dr
Givenname: Dr. Holger
Surname: Schwichtenberg
Receipts:
*o0
Items:
PartNo: 123
Description: C# 7.3 Crashkurs
Price: 14.99
Quantity: 40
PartNo: 456
Description: Moderne Datenzugriffslösungen mit "
Entity Framework Core 2.1
/2.2
Ruby
"
Price: 49.00
Quantity: 1
BillTo: &o1
Street: >-
De-La-Chevallerie-Straße 42,
Etage 2
City: 45894 Gelsenkirchen
State: NRW
ShipTo: *o1
SpecialDelivery: >-
Bitte zusammen anliefern
Wareneingang 2. Etage.
Bitte am Empfang melden
Querverweise zu anderen Begriffen im Lexikon
siehe
https://yaml.org
Entity Framework Core 2.1
Nullable Value Type
Konfigurationsdatei
Programmiersprache
Softwarekomponente
System.Collections
Assoziative Liste
Deserialisierung
.NET Framework
.NET Standard
Azure DevOps (ADO)
Datenformat
Kubernetes
JavaScript (JS)
.NET Core
Debugging
Prozesse
Pipeline
Generic
Objekt
Python
Docker
Unity
Perl
Hash
Mono
Dart
Ruby
Global Unique Identifier (GUID)
JavaScript Object Notation (JSON)
Personal Home Page Tools (PHP)
Extensible Markup Language (XML)
Beratung & Support
.NET-Webservices mit WebAPI, SignalR, gRPC oder WCF/CoreWCF?
Anfrage für Beratung/Consulting zu YAML AIN' T MARKUP LANGUAGE YAML
Gesamter Beratungsthemenkatalog
Technischer Support zum Thema YAML AIN' T MARKUP LANGUAGE YAML
Schulungen
Azure DevOps Server / Azure DevOps Services (ADO) im Überblick
Azure DevOps Services (ADO) in der Cloud im Überblick
Azure DevOps: Anpassungen und Entwicklung von Erweiterungen
Azure DevOps: Best Practices
Azure DevOps: Continuous Integration (CI) / Continuous Delivery (CD) mit Pipelines (Build- und Releasemanagement)
DevOps / Continuous Integration (CI) / Continuous Delivery (CD) mit Ansible
Kubernetes (K8s)
Visual Studio 2017 (Visual Studio 15.x) Update - Die Neuerungen gegenüber Visual Studio 2015
Anfrage für eine individuelle Schulung zum Thema YAML AIN' T MARKUP LANGUAGE YAML
Gesamter Schulungsthemenkatalog
Fachbücher
Alle unsere aktuellen Fachbücher
E-Book-Abo für ab 99 Euro im Jahr