JSON 是一种相当舒服的数据表示方法,因此常常作为松散集成的各服务之间的消息承载协议。其优点在我看来有:
1. 语法简单,容易解析和流化
2. 表达能力虽然不十分强悍,但足以应付大多数场景
3. 有自描述能力,无需额外的接口定义语言
4. 数据中包含了基本的类型信息,便于程序自动化处理
5. 和程序中的常用数据结构有较好的对应
6. 文本协议带来的透明性和易于调试
但仍有不足,主要在于:
1. OBJECT 表示法,对于大量同类型数据,将产生大量的属性名冗余
2. 承载二进制内容会导致大量的转义开销
3. 类型应该更丰富一点
最近刚好工作中略有涉及,我就想能否设计一个二进制表示法能够继承 JSON 的大多数有点,并弥补其缺点,具体说来包含如下特点:
1. 协议简单,一页纸可以描述
2. 编码效率高
越常用的数据应该尺寸越少,包括:null/true/false 以及一些小整数,最好能一个字节搞定
字符串可以在同一份文档中被反复引用
被引用的数据即可以预先定义,也可以在第一次出现时隐式定义
3. 和程序中的数据结构容易对应
区分不可更改的 STRING 和可更改的 BLOB
区分不可更改的 TUPLE 和可更改的 ARRAY
取消 OBJECT 类型,而支持更加面向数据的概念 DICTIONARY
增加自定义类型的支持
分享到:
相关推荐
IPv4 地址是一种网络地址协议,使用 32 位的二进制数表示。 19. TD-LTE-A 标准属于 4G 移动通信标准。TD-LTE-A 是一种 4G 移动通信标准,提供了高速的数据传输和低延迟的通信服务。 20. M2M 模式中的“M”是指机器...
Hessian是一种轻量级的远程过程调用(Remote Procedure Call,RPC)协议,由Caucho公司开发。它主要用于实现不同应用程序之间的远程服务调用,支持跨语言特性,即客户端和服务端可以采用不同的编程语言实现。Hessian...
13. 网络协议定义了数据交换的规则。 **名词解释**: 1. **位置计数法**:基于数位位置的计数方法,如十进制、二进制等。 2. **模拟数据**:连续变化的数据,如声音波形。 3. **数字数据**:离散的、以固定单位表示...
CSMA/CD是一种介质访问控制协议,用于解决网络中多台设备共享同一通信介质的问题。 #### 68. 游标(Cursor) 游标是指在文本编辑器或图形用户界面中用于指示当前位置的标记。 #### 69. 循环冗余检校(Cyclic ...
COM是一个二进制标准,允许不同编程语言编写的对象之间进行交互。DCOM则扩展了COM,支持网络上的分布式对象交互。通过OPC,硬件制造商可以创建符合标准的OPC服务器,这些服务器能够将设备数据暴露给其他OPC客户端,...
3. **主存**: 主存也称为内存或RAM,是一种临时存储器,用于存储当前运行程序的数据和指令。 4. **存储单元**: 存储单元是由多个存储元件构成的,每个存储单元用来存储一个特定长度的信息片段。 5. **存储元件**: 指...
可见光通信(Visible Light Communication,VLC)是一种创新的信息传输方式,利用发光二极管(LED)的快速开关控制来发送和接收数据,从而实现高速的无线通信。这一技术的出现源于对绿色通信的追求,由于LED照明设备...
算术逻辑单元,能处理二进制数据;控制单元,解读存储器中的指令并且使他们得到执行;输入/输出设备,由控制单元管理。 1.2、 定义处理器寄存器的两种主要类别。 答:用户可见寄存器:优先使用这些寄存器,可以使...
1919年,瑞典的电话工程师帕尔姆格伦和贝塔兰德发明了一种自动接线器,叫做“纵横制接线器”,并申请了专利。1929年,瑞典松兹瓦尔市建成了世界上第一个大型纵横制电话局,拥有3500个用户。 “纵横制”的名称来自...
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新...
3. **性能**:RMI可以通过序列化和反序列化Java对象,以及高效的二进制数据传输,实现高效的数据交换。 在"taxi-rental-rmi"项目中,我们可以通过RMI实现一个健壮且易于扩展的出租车预订系统,这不仅可以提高服务的...
- 在CCNA考试中,“acceptable”常用于描述一种满足特定标准或条件的状态。 **Access 通路 访问 存取** - “Access”在IT领域中通常指的是用户或者系统对资源的访问权限或过程。 **Accomplish 完成 实现** - 在...