我开始使用OOP编程,想知道OOP用语中序列化的含义是什么?
序列化是将内存中的对象转换为字节流的过程,因此您可以将其存储在磁盘上或通过网络发送.
反序列化是一个相反的过程:将字节流转换为内存中的对象.
简单来说,序列化是一个将对象转换为字节流的过程,以便它可以Serializable interface
.
反序列化完全相反 - 从网络或持久性存储中获取字节流,并将其转换回具有相同状态的Object .
现在唯一要理解的是如何解释或操纵这些字节流,以便我们获得完全相同的Object /相同状态.有各种方法可以实现这一目标.他们之中有一些是 -
XML:将对象转换为XML,通过网络传输或将其存储在文件/ db中.检索它并将其转换回具有相同状态的对象.在Java中,我们使用JAXB(用于XML绑定的Java体系结构)库.(从Java 6开始,它与JDK捆绑在一起).
JSON:将Object转换为JSON(Javascript Object表示法)可以完成相同的操作.同样有GSON库可用于此目的.
或者我们可以使用OOP语言本身提供的序列化.例如.在Java中,您可以序列化一个Object,使其实现Serializable interface
并写入Object Stream.
假设我在电话里和我的伙伴谈话,我告诉他我的新小狗.
这是我的问题:小狗是一种活的,呼吸的哺乳动物.我是怎么想通过电话线传送一只小狗的?我无法将我的小狗放入我的手机接收器.
相反,我必须通过电话传达小狗的表示.换句话说,然后我将我的狗Rex序列化,然后通过电话线向他发送Rex的序列化版本:
{ "name":"Rex", "age":5, "favourite_food": pedigree_choice_cuts, "favourite_game": fetch_ball, "favourite_hobby": wagging_tail }
这是一个完美的表现 - 我的狗的序列化.
序列化基本上意味着将我的狗Rex转换成其他东西 - 一个JSON对象 - 然后可以通过电话线传输为一系列的1和0.我在NYC的伙伴然后可以将那些1和0转换回JSON对象 - 这样他就可以完美呈现我的狗Rex.简单!
看看这个,这将给你一个很好的解释:
http://en.wikipedia.org/wiki/Serialization
我认为序列化一词的最常见用法是将二进制对象转换为XML(或其他字符串)表示,以便它可以存储在数据库/文件中,或者通过Web服务调用中的网络发送.反序列化是一个相反的过程 - 将XML /字符串转换回对象.
编辑:您可能遇到的另一个术语是编组/解组.编组与序列化的概念基本相同,解组与反序列化相同.
序列化是将对象转换为字节流以存储对象或将其传输到内存,数据库或文件的过程。其主要目的是保存对象的状态,以便能够在需要时重新创建它。反向过程称为反序列化。
...
下图显示了序列化的总体过程
...
通过序列化,开发人员可以执行一些操作,例如通过Web Service将对象发送到远程应用程序,将对象从一个域传递到另一个域,将对象作为XML字符串通过防火墙传递,或维护安全性或特定于用户的操作。跨应用程序的信息
从https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/serialization/
(强调我的)
序列化是将无序数据(例如对象)转换为一系列令牌的过程,这些令牌可以在以后用于重建原始数据.序列化表单通常是一串文本,但不一定是.