4. Considerazioni Pratiche
4.1. Specificare le Sequenze CBOR nel Linguaggio di Definizione Dati Conciso (CDDL)
Nel Linguaggio di Definizione Dati Conciso (Concise Data Definition Language, CDDL) [RFC8610], le Sequenze CBOR sono già supportate come contenuti di stringhe di byte utilizzando l'operatore di controllo ".cborseq" (Sezione 3.8.4 di [RFC8610]) impiegando un array come tipo di controller:
my-embedded-cbor-seq = bytes .cborseq my-array
my-array = [* my-element]
my-element = my-foo / my-bar
Attualmente, CDDL non prevede Sequenze CBOR non adornate come soggetto di primo livello di una specifica. Per ora, il suggerimento è di utilizzare un array per la regola di primo livello, come viene utilizzato per l'operatore di controllo ".cborseq", e aggiungere testo in inglese che spiega che la specifica riguarda in realtà una Sequenza CBOR con gli elementi dell'array:
; 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
(Versioni future di CDDL potrebbero fornire una notazione per le Sequenze CBOR di primo livello, ad esempio, utilizzando un gruppo come regola di primo livello in una specifica CDDL.)
4.2. Notazione Diagnostica
La notazione diagnostica CBOR (vedere la Sezione 6 di [RFC7049]) o la notazione diagnostica estesa (Appendice G di [RFC8610]) non prevedono anch'esse Sequenze CBOR non adornate in questo momento (quest'ultima prevede Sequenze CBOR incorporate in una stringa di byte come da Appendice G.3 di [RFC8610]).
In uno spirito simile alla raccomandazione per CDDL sopra, questa specifica raccomanda di racchiudere gli elementi dati CBOR in un array. In un contesto più informale, in cui i confini entro i quali viene utilizzata la notazione sono ovvi, è anche possibile tralasciare le parentesi esterne per questo array, come mostrato in questi due esempi:
[1, 2, 3]
1, 2, 3
Si noti che è un po' difficile discutere di Sequenze CBOR di lunghezza zero in quest'ultima forma.
4.3. Ottimizzare le Sequenze CBOR per Saltare Elementi
In alcune applicazioni, essere in grado di saltare in modo efficiente un elemento senza la necessità di decodificarne la sottostruttura, o distribuire in modo efficiente gli elementi a processi di decodifica multi-thread, è della massima importanza. Per queste applicazioni, le stringhe di byte (che trasportano informazioni sulla lunghezza in byte) contenenti CBOR incorporato possono essere utilizzate come elementi di una Sequenza 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
Entro certi limiti, ciò può anche consentire il recupero da elementi che internamente non sono ben formati; il limite è che la sequenza di stringhe di byte deve essere essa stessa ben formata.