In una parola: prestazioni.
La serializzazione automatica si basa su Reflection. Anche se questo offre un'ottima esperienza del programmatore, perché un serializzatore funziona per molti tipi, si ottiene un notevole calo di prestazioni perché si utilizza Reflection per eseguire tutti i lavori pesanti.
Poiché i serializzatori personalizzati possono essere personalizzati in modo specifico per i tipi serializzati, è possibile scriverli senza utilizzare la reflection e ottenere significativi miglioramenti delle prestazioni. Il compromesso, ovviamente, è che i serializzatori personalizzati richiedono uno sforzo significativamente maggiore per scrivere.
Puoi controllare il funzionamento della serializzazione automatica utilizzando la serializzazione attributi , quindi il tweaking del comportamento di serializzazione non è davvero un motivo convincente per scrivere un serializzatore personalizzato.
I serializzatori personalizzati possono anche essere utilizzati per gestire il controllo delle versioni tra gli oggetti; vedi questo articolo .