2009-08-19 13 views

risposta

10

IIRC:

Rubino Marshall non è garantito per funzionare su diverse versioni Ruby o le stesse versioni rubino su piattaforme diverse.

Poiché è possibile che versioni di Ruby diverse accedano alla stessa colonna serializzata, Rails implementa la serializzazione tramite YAML. Mentre questo è più lento, garantisce che la colonna serializzata possa essere letta da altre versioni di ruby, ruby ​​su altri sistemi operativi e altri linguaggi di programmazione.

4

Marhshalling e serializzazione sono entrambi termini generali che descrivono lo stesso principio di base. Per definizione, qualsiasi processo che sia in grado di codificare un oggetto e le sue sottostrutture dipendenti in qualcosa che può essere salvato in modo tale che in un momento successivo possa essere ripristinato, viene chiamato serializzazione o marshalling.

C'è un po 'di chiarezza su come questi termini possono differire, ma sono in genere lo stesso, nella voce di Wikipedia: http://en.wikipedia.org/wiki/Marshalling_(computer_science)#Comparison_with_serialization

La differenza specifica in termini di Ruby è che il modulo incorporato maresciallo è disponibile per qualsiasi applicazione, mentre il supporto della serializzazione ActiveRecord è specifico per la piattaforma Rails.

Poiché ActiveRecord dispone di un proprio metodo di serializzazione strettamente integrato, è generalmente preferibile utilizzarlo.

+2

Ho scoperto che la serializzazione di ActiveRecord è molto lenta rispetto a Marhal. – collimarco