bintalk是一个用来对结构化数据进行二进制编码解码的轻量级工具。
目的
bintalk最初的设计目的是为了满足online game的开发需要。一个online game一般都会有很多相互通信的后端服务器,这些服务器可能使用了不同的语言实现。游戏客户端也可能需要在不同的平台使用不同的语言。并且,游戏对于效率要求很高,一般都会使用自定义的二进制网络协议进行通信。bintalk就是为满足这样的一个开发环境而设计的。
介绍
bintalk使用一个btk源文件对结构化数据进行描述,生成指定语言对数据的编解码代码。使用生成的编解码代码,可以使多种语言基于同一套数据描述进行自由的通信。
与很多现有的同类系统(JSON,XML,ProtocolBuffers...)不同,bintalk是一个非常小巧和轻量级的工具。编码后的二进制数据不包含任何的元数据,体积很小,便于网络传输。对于每种支持的语言都有一个运行时库,用来支持生成的代码。这些库的功能都是对语言层二进制数据处理的简单封装,保障了编解码的高效。
由于功能仅仅是编解码,所以bintalk对于支持语言的依赖性很低。只要语言本身支持二进制数据处理,就可以被加入到bintalk中。支持尽量多的语言之间的通信是bintalk的一个重要的设计目标。
目前bintalk支持的语言:
- C++
- C#
- Python
- Erlang