4. Considérations pratiques
4.1. Spécification des séquences CBOR en langage de définition de données concis (CDDL)
Dans le langage de définition de données concis (Concise Data Definition Language, CDDL) [RFC8610], les séquences CBOR sont déjà prises en charge comme contenu de chaînes d'octets à l'aide de l'opérateur de contrôle ".cborseq" (Section 3.8.4 de la [RFC8610]) en employant un tableau comme type de contrôleur :
my-embedded-cbor-seq = bytes .cborseq my-array
my-array = [* my-element]
my-element = my-foo / my-bar
Actuellement, CDDL ne prévoit pas de séquences CBOR non décorées comme sujet de haut niveau d'une spécification. Pour l'instant, la suggestion est d'utiliser un tableau pour la règle de haut niveau, comme c'est le cas pour l'opérateur de contrôle ".cborseq", et d'ajouter un texte en anglais expliquant que la spécification concerne réellement une séquence CBOR avec les éléments du tableau :
; This defines an array, the elements of which are to be used
; in a CBOR Sequence:
my-sequence = [* my-element]
my-element = my-foo / my-bar
(Les futures versions de CDDL pourraient fournir une notation pour les séquences CBOR de haut niveau, par exemple, en utilisant un groupe comme règle de haut niveau dans une spécification CDDL.)
4.2. Notation de diagnostic
La notation de diagnostic CBOR (voir la section 6 de la [RFC7049]) ou la notation de diagnostic étendue (annexe G de la [RFC8610]) ne prévoit pas non plus de séquences CBOR non décorées pour le moment (cette dernière prévoit des séquences CBOR intégrées dans une chaîne d'octets comme selon l'annexe G.3 de la [RFC8610]).
Dans un esprit similaire à la recommandation pour CDDL ci-dessus, cette spécification recommande d'enfermer les anciens éléments de données CBOR dans un tableau. Dans un cadre plus informel, où les limites dans lesquelles la notation est utilisée sont évidentes, il est également possible de laisser de côté les crochets extérieurs pour ce tableau, comme le montrent ces deux exemples :
[1, 2, 3]
1, 2, 3
Notez qu'il est assez difficile de discuter de séquences CBOR de longueur zéro dans cette dernière forme.
4.3. Optimisation des séquences CBOR pour ignorer des éléments
Dans certaines applications, pouvoir ignorer efficacement un élément sans avoir besoin de décoder sa sous-structure, ou répartir efficacement les éléments vers des processus de décodage multithreads, est de la plus haute importance. Pour ces applications, des chaînes d'octets (qui portent des informations de longueur en octets) contenant du CBOR intégré peuvent être utilisées comme éléments d'une séquence CBOR :
; This defines an array of CBOR byte strings, the elements of which
; are to be used in a CBOR Sequence:
my-sequence = [* my-element]
my-element = bytes .cbor my-element-structure
my-element-structure = my-foo / my-bar
Dans certaines limites, cela peut également permettre de récupérer des éléments qui ne sont pas bien formés en interne ; la limitation est que la séquence de chaînes d'octets doit elle-même être bien formée.