什么是对象序列化和反序列化?(What are object serialization and d

2019-08-03 06:45发布

什么是对象序列化反序列化

并系列化与喜欢阅读对象的属性,然后填充一个DataRow的列与他们终于节省DB DataRow中正常的技术有什么区别?

Answer 1:

序列一般是指创建版本,可以(可能在文件中)被用于存储的数据(而不是对象)的,用于转移在网络上,或者只是用于之间处理/传送AppDomain上的单个的/ etc机。

序列化通常是指作为一个字符串(认为:XML / JSON)写入数据或作为原始二进制(一个byte[]等)。 反序列化是相反的过程; 取原始数据(从一个文件,从进入的网络套接字等),并重建所述对象模型。

使用DB之间的区别在于,它没有内在的表格布局,并没有真正的领带的数据库; 数据可以是任何形状,并趋于比对表的行/列性质更紧密地映射到面向对象的布局。

大多数平台上有一系列的序列化工具。 例如,它听起来就像你在谈论.NET -这样BinaryFormatter (.NET专用), XmlSerializerDataContractSerializer ,Json.NET和protobuf网/ DOTNET-protobufs将所有符合条件。



Answer 2:

系列化=把对象的相关状态转变成可流表示。 这可能意味着将其转换为字节流。 这并不包括复制每一个成员变量到流。 即在有效的Java使用由Joshua布洛赫典型的例子是一个HashSet。 你只想序列化HashSet中的元素,但没有钥匙。

反序列化=从串行表示恢复的对象,保证了对象的不变量。 反序列化可以被认为是该对象的单独构造。 在上面你提到将创建一个新的HashSet,然后插入从流值到这个新的数据结构中的HashSet的情况。



Answer 3:

序列化意味着,你坚持你的对象成表示,你可以在一些地方保存。 这样做的一个办法就是把鼠标指针到你的对象存储在存储器中,因为它是一个文件的每一个字节写。 因为这表示是非常具体的编程语言(以及它如何代表了内存中的对象),得以改善,将是你的对象转换为具有一定众所周知的结构(如XML或JSON)的字符串表示,这样你能够

一)转让更容易

B)保存和恢复更容易

C)由于大家都知道的格式是如何定义的,任何其他程序可以读取你的对象,太

所以,把你的对象到数据库的序列化只是另一种形式了。

反序列化意味着,你可以加载/从那里将它保存到再次还原该对象。



Answer 4:

序列化,通常,在运行时写一个对象的状态到磁盘(但它可以在任何地方),并能再次阅读它的过程。

有效地,存储一个对象的属性到一个表是序列化的一种形式。

在.NET中,还有其他的形式:

  • XmlSerialization
  • BinarySerialization

你可以弥补自己的。

但在一般情况下,如果你的地方保存对象的状态,然后再阅读它放回在运行时一个“活”的对象,你是连载的。



Answer 5:

序列化

序列化是一个对象或一组对象的图表转换成流的过程。

反序列化

反序列化是流转换回对象或一组对象图的处理。

下面是一些自定义的属性:

[OnDeserialization] - >据时,我们需要的流的反序列化过程执行一些动作使用。 [OnDeserialized] - >它是一个当我们需要执行一些动作反序列化流成一个对象后使用。 如正确设置对象的字段值

下面是例子

 [Serializable]
    internal class DemoForSerializableAndDeserializable
    {
        internal string Fname = string.Empty;
        internal string Lname = string.Empty;

        internal Stream SerializeToMS(DemoForSerializableAndDeserializable objDemo)
        {
            DemoForSerializableAndDeserializable objSer = new DemoForSerializableAndDeserializable();
            MemoryStream ms = new MemoryStream();
            BinaryFormatter bf = new BinaryFormatter();
            bf.Serialize(ms, objSer);
            return ms;
        }

        [OnDeserializing]
        private void OnDeserializing(StreamingContext context)
        {
            // Do some work while deserializing the stream
        }
        [OnDeserialized]
        private void OnSerialized(StreamingContext context)
        {
            Fname = "abc";
        }

    }

长途区号

class CallingCode
    {
        string fname = string.Empty;
        string Lname = string.Empty; 

       static void Main(string[] args)
        {
            DemoForSerializableAndDeserializable demo = new DemoForSerializableAndDeserializable();

            Stream ms = demo.SerializeToMS(demo);
            ms.Position = 0;

            DemoForSerializableAndDeserializable demo1 = new BinaryFormatter().Deserialize(ms) as DemoForSerializableAndDeserializable;

            Console.WriteLine(demo1.Fname);
            Console.WriteLine(demo1.Lname);
            Console.ReadLine();
        }

    }


文章来源: What are object serialization and deserialization?