Formato di serializzazione: serializzazione binaria e JSON
I dati della cache quando trasmessi sulla rete devono essere serializzati. Il processo di serializzazione attraversa gli oggetti esistenti, estrae i dati e li converte in dati serializzati. I dati vengono quindi trasmessi sulla rete e il processo di deserializzazione legge i dati serializzati. L'intero processo di serializzazione/deserializzazione richiede molti fattori come tempo, memoria, prestazioni, ecc. Questi fattori devono essere tenuti presenti quando si sceglie un formato per la serializzazione.
Note:
Questa funzionalità è disponibile anche in NCache Professional.
Esistono due tipi di formati di serializzazione forniti da NCache:
- Serializzazione binaria
- Serializzazione JSON
Note:
Si consiglia di utilizzare la serializzazione JSON se si utilizza ASP.NET 5.0 e versioni successive. Per maggiori dettagli clicca qui.
Serializzazione binaria
Nel formato binario, gli oggetti utente (ad esempio l'oggetto Prodotto) vengono serializzati dal lato client e archiviati sul lato server nella stessa forma. Ogni volta che un articolo viene richiesto dal server, il client riceve il formato binario dell'articolo che viene quindi deserializzato localmente nell'oggetto Product. Inoltre, la serializzazione/deserializzazione avviene solo sul lato client e solo una volta durante il recupero o l'aggiunta dei dati: deserializzata durante il recupero e serializzata durante l'aggiunta. Ciò consente di risparmiare sui costi di serializzazione/deserializzazione, il che è evidente, soprattutto nei casi in cui vengono aggiunti o recuperati dati consistenti dalla cache.
Il formato binario è utile se la maggior parte dell'elaborazione avviene sul lato client e le operazioni eseguite sono come aggiunta, aggiornamento, recupero e rimozione dalla cache. Ad esempio, un oggetto Product serializzato viene recuperato dalla cache per visualizzarne il contenuto. Utilizzando il formato binario, l'elemento deve essere deserializzato solo una volta raggiunto il client, mantenendo così al minimo i costi di elaborazione. Nel caso in cui venga utilizzato il formato Object, il server serializzerà l'oggetto Product e lo invierà al client che poi lo deserializzerà. Ciò aumenta il sovraccarico complessivo e il costo della serializzazione e della deserializzazione.
Allo stesso modo, se un oggetto viene aggiunto alla cache utilizzando il formato binario, verrà serializzato prima di essere inviato in rete e verrà archiviato così com'è.
Serializzazione JSON
Note:
Questa funzione è disponibile in NCache Impresa ed Piloti.
JSON è la sintassi basata su testo per l'archiviazione e lo scambio di dati. È abbastanza un formato più semplice da analizzare per le macchine e da comprendere per gli utenti. Utilizzando la serializzazione JSON, gli oggetti vengono convertiti nell'equivalente JSON al momento della serializzazione e quindi riconvertiti nei relativi oggetti personalizzati al momento della deserializzazione.
Considera un .NET Prodotto classe contenente i dati dei prodotti. Contiene vari attributi, ad esempio, Nome del prodotto, Codice prodottoe Scadenza prodotto ecc.
Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Sizes = new string[] { "Small" };
Questi dati verranno serializzati nella seguente stringa JSON:
{
"Name": "Apple",
"Expiry": "2008-12-28T00:00:00",
"Sizes":
[
"Small"
]
}
Il serializzatore utilizzato è un'estensione di Newton Soft Serializzatore di terze parti. Può essere un approccio preferibile per la serializzazione compatta e conveniente dei dati. La serializzazione JSON può essere preferita rispetto alla serializzazione binaria per i seguenti motivi:
Memoria efficiente: La memoria è uno dei parametri principali da tenere presente quando si utilizzano set di dati di grandi dimensioni. Il consumo di memoria più grande influisce su altre misure delle prestazioni. La serializzazione JSON influisce su una quantità minore di memoria per l'archiviazione degli oggetti. L'intero set di dati è serializzato come JSON e comporta un ridotto consumo di memoria grazie alle dimensioni significativamente ridotte, migliorando così la comunicazione di rete.
portabilità: La serializzazione JSON offre una maggiore portabilità poiché offre la facilità di serializzare i dati di varie tecnologie nello stesso standard. Il serializzatore JSON serializza dati di tutti i tipi. Ad esempio, se l'utente utilizza la classe Java, il serializzatore JSON serializzerà i dati sotto forma di stringa e li deserializzerà nel tipo definito dall'utente. Questo livello di portabilità non è fornito dalla serializzazione binaria.
Nessuna modifica al codice: Poiché la serializzazione in base al formato JSON è completamente automatizzata, non è richiesta alcuna modifica del codice da parte dell'utente, a meno che non sia necessaria una modifica del codice in base alla propria logica.
Attributi non serializzabili: Ti viene inoltre fornita la possibilità di serializzare gli attributi selettivi e mantenere gli attributi di tua scelta non serializzati utilizzando un metodo chiamato "JsonIgnore" nella tua classe. Ciò significa che il serializzatore ignorerà questi attributi durante la serializzazione dei dati e serializzerà il resto. Questo può essere fatto solo con gli attributi di una classe personalizzata. Si prega di fare riferimento al Newton Soft documentazione per i dettagli. Ad esempio, se l'utente desidera mantenere l'attributo Password come non serializzato,
JsonIgnore
lo contrassegnerà come non serializzabile.
using Newtonsoft.Json;
[JsonIgnore]
public String Password()
{
get;
set;
}
Di seguito è riportato un esempio di una classe personalizzata con un attributo contrassegnato non serializzabile Password. Dopo la serializzazione, la stringa JSON serializzata non conterrà il valore dell'attributo non serializzato.
Account account = new Account
{
FullName = "Joe User",
EmailAddress = "joe@example.com",
Password = "VHdlZXQgJ1F1aWNrc2lsdmVyJyB0byBASmFtZXNOSw=="
};
I dati precedenti verranno serializzati nella seguente stringa JSON.
{
"FullName":"Joe User",
"EmailAddress":"joe@example.com"
}
Tenendo presente i fattori di cui sopra, la serializzazione JSON può portare al raggiungimento di un livello di prestazioni più elevato. Tuttavia, se desideri ottenere una precisione a un livello superiore, utilizza la serializzazione binaria anziché la serializzazione JSON poiché i dati serializzati binari vengono deserializzati in modo più accurato.
Vedere anche
Serializzazione compatta
Classi di registro per la serializzazione compatta
Bridge per la replica WAN
Bilanciamento del carico dei dati