`
wlvfox
  • 浏览: 26471 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
定义
 串行化(Serialization)是计算机科学中的一个概念,它是指将对象存储到介质(如文件、内在缓冲区等)中或是以二进制方式通过网络传输。之后可以通过反串行化从这些连续的字节(byte)数据重新构建一个与原始对象状态相同的对象,因此在特定情况下也可以说是得到一个副本,但并不是所有情况都这样。

特性
  串行化有以下但不局限于这些优点:
  1.串行化是一种更好地使用类持久化的方法
  2.可用于远程方法调用,如SOAP
  3.一种分布对象的方法,特别是在软件组件中,如COM、CORBA等
  4.在随时间变化的数据(time-varying data)检测改变
  由于这些特性都是十分有用的,所以必须维持串行化的体系结构独立性。例如在一台运行在不同硬件构架上的计算机应该能够可靠地重新构建数据而不关心其对字节(byte)数据的编排方式(endianness)。

影响(Consequences)
  但是,由于串行化可能将暴露私有实现细节从而打破了抽象数据结构的不透明性。为了不让竞争对手做出兼容的产品,很多私有软件开发商都是将其程序的串行化格式作为机密的,因此他们可能故意混淆或加密其串行化的数据。
  尽管如此,现在的协作要求能够相互识别其串行化的数据。因此像CORBA这样的远程方法调用的架构会详细定义其串行化的格式以及提供相应的方法在重新构建对象时检查数据的一致性。

编程语言支持
  很多面向对象的语言都提供对串行化支持,无论是通过语法糖(Syntactic sugar)还是通过定义标准的接口来实现。

.NET Framework
  微软提供的串行化是用于对对象进行文件I/O的一种机制,该机制在框架(Frame)/文档(Document)/视图(View) 模式中得到了很好的应用。
  串行化可以把变量包括对象,转化成连续bytes数据. 你可以将串行化后的变量存在一个文件里或在网络上传输. 然后再反串行化还原为原来的数据。
  对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的能力,叫做对象的持续性(persistence)。对象通过写出描述自己状态的数值来「记录自己」,这个过程叫对象的串行化(Serialization)。

Java
Java提供了自动串行化的机制,被串行化的类必须是实现java.io.Serializable接口。下面是一个简单示例:
  import java.io.*;
  public class Cat implements Serializable {
          private String name;
          public Cat () {
                  this.name = "new cat";
          }
          public String getName() {
                  return this.name;
          }
          public void setName(String name) {
                  this.name = name;
          }
  public static void main(String[] args) {
                 
                  Cat cat = new Cat();
                  try {
                          FileOutputStream fos = new FileOutputStream("catDemo.out");
                          ObjectOutputStream oos = new ObjectOutputStream(fos);
                          System.out.println(" 1> " + cat.getName());
                          cat.setName("My Cat");
                         
                          oos.writeObject(cat);
                          oos.close();
                         
                  } catch (Exception ex) {
                          ex.printStackTrace();
                  }
                  try {
                          FileInputStream fis = new FileInputStream("catDemo.out");
                          ObjectInputStream ois = new ObjectInputStream(fis);
                          cat = (Cat) ois.readObject();
                         
                          System.out.println(" 2> " + cat.getName());
                          ois.close();
                  } catch (Exception ex) {
                          ex.printStackTrace();
                  }
          }
  }
分享到:
评论

相关推荐

    java对象的串行化

    【Java对象的串行化】是指将Java对象的状态转换为字节序列的过程,这使得对象可以在需要时重新创建,从而实现对象的持久化。对象串行化是Java平台的一个核心特性,它允许对象的状态被保存并能够在不同的时间点或者在...

    MFC 文档串行化

    在Microsoft Foundation Classes (MFC)库中,文档串行化是一种关键机制,它允许应用程序将文档数据保存到磁盘,并从磁盘加载回内存。这个过程对于实现文件的持久化和用户界面的状态恢复至关重要。MFC的设计遵循了...

    串行化和图像读取显示

    在IT领域,串行化和图像处理是两个重要的概念,特别是在软件开发中。串行化是将对象的状态转换为可以存储或传输的数据的过程,而图像显示则涉及到图像处理和计算机图形学,通常与用户界面和多媒体应用息息相关。下面...

    mfc 串行化的简单使用

    ### MFC串行化的基本应用 #### 一、串行化概述 串行化(Serialization)是计算机科学中的一个重要概念,特别是在数据存储和传输领域。简单来说,串行化就是将对象的状态信息转换为可以存储或传输的形式的过程;而...

    MFC的文件串行化操作

    在Microsoft Foundation Classes (MFC)库中,文件串行化是一种关键机制,用于持久化对象的状态,以便在程序的不同会话之间保存和恢复数据。它主要用于文档类(CDocument),但也可以扩展到其他自定义类。本文将深入...

    MFC文档的串行化与保存

    文档串行化(Serialization)是MFC中实现文件保存和加载的关键机制,它允许将文档对象的状态转换为字节流,以便于存储到磁盘或在网络上传输。下面我们将深入探讨MFC文档的串行化以及如何实现保存功能。 **1. MFC...

    基于对话框工程的串行化-可用于保存配置

    在C++编程中,串行化(Serialization)是一种将数据对象转换为可存储或传输的形式的过程,通常用于保存程序的状态或者配置信息。在Visual Studio 2010中,开发基于对话框的应用程序时,虽然单文档(SDI)和多文档...

    “id串行化”到底是怎么实现的

    ### “id串行化”实现详解 #### 一、引言 在分布式系统设计中,为了确保消息的顺序性和一致性,通常会采用一种名为“id串行化”的技术。通过这种方式,可以确保针对同一个标识符(如群组ID、用户ID等)的操作能够在...

    收集几个 MFC串行化数据和C++对象的 实例

    它包含了许多类,其中一部分是用来处理串行化,即数据的序列化和反序列化过程。串行化是将对象的状态转换为可存储或传输的形式,如文件、数据库或网络流,以便稍后恢复该状态的过程。在MFC中,`CObject`类是所有MFC...

    对象序列化 串行化

    对象序列化 串行化 实现java对象的保存

    VC 文件串行化示例.rar

    VC 文件串行化示例,源代码下载,涉及到的知识点:C语言对文件读写的支持,FILE指针;文本文件和二进制文件的区别。用文本方式读写文件和以二进制方式读写文件的注意事项。C 对文件读写的支持,ofstream和ifstream的...

    tsdf.zip_tsdf_串行化

    串行化是微软提供的用于对对象进行文件I/O的一种机制,该机制在框架(Frame)/文档(Document)/视图(View) 模式中得到了很好的应用。很多人对什么是串行化、怎么使对象具有串行化能力和如何使用串行化功能等问题都 不甚...

    C# 对象串行化输入输出 演示代码

    在C#编程中,对象串行化是一种将对象的状态转换为可以存储或传输的数据格式的过程。这通常涉及将对象的数据转换成字节流,以便在内存、文件或网络中保存和恢复。对象串行化是软件开发中的一个重要概念,尤其在持久化...

    C#344-对象串行化源代码

    对象串行化是编程中一个重要的概念,尤其是在.NET框架中,C#提供了强大的支持。对象串行化是指将对象的状态转换为可以存储或传输的数据格式的过程,如XML、JSON或二进制。这个过程允许我们将对象的信息保存到磁盘、...

    C#图形对象的串行化实例

    在编程领域,串行化是一种将复杂的数据结构转化为可以存储或传输的格式的过程。在C#中,串行化主要用于保存对象的状态以便后续恢复,或者是跨进程或网络传输数据。本实例聚焦于C#图形对象的串行化,这是一个实用的...

    串行化保存和读取数据示例.zip

    在编程领域,串行化(Serialization)是一种将对象的状态转换为可以存储或传输的数据格式的过程。这个过程使得数据能够在不同的程序、系统甚至时间之间共享和恢复。与之相对应的是反串行化(Deserialization),它能...

    Visual Basic.NET 串行化参考手册

    《Visual Basic.NET 串行化参考手册》是针对使用Visual Basic.NET进行对象串行化的重要资源,它提供了全面且深入的指导,帮助开发者理解和实施对象数据的保存与加载。串行化是编程中的一个关键概念,它允许将复杂的...

    实例解析C++/CLI的串行化

    在编程语言中,串行化是一个非常重要的概念,它涉及到数据的持久化存储和网络传输。串行化(Serialization)是指将对象的状态信息转换为可以存储或传输的形式的过程,这个过程通常会把对象转换成字节流,便于数据的...

    MFC串行化数据测试例程

    在这个“MFC串行化数据测试例程”中,我们将深入探讨MFC库中的串行化机制,以及如何利用`CArchive`类来实现数据的持久化存储。 串行化是将对象的状态转换为可存储或可传输的形式的过程,而反串行化则是相反的过程,...

    Visual Basic.NET 串行化参考手册(PDG)

    在编程领域,串行化是一种将对象的状态转换为可以存储或传输的数据格式的过程。这个过程通常涉及将数据结构或对象转换成字节流,以便在不同的时间或不同的系统之间保存和恢复这些对象。Visual Basic.NET(VB.NET)...

Global site tag (gtag.js) - Google Analytics