Archiviazione e mantenimento di oggetti serializzati in C #

8

Quali sono le migliori pratiche per archiviare e mantenere oggetti serializzati in C #? Qualche strategia o schema che si applica?

Quello che ho finito per credere finora è questo:

  • Preferisci Json su XML, sia per lo spazio che per la velocità, ma xml è più facile da interrogare / estrarre dati via LINQ in XML per set di dati più grandi.
  • Per ogni singola proprietà, mappare esplicitamente su un nome serializzato. In futuro, quando è necessario rinominare una proprietà, i dati serializzati non si interromperanno. Gli attributi aiutano con questo.
  • Memorizza qualche tipo di informazioni sulla versione sull'oggetto serializzato, nel caso in cui sia necessario eseguire una migrazione di massa dei dati in futuro

Aggiornamento: (che ho trovato nel modo più duro)

  • Archivia tutti i dati in un modo uniforme nell'intera applicazione e in tutte le versioni. Entrambi relativi al formato e al fuso orario.
posta Mihalis Bagos 24.07.2012 - 11:08
fonte

2 risposte

9

Ho fatto un bel po 'di serializzazione nel corso degli anni. Ecco alcune cose che abbiamo trovato:

  • Preferisci i formati leggibili dall'uomo su formati binari. Generalmente preferisco Xml a Json principalmente perché puoi usare Xslt per trasformare Xml quando devi aggiornare la versione.

  • Qualunque cosa si stia serializzando, la logica di deserializzazione e l'archiviazione dei dati dovrebbero consentire il controllo delle versioni dei dati serializzati. Le informazioni sulla versione dovrebbero probabilmente essere al di fuori dei dati serializzati, rendere più facile l'accesso e scegliere la giusta strategia di deserializzazione.

  • La tua serializzazione dovrebbe avere test unitari in entrambe le direzioni. Sì, dovresti fare un test di deserializzazione dei dati e confermare che tutto viene importato correttamente. E dovresti avere qualcosa di serializzare i dati e confermare che viene fuori come json e xml corretti.

  • Se il punto di detta serializzazione è multipiattaforma, testare l'altra piattaforma. Probabilmente non è tanto un problema ora che le piattaforme sono maturate, ma ci sono stati momenti in cui le cose non erano d'accordo su come json dovrebbe essere formattato.

risposta data 25.07.2012 - 14:17
fonte
4

I punti menzionati sono pratici e buoni da tenere a mente. Vorrei menzionare diversi tipi di serializzazioni che potrebbero essere utili da considerare in base alle esigenze dell'applicazione.

  • Serializzazione binaria - utilizza la codifica binaria per produrre serializzazione compatta per usi come storage o socket-based network corsi d'acqua.
  • Serializzazione XML : serializza i campi pubblici e le proprietà di un oggetto, i parametri e i valori restituiti di metodi, in uno stream XML conforme a uno schema XML specifico documento di definizione della lingua (XSD). Maggiori informazioni sono disponibili in Spazio dei nomi System.Xml.Serialization .
  • Serializzazione SOAP - è un diverso sapore della serializzazione XML, in cui può essere utilizzato per serializzare oggetti in flussi XML che si conformano alle specifiche SOAP. SOAP è un protocollo basato su XML, progettato specificamente per il trasporto delle chiamate di procedura tramite XML. Come con la serializzazione XML regolare, è possibile utilizzare gli attributi per controllare i messaggi SOAP in stile letterale generati da un servizio Web XML.

Ulteriori informazioni formano la fonte ufficiale - Programmazione MSDN C #

Anche tutto questo deve essere una pratica all'interno del processo SDLC (ovvero avere ambiente da testare, controllo della versione, ecc.)

    
risposta data 25.07.2012 - 11:54
fonte

Leggi altre domande sui tag