2009-08-19 20 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