2009-08-19 21 views

回答

10

IIRC:

红宝石马歇尔不能保证在不同的Ruby版本或在不同的平台上使用相同版本的Ruby工作。

因为您可能有不同的Ruby版本访问相同的序列化列,所以Rails使用YAML实现了序列化。尽管速度较慢,但​​确保您的序列化列可以被其他Ruby版本,其他操作系统上的ruby以及其他编程语言读取。

4

Marhshalling和序列化都是描述相同基本原理的通用术语。根据定义,任何能够将对象及其相关子结构编码成能够被保存的东西的过程,以致在稍后的时间点可以将其恢复的称为序列化或编组(marshalling)。

有这些条款如何区别有点澄清,但通常是相同的,在维基百科条目:http://en.wikipedia.org/wiki/Marshalling_(computer_science)#Comparison_with_serialization

用Ruby方面的具体不同之处在于内置模块元帅是供任何应用程序,而ActiveRecord序列化支持特定于Rails平台。

由于ActiveRecord有自己的紧密集成的序列化方法,通常最好使用它。

+2

我发现ActiveRecord序列化与Marhal相比非常慢。 – collimarco 2009-08-20 08:48:49