zoukankan      html  css  js  c++  java
  • Serialization(序列化)机制

    Serialization(序列化)机制

     

    1. Serialization and Deserialization

    Serialization is the process of converting a complex set of data, such as that which is contained in an object, into a single blob that’s often called a byte stream. The reverse, deserialization, is the process of unpacking the byte stream to re-create the complex set of data.

     

    2. Type of Serialization

    Remoting uses a type of serialization that finds all the variables contained within an object, and converts their values into a byte stream.

     

    Web services use a different serialization scheme. Rather than copying the variables within an object, web-services serialization just scans the object to find any fields that are public in scope, and any public properties that are read-write. Read-only and write-only properties are ignored, as are any nonpublic variables.

     

    3. [Serializable()] attribute and ISerializable

    Implementing ISerializable is only necessary if the default behavior of serialization is unacceptable, which isn’t usually an issue.

     

    4. [NonSerialized()] attribute

    Once a class is marked as [Serializable()], all of its member variables will be automatically serialized into a byte stream when the object is serialized. Sometime, however, we can use [NonSerialized()] attribute marks to set some variables that shouldn’t be serialized. In most cases, these will be references to other objects.

     

    The one caveat with doing this is that any code that interacts with the above reference object variables must assume that they could be null. If the object is serialized and deserialized, the [NonSerialzied()] reference object variable will have the value null in the newly created object.

     

    5. Serialization mechanism

    Be aware that Remoting doesn’t transfer the code, but only the data. For this mechanism to work, the DLL containing the required class must be on the client machine along with the client application. In order to deserialize the byte stream on the client, Remoting loads the DLL containing the required class, creates an empty required object, and then populates it with the deserialized data.

     

    ***

    上面关于SerializationDeserialization的阐述来自Rockford LhotkaExpert C# Business Objects》,清楚解释了一些比较容易模糊的概念。

     

     

  • 相关阅读:
    linuxepoll研究 Geek_Ma 博客园
    socklen_t 类型 blueliuyun的专栏 博客频道 CSDN.NET
    自己动手写web服务器一(浏览器的访问信息) 任天胜的个人空间 开源中国社区
    UNIX Domain Socket IPC blueliuyun的专栏 博客频道 CSDN.NET
    How to use epoll? A complete example in C
    gzip头部格式 任天胜的个人空间 开源中国社区
    CWnd与HWND的区别与转换
    MFC 框架各部分指针获取方式
    windows 注册表的编程
    VS2010创建C++项目类向导和智能感知不可用
  • 原文地址:https://www.cnblogs.com/rickie/p/126926.html
Copyright © 2011-2022 走看看