La strategia di serializzazione è parte di un abi?

2

Secondo semver , la versione principale di un componente deve essere aggiornata quando abi - il cambiamento del cambiamento è incorporato. Wikipedia fa un buon lavoro nel descrivere come abi definisce l'interazione tra diversi componenti e include tipi di dati nella sua definizione. Ma non sono sicuro che quella definizione includa oggetti serializzabili (astrattamente, non un'interfaccia orribile di Java).

Se la strategia di serializzazione non è inclusa nella definizione e viene apportata una modifica a detta strategia tra versioni secondarie, allora posso immaginare i seguenti scenari:

  • La macchina che esegue v1.0 effettua una chiamata remota per eseguire la macchina v1.1 e la chiamata fallisce.
  • Il server con ampi aggiornamenti persistenti della coda di lavoro dalla v1.0 alla v1.1 e la coda non possono più essere elaborati.

Inoltre, se la modifica al formato può essere fatta in un modo compatibile con le versioni precedenti, non cambia qualcosa?

    
posta David Cowden 13.03.2015 - 00:14
fonte

1 risposta

3

I dati serializzati sono, beh, dati. Se si interrompe il supporto per i file di input che prima funzionavano o si modificavano i file di output in modo da interrompere i programmi esterni, si tratta di una modifica incompatibile all'indietro. Se i file di input precedentemente funzionanti sono ancora supportati e le modifiche ai file di output sono tali da non interrompere i programmi esterni (o non ci sono programmi esterni), si tratta di una modifica compatibile con le versioni precedenti. Ciò vale per qualsiasi file e formato di dati, indipendentemente dal fatto che le cifre di "serializzazione" siano state create.

Come molte modifiche API e correzioni di bug, questo è un po 'complicato: quasi tutto ha il potenziale per interrompere alcuni use case , comunque oscuro, anche se tecnicamente non influenza l'API documentata. I formati di serializzazione sono in genere non documentati, ma (per buone ragioni!) In genere l'aspettativa è che i dati serializzati di versioni precedenti possano essere letti, a meno che non siano esplicitamente e chiaramente indicati diversamente. La violazione di questa aspettativa sarà considerata una modifica all'indietro incompatibile e nessuna quantità di hairsplitting ti salverà dalla collera dei tuoi utenti.

Se il formato di serializzazione è documentato (anche se solo come "è un file pickle "), il caso è ancora più chiaro. Hai documentato che il file è in quel formato; cambiare il formato in un modo che rompe i lettori precedentemente compatibili è retrocompatibile. Tieni presente che è possibile modificare un formato di file senza rompere i lettori, purché la modifica non sia troppo radicale e il formato originale sia stato progettato tenendo presente l'estensione.

    
risposta data 13.03.2015 - 00:39
fonte

Leggi altre domande sui tag