1.1. Objectives (目标)
1.1. Objectives (目标)
CBOR 的目标, 按重要性大致递减的顺序排列如下:
-
该表示必须能够明确无误地编码互联网标准中使用的大多数常见数据格式。
-
它必须使用二进制编码表示一组合理的基本数据类型和结构。这里的"合理"很大程度上受 JSON 能力的影响, 主要增加了二进制字节字符串。支持的结构仅限于数组和树; 不支持循环和网格式图。
-
不要求所有数据格式都唯一编码; 也就是说, 数字"7"可能以多种不同方式编码是可以接受的。
-
-
编码器或解码器的代码必须能够紧凑, 以支持内存, 处理器能力和指令集非常有限的系统。
-
编码器和解码器需要能够用非常少量的代码实现 (例如, 在 [CNN-TERMS] 中定义的 class 1 受限节点中)。
-
该格式应使用当代机器的数据表示 (例如, 不需要二进制到十进制的转换)。
-
-
数据必须能够在没有模式描述的情况下进行解码。
- 与 JSON 类似, 编码数据应该是自描述的, 以便可以编写通用解码器。
-
序列化必须合理紧凑, 但数据紧凑性次于编码器和解码器的代码紧凑性。
- 这里的"合理"以 JSON 作为大小的上限, 以实现复杂性维持下限。使用通用压缩方案或大量位操作都违反了复杂性目标。
-
该格式必须适用于受限节点和高容量应用程序。
- 这意味着它在编码和解码时的 CPU 使用必须相当节约。这对于受限节点和可能在具有非常高数据量的应用程序中使用都是相关的。
-
该格式必须支持所有 JSON 数据类型, 以便与 JSON 相互转换。
- 只要表示的数据在 JSON 的能力范围内, 它就必须支持合理水平的转换。必须能够为所有类型的数据定义到 JSON 的单向映射。
-
该格式必须是可扩展的, 并且扩展数据必须能够被早期解码器解码。
-
该格式设计用于数十年的使用。
-
该格式必须支持一种允许回退的可扩展性形式, 以便不理解扩展的解码器仍然可以解码消息。
-
该格式必须能够在未来由后续 IETF 标准进行扩展。
-