Serialization 与XML、CSV等相比,二进制序列化有哪些限制(缺点)?

Serialization 与XML、CSV等相比,二进制序列化有哪些限制(缺点)?,serialization,binary,Serialization,Binary,与XML、CSV等相比,二进制序列化有哪些限制(缺点)? 您能解释一下吗?Unix和Web(历史上)更喜欢文本格式(XML、JSON、YAML等)和协议(HTTP、SMTP等),因为它们更易于调试(和理解),因为您可以在它们上面使用文本工具和编辑器。许多库函数(例如fscanf和fprintf…)都支持文本格式 还有一些工具可能偏向于文本文件(不管这到底意味着什么)。例如,在版本控制系统(如git或svn等)下,可以更有效地管理文本文件。。。(而diff和patch实用程序需要文本数据,并用换行

与XML、CSV等相比,二进制序列化有哪些限制(缺点)? 您能解释一下吗?

Unix和Web(历史上)更喜欢文本格式(XML、JSON、YAML等)和协议(HTTP、SMTP等),因为它们更易于调试(和理解),因为您可以在它们上面使用文本工具和编辑器。许多库函数(例如
fscanf
fprintf
…)都支持文本格式

还有一些工具可能偏向于文本文件(不管这到底意味着什么)。例如,在版本控制系统(如
git
svn
等)下,可以更有效地管理文本文件。。。(而
diff
patch
实用程序需要文本数据,并用换行符分隔行)

文本格式的一个可能缺点是编码/解码可能需要更多的CPU时间和更多的磁盘空间。(但是磁盘空间很便宜,文本数据是可压缩的,瓶颈是真正的I/O)

如果您希望二进制数据在不同处理器或编译器(或系统)之间兼容,则应使用“中性”数据格式(如XDR或ASN1)和序列化库(例如)明确处理

Unix和Web(历史上)更喜欢文本格式(XML、JSON、YAML等)和协议(HTTP、SMTP等),因为它们更易于调试(和理解),因为您可以在它们上面使用文本工具和编辑器。许多库函数(例如
fscanf
fprintf
…)都支持文本格式

还有一些工具可能偏向于文本文件(不管这到底意味着什么)。例如,在版本控制系统(如
git
svn
等)下,可以更有效地管理文本文件。。。(而
diff
patch
实用程序需要文本数据,并用换行符分隔行)

文本格式的一个可能缺点是编码/解码可能需要更多的CPU时间和更多的磁盘空间。(但是磁盘空间很便宜,文本数据是可压缩的,瓶颈是真正的I/O)


如果您希望二进制数据在不同处理器或编译器(或系统)之间兼容,则应使用“中性”数据格式(如XDR或ASN1)和序列化库(例如)明确处理

我脑子里首先想到的是可读性的丧失。XML/CSV格式可以使用简单的ASCII文本编辑器读取,而二进制序列化不能提供这种便利性。您到底想问什么?你有什么想法?什么样的数据,什么样的数据量?我首先想到的是可读性的丧失。XML/CSV格式可以使用简单的ASCII文本编辑器读取,而二进制序列化不能提供这种便利性。您到底想问什么?你有什么想法?什么样的数据,什么样的数据量?但技术方面呢?我的意思是,如果我要在一台使用x86体系结构处理器的PC上序列化某个对象,我可以在另一台使用x64的PC上反序列化该对象吗?要看情况吗?或者在C#上序列化某个对象,在JAVA上反序列化?因为,我怎么想,应该是不同的二进制值;无法保证二进制格式的兼容性。你必须努力才能得到它。但技术方面呢?我的意思是,如果我要在一台使用x86体系结构处理器的PC上序列化某个对象,我可以在另一台使用x64的PC上反序列化该对象吗?要看情况吗?或者在C#上序列化某个对象,在JAVA上反序列化?因为,我怎么想,应该是不同的二进制值;无法保证二进制格式的兼容性。你必须努力才能得到它。