为什么我们需要使用序列化?
如果我们想通过网络发送一个对象或一块数据我们可以使用字节流
如果我们想将一些数据保存到磁盘我们可以再次使用二进制模式和字节流并保存它
那么使用序列化有什么好处呢?
答案 0 :(得分:32)
从技术上讲,在低级别,您的序列化对象也将最终作为电缆或文件系统上的字节流...
因此,您也可以将其视为将对象转换为字节流的标准化且已有的方法。存储/传输对象是一个非常常见的要求,在每个应用程序中重新发明这个轮子的意义不大或很小。
正如其他人所提到的,您也知道这个对象 - > stream_of_bytes实现非常强大,经过测试,并且通常与架构无关。
这并不意味着它是保存或传输对象的唯一可接受方式:在某些情况下,您必须实现自己的方法,例如避免保存不必要的/私有成员(例如,为了安全性或性能)原因)。但是如果你处于一个简单的例子中,你可以通过使用框架,语言或VM的序列化/反序列化来简化你的生活,而不必自己实现它。
希望这有帮助。
答案 1 :(得分:9)
在架构之间兼容的其他原因。整数从一个体系结构到另一个体系结构的字节数不同,有时从一个编译器到另一个编译器。
另外,你所谈论的仍然是序列化。二进制序列化。您将对象的所有字节放在一起以便存储它们,并且以后能够将它们重新转换为对象。这是序列化。
更多信息on wikipedia
答案 2 :(得分:4)
序列化是将对象转换为流的过程,以便可以将其保存在任何物理文件(如XML)中,也可以保存在数据库中。 C#中序列化的主要目的是持久化对象并将其保存在任何指定的存储介质中,如流,物理文件或数据库。
答案 3 :(得分:2)
一般来说,序列化是一种持久化对象状态的方法,但我建议你阅读这个wiki页面,在我看来它非常详细和正确:
答案 4 :(得分:1)
引自 Designing Data Intensive Applications
本书:
程序通常处理(至少)两个不同的数据 陈述: