Zum Hauptinhalt springen

5. Zukünftige Entwicklung von CBOR

Erfolgreiche Protokolle entwickeln sich im Laufe der Zeit weiter. Neue Ideen entstehen, Implementierungsplattformen verbessern sich, verwandte Protokolle werden entwickelt und entwickeln sich weiter, und neue Anforderungen aus Anwendungen und Protokollen kommen hinzu. Die Förderung der Protokollentwicklung ist daher ein wichtiger Designaspekt bei der Entwicklung eines jeden Protokolls.

Für Protokolle, die CBOR verwenden werden, stellt CBOR einige nützliche Mechanismen bereit, um deren Weiterentwicklung zu erleichtern. Bewährte Verfahren hierfür sind wohlbekannt, insbesondere aus der Entwicklung des JSON-Formats für JSON-basierte Protokolle. Daher liegen solche bewährten Verfahren außerhalb des Rahmens dieser Spezifikation.

Die Förderung der Weiterentwicklung von CBOR selbst liegt jedoch durchaus in ihrem Rahmen. CBOR ist so entworfen, dass es sowohl eine stabile Grundlage für die Entwicklung CBOR-basierter Protokolle bietet als auch selbst weiterentwicklungsfähig ist.

Da ein erfolgreiches Protokoll jahrzehntelang bestehen kann, muss CBOR für jahrzehntelange Nutzung und Weiterentwicklung ausgelegt sein. Dieser Abschnitt gibt einige Hinweise für die Weiterentwicklung von CBOR. Er ist notwendigerweise subjektiver als andere Teile dieses Dokuments. Er ist auch notwendigerweise unvollständig, damit er nicht zu einem Lehrbuch über Protokollentwicklung wird.

5.1. Erweiterungspunkte​

Beim Protokolldesign werden Möglichkeiten zur Weiterentwicklung häufig in Form von Erweiterungspunkten eingebaut. Beispielsweise kann ein Codepoint-Raum vorhanden sein, der von Anfang an nicht vollständig zugewiesen ist, und das Protokoll ist so ausgelegt, dass es Implementierungen toleriert und begrüßt, die mehr Codepoints verwenden als ursprünglich zugewiesen.

Die Dimensionierung des Codepoint-Raums kann schwierig sein, da der benötigte Bereich schwer vorherzusagen sein kann. Es sollte versucht werden, den Codepoint-Raum groß genug zu machen, damit er über die vorgesehene Lebensdauer des Protokolls hinweg langsam gefüllt werden kann.

CBOR hat drei wesentliche Erweiterungspunkte:

  • den "Simple"-Raum (Werte im Haupttyp 7). Von den 24 effizienten (und 224 geringfügig weniger effizienten) Werten ist nur eine kleine Anzahl zugewiesen. Implementierungen, die ein unbekanntes einfaches Datenelement empfangen, können dieses unter Umständen als solches verarbeiten, sofern die Struktur des Wertes tatsächlich einfach ist. Das IANA-Register in Abschnitt 7.1 ist der geeignete Weg, um die Erweiterbarkeit dieses Codepoint-Raums zu adressieren.

  • den "Tag"-Raum (Werte im Haupttyp 6). Auch hier ist nur ein kleiner Teil des Codepoint-Raums zugewiesen, und der Raum ist reichlich vorhanden (wobei die frühen Nummern effizienter sind als die späteren). Implementierungen, die einen unbekannten Tag empfangen, können ihn wahlweise einfach ignorieren oder als unbekannten Tag verarbeiten, der das folgende Datenelement umschließt. Das IANA-Register in Abschnitt 7.2 ist der geeignete Weg, um die Erweiterbarkeit dieses Codepoint-Raums zu adressieren.

  • den Raum der "zusätzlichen Informationen". Eine Implementierung, die einen unbekannten Wert für zusätzliche Informationen empfängt, hat keine Möglichkeit, mit dem Parsen fortzufahren; daher ist die Zuweisung von Codepoints in diesem Raum ein bedeutender Schritt. Es sind auch nur noch sehr wenige Codepoints übrig.

5.2. Pflege des Raums der zusätzlichen Informationen​

Der menschliche Geist ist mitunter geneigt, wahrgenommene kleine Lücken zu füllen, um etwas ordentlich zu machen. Wir erwarten, dass die verbleibenden Lücken im Codepoint-Raum für die Werte der zusätzlichen Informationen ein Anziehungspunkt für neue Ideen sein werden, einfach weil sie vorhanden sind.

Die vorliegende Spezifikation verwaltet den Codepoint-Raum der zusätzlichen Informationen nicht über ein IANA-Register. Stattdessen können Zuweisungen aus diesem Raum nur durch Aktualisierung dieser Spezifikation erfolgen.

Für einen Wert der zusätzlichen Informationen von n >= 24 beträgt die Größe der zusätzlichen Daten typischerweise 2**(n-24) Byte. Daher sollten die Werte 28 und 29 der zusätzlichen Informationen als Kandidaten für 128-Bit- und 256-Bit-Größen betrachtet werden, falls die Notwendigkeit entsteht, sie dem Protokoll hinzuzufügen. Der Wert 30 der zusätzlichen Informationen ist damit der einzige Wert, der für eine allgemeine Zuweisung zur Verfügung steht, und es sollte einen sehr guten Grund geben, ihn zuzuweisen, bevor er durch eine Aktualisierung dieses Protokolls vergeben wird.