`
wlvfox
  • 浏览: 26095 次
  • 性别: 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串行化的概念,帮助我们理解。

    串行化和图像读取显示

    串行化 图像显示 串行化 图像显示VC++图像编程小软件作业编程参考

    对象序列化 串行化

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

    Java关键字Transient与串行化

    关于Java中关键字transient和串行化的简略介绍

    java对象的串行化

    我也是从网上下的,分享下,觉得有用的就下把,对象串行化的基础知识

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

    升级RPC-client内部的连接池,在service连接选取上做微小改动,就能够实现“id串行化”,实现不同类型的业务gid/uid等的串行化、序列号需求

    MFC文档的串行化与保存

    MFC 文档串行化 保存

    VC 文件串行化示例.rar

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

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

    VS2010工程 我们能都知道单文档多文档串行化非常简单,因为框架已经为我们生成好了. 但是单文档串行化这方面,资料还真是少.

    mfc 串行化的简单使用

    简单介绍串行化的使用(即序列化),在保存文件格式的时候较实用,方便,适合mfc初学者

    tsdf.zip_tsdf_串行化

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

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

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

    MFC的文件串行化操作

    在MFC中使用文档类提供的串行化类进行文件的写入以及读取,保存图形的一些特征(比如起点和终点、画笔和画刷的类型)并进行图形的重绘。

    实验一java对象串行化编程.doc

    Java 对象串行化编程 Java 对象串行化编程是 Java 语言中的一种重要概念,它允许开发者将 Java 对象转换为字节流,以便在网络上传输或存储在文件中。对象串行化的优点是可以将复杂的对象结构转换为简单的字节流,...

    MFC 文档串行化

    在MFC中用Serialize函数实现读取文档中的数据,同时用Serialize函数实现文档中的数据的存储

    PHP串行化与JSON

    简单来说,串行化即将变量转换成字节流的过程。串行化的提出,有效的解决了对象的保存和传输的问题,举例来说,我在JavaScript中建立了一个对象,我现在想将这个对象保存到服务器端的数据库中,那么我如何进行操作呢...

    .NET使XML串行化易如反掌

    XmlDocument 类能让你像处理文件... 串行化数据既能够让你像处理文件一样对数据进行随机存取, 同时又能够跳过你不感兴趣的元素. 在本文中, 将展示如何使用XmlSerializer类以及如何在你的类中添加属性来控制串行化过程.

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

    C# 对象串行化输入输出 演示代码 C#对象串行化输入输出演示代码,载入BMP位图,输出格式为.ser的文件,有空好好研究一下。

    Java 串行化(序列化)Serializable/Externalizable

    NULL 博文链接:https://zhycaf.iteye.com/blog/982092

Global site tag (gtag.js) - Google Analytics