序列化概念在编程语言中的含义是什么?
当我们Serializable
在类上面使用属性时,意思是什么?
假设您有两个在两台不同物理机器上运行的应用程序.两个应用程序都需要交换两个应用程序通常使用的数据.这些应用程序相互通信以与某些介质共享数据,这些介质可以是文件系统,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对象.
没有比维基百科更好的解释了.
在计算机科学中,在数据存储和传输的上下文中,序列化是将数据结构或对象转换为比特序列的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输到稍后在相同或另一个计算机环境中"复活".
http://en.wikipedia.org/wiki/Serialization
此外,Serializable属性不能用于方法.由属性用法表示
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Delegate, Inherited = false)]
序列化是将对象转换为字节流的过程.反序列化是从字节流创建对象的相反过程.
序列化/反序列化主要用于传输对象(例如在远程处理期间),或用于持久化对象(例如,到文件或数据库).可以将序列化定义为将对象的状态存储到存储介质的过程.在此过程中,对象的公共和私有字段以及类的名称(包括包含该类的程序集)将转换为字节流,然后将其写入数据流.随后对对象进行反序列化时,将创建原始对象的精确克隆.
更多关于这个:http://www.allinterview.com/showanswers/20627.html