文章目录
一、介绍
1.1 cereal 介绍
cereal is a header-only C++11 serialization library. cereal takes arbitrary data types and reversibly turns them into different representations, such as compact binary encodings, XML, or JSON. cereal was designed to be fast, light-weight, and easy to extend - it has no external dependencies and can be easily bundled with other code or used standalone.
- cereal是一个只包含头文件的C++11序列化库
- cereal支持任何类型的数据并可以将其序列化为不同形式,例如:二进制、XML或者JSON。
- cereal的设计理念是快速、轻量级和容易扩展;cereal没有依赖第三库而且可以轻易的将其和其他代码相。
- 项目使用cereal的原因:(需求)
- 给WEB用:JSON
- 给后端用:C++对象(不够贴切)(成员变量自动序列化成JSON)
1.2 cereal 资料
-
评论:没用过msgpack吧,网络、数据库、配置+多语言,一套方案解决 回复:哈哈 msgpack
确实短小精悍,我有个项目要关RTTI,cereal搞得要死要活搞不定,msgpack轻松解决了。。
问题:
- cereal 是什么?是哪个团队创建和维护的?相比同类型其他库表现怎么样?
- cereal 依赖什么?
- cereal 怎么使用?
二、常见的序列化库
- https://github.com/thekvs/cpp-serializers
- c++序列化库cereal使用介绍
- https://msgpack.org/
- Boost序列化与Protobuf比较
以下是您列出的序列化和数据交换格式库的简要介绍:
-
Apache Thrift
- 特点:由Facebook开发,是一个完整的RPC(远程过程调用)框架,用于构建跨语言的服务通信。
- 格式:二进制,也支持JSON和Compact Protocol。
- 优点:支持多种语言,有强大的IDL(接口定义语言)和编译器。
- 用途:广泛应用于构建分布式系统的微服务架构。
-
Protocol Buffers (protobuf)
- 特点:由Google开发,用于序列化结构化数据,类似于XML,但更小、更快、更简单。
- 格式:二进制。
- 优点:高性能,跨语言支持,有成熟的工具链。
- 用途:常用于网络通信、数据交换和持久化存储。
-
Boost.Serialization
- 特点:是Boost库的一部分,提供序列化和反序列化机制,支持多种格式。
- 格式:二进制、XML、JSON等。
- 优点:功能强大,可以序列化复杂类型。
- 用途:适用于需要灵活序列化机制的项目。
-
MessagePack
- 特点:一种高效、紧凑的二进制序列化格式,旨在替代JSON。
- 格式:二进制。
- 优点:比JSON更小,解析速度更快。
- 用途:适用于对数据大小和解析速度敏感的场景。
-
cereal
- 特点:一个轻量级、高性能的序列化库,仅包含头文件。
- 格式:二进制、XML、JSON。
- 优点:易于使用,性能好,无外部依赖。
- 用途:适用于需要快速集成序列化能力的项目。
-
Apache Avro
- 特点:一个数据序列化系统,支持动态模式和静态模式。
- 格式:二进制。