代码之家  ›  专栏  ›  技术社区  ›  masoud ramezani

在编程语言中,序列化概念的含义是什么?

  •  34
  • masoud ramezani  · 技术社区  · 16 年前

    在编程语言中,序列化概念的含义是什么?

    当我们使用 Serializable 属性高于一个类,这是什么意思?

    5 回复  |  直到 7 年前
        1
  •  76
  •   Dave Mackey chem1st    11 年前

    假设您有两个应用程序在两个不同的物理机器上运行。两个应用程序都需要交换两个应用程序常用的数据。这些应用程序通过相互对话与某些媒体共享数据,这些媒体可以是文件系统、TCP或UDP连接或任何其他合适的网络协议,也可以是直接内存数据交换。这些媒介中的任何一个都只能理解以一系列位的形式描述的数据。因此,当一个应用程序需要向另一个应用程序发送值10时,值10将作为二进制表示1010发送,并且您还将传递一些描述1010的信息。这个元信息也是一系列其他应用程序可以容易理解的位。不过这很容易。

    让我们再举一个例子,其中这两个应用程序需要交换更复杂的非原始数据类型。假设他们需要交换Book类型的对象,其中Book是应用程序中自定义的类,并且两个应用程序都有Book类型的定义。

    public class Book
    {
        Book() { }
    
        public long BookId { get;set; }
        public string Author { get;set; }
        public string Title { get;set; }
    }
    

    您将如何在两个应用程序之间交换Book类型的对象?为了能够在两个应用程序之间共享对象,您需要能够将Book对象转换为二进制表示。这就是序列化进入图片的地方。

    借助序列化,您可以定义如何将对象转换为其二进制表示形式。接收应用程序将执行相反的过程,即反序列化,从其二进制表示形式构造Book对象。

        2
  •  19
  •   Pieter Germishuys    16 年前

    没有比维基百科更好的解释了。

    在计算机科学中,在 数据存储和传输, 序列化是 转换数据结构或对象 变成一个比特序列,这样它就可以 存储在文件或内存缓冲区中, 或通过网络传输 要“恢复”的连接链接 以后在同一台或另一台计算机中 环境。

    http://en.wikipedia.org/wiki/Serialization

    此外,不能对方法使用可序列化属性。 由属性用法指示

    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Delegate, Inherited = false)]
    
        3
  •  9
  •   Pranay Rana    16 年前

    序列化是将对象转换为 字节流。反序列化是 从字节流创建对象。

    序列化/反序列化主要用于传输 对象(例如,在远程处理期间)或持久对象(例如 到文件或数据库)。序列化可以定义为 将对象状态存储到存储器的过程 培养基。在此过程中,公共和私人领域 对象和类的名称,包括 包含类的程序集被转换为 字节,然后写入数据流。当 对象随后被反序列化,它是 创建原始对象。

    有关此的详细信息: http://www.allinterview.com/showanswers/20627.html

        4
  •  1
  •   Ajay Pandit    11 年前

    序列化是将数据结构或对象状态转换为可存储格式的过程。

        5
  •  0
  •   Siva    7 年前

    为什么需要序列化?

    在COBOL或C等程序语言中,没有序列化的概念。我们为什么要在OOP中使用它?让我们使用Java。您有一个类,它正在实例化多个名为对象的类,您希望通过面向消息的中间件以字节流的形式通过网络传递这些对象的状态(变量的当前值),并且需要序列化和反序列化。 如果多种语言都同意这种字节流格式,那么序列化甚至可以为不兼容的系统提供交换数据的方法。