JS序列化架构师必懂的七种序列化机制及技术选型
版权申诉
48 浏览量
更新于2024-08-07
收藏 143KB DOCX 举报
序列化机制及技术选型
序列化是指将对象转换为二进制形式(字节数组),主要用于网络传输、数据持久化等。序列化可以分为两大类:一是基于文本的序列化协议,如XML、JSON等;二是基于二进制的序列化协议,如Java序列化、protobuf等。
一、序列化定义
序列化是指将对象转换为二进制形式(字节数组),主要用于网络传输、数据持久化等。反序列化是将从网络、磁盘等读取的字节数组还原成原始对象,以便后续业务的进行。
二、序列化协议
1. Java默认提供的序列化机制
Java默认提供的序列化机制需要序列化的Java对象实现Serializable/Externalizable接口并生成序列化ID,这个类就能够通过ObjectInput和ObjectOutput序列化和反序列化。但是Java默认提供的序列化有很多问题,主要有以下几个缺点:
* 无法跨语言:Java序列化后的字节数组,其他语言无法进行反序列化。
* 序列化后的码流太大:相对于目前主流的序列化协议,Java序列化后的码流太大。
* 序列化的性能差:由于Java序列化采用同步阻塞IO,相对于目前主流的序列化协议,它的效率非常差。
2. XML序列化协议
XML(Extensible Markup Language)是常用的序列化和反序列化协议,它历史悠久,从1998年的1.0版本被广泛使用至今。
* 优点:人机可读性好、可指定元素或特性的名称。
* 缺点:
+ 序列化数据只包含数据本身以及类的结构,不包括类型标识和程序集信息。
+ 类必须有一个将由XmlSerializer序列化的默认构造函数。
+ 只能序列化公共属性和字段。
+ 不能序列化方法。
+ 文件庞大,文件格式复杂,传输占带宽。
3. JSON序列化协议
JSON(JavaScript Object Notation,JS对象标记)是轻量级的数据交换格式。
* 优点:轻量级、易于阅读和编写、跨语言支持良好。
* 缺点:数据类型支持不够完善、不支持复杂数据结构。
三、影响序列化性能的关键因素
* 序列化后的码流大小(网络带宽的占用)。
* 序列化的性能(CPU资源占用)。
* 是否支持跨语言(异构系统的对接和开发语言切换)。
四、选择合适的序列化协议
在选择序列化协议时,需要考虑以下几个因素:
* 序列化后的码流大小。
* 序列化的性能。
* 跨语言支持。
* 数据类型和结构的复杂度。
根据具体的业务需求和技术环境,选择合适的序列化协议可以提高系统的性能和可维护性。
2019-05-24 上传
2021-03-01 上传
2021-12-09 上传
2024-06-27 上传
2022-09-03 上传
2021-11-08 上传
2022-07-08 上传
2022-10-26 上传
2022-11-04 上传
Cheng-Dashi
- 粉丝: 107
- 资源: 1万+
最新资源
- 高清艺术文字图标资源,PNG和ICO格式免费下载
- mui框架HTML5应用界面组件使用示例教程
- Vue.js开发利器:chrome-vue-devtools插件解析
- 掌握ElectronBrowserJS:打造跨平台电子应用
- 前端导师教程:构建与部署社交证明页面
- Java多线程与线程安全在断点续传中的实现
- 免Root一键卸载安卓预装应用教程
- 易语言实现高级表格滚动条完美控制技巧
- 超声波测距尺的源码实现
- 数据可视化与交互:构建易用的数据界面
- 实现Discourse外聘回复自动标记的简易插件
- 链表的头插法与尾插法实现及长度计算
- Playwright与Typescript及Mocha集成:自动化UI测试实践指南
- 128x128像素线性工具图标下载集合
- 易语言安装包程序增强版:智能导入与重复库过滤
- 利用AJAX与Spotify API在Google地图中探索世界音乐排行榜