2009-08-19 4 views

Antwort

10

IIRC:

Ruby-Marshall ist nicht in den verschiedenen Versionen von Ruby oder den gleichen Rubin Versionen auf verschiedenen Plattformen arbeiten garantiert.

Da Sie möglicherweise verschiedene Ruby-Versionen haben, die auf dieselbe serialisierte Spalte zugreifen, implementiert Rails die Serialisierung mit YAML. Obwohl dies langsamer ist, garantiert es, dass Ihre serialisierte Spalte von anderen Ruby-Versionen, Ruby auf anderen Betriebssystemen und auch anderen Programmiersprachen gelesen werden kann.

4

Marshhalling und Serialisierung sind beide allgemeine Begriffe, die das gleiche Grundprinzip beschreiben. Per Definition ist jeder Prozess, der in der Lage ist, ein Objekt und seine abhängigen Unterstrukturen in etwas zu speichern, das so gespeichert werden kann, dass es zu einem späteren Zeitpunkt wiederhergestellt werden kann, Serialisierung oder Marshalling.

Es ist ein bisschen Klarstellung darüber, wie diese Begriffe unterschiedlich sein können, aber sind in der Regel die gleiche, in dem Wikipedia-Eintrag: http://en.wikipedia.org/wiki/Marshalling_(computer_science)#Comparison_with_serialization

Der spezifische Unterschied in Bezug auf Ruby ist, dass das Einbaumodul Marshal verfügbar ist für jede Anwendung, während die Serialisierungsunterstützung von ActiveRecord für die Rails-Plattform spezifisch ist.

Da ActiveRecord über eine eigene eng integrierte Serialisierungsmethode verfügt, ist es im Allgemeinen vorzuziehen, diese zu verwenden.

+2

Ich fand heraus, dass ActiveRecord Serialisierung ist sehr langsam im Vergleich zu Marhal. – collimarco