Format de sérialisation
Notes
Cette fonctionnalité est également disponible dans NCache Professional.
Les données du cache lorsqu'elles sont transmises sur le réseau doivent être sérialisées. Le processus de sérialisation parcourt les objets existants, extrait les données et les convertit en données sérialisées. Les données sont ensuite transmises sur le réseau et le processus de désérialisation lit les données sérialisées. L'ensemble de ce processus de sérialisation/désérialisation nécessite de nombreux facteurs tels que le temps, la mémoire et les performances, etc. Ces facteurs doivent être gardés à l'esprit lors du choix d'un format de sérialisation.
Il existe deux types de formats de sérialisation fournis par NCache:
- Sérialisation binaire
- Sérialisation JSON
Notes
Il est recommandé d'utiliser la sérialisation JSON si vous utilisez ASP.NET 5.0 et versions ultérieures. Pour plus de détails cliquez ici.
Sérialisation binaire
Au format binaire, les objets utilisateur (par exemple l'objet Produit) sont sérialisés du côté client et stockés côté serveur sous la même forme. Chaque fois qu'un élément est demandé au serveur, le client reçoit la forme binaire de l'élément qui est ensuite désérialisée en objet Product localement. De plus, la sérialisation/désérialisation a lieu côté client uniquement, et une seule fois lors de la récupération ou de l'ajout des données – désérialisée lors de la récupération et sérialisée lors de l'ajout. Cela permet d'économiser le coût de sérialisation/désérialisation, ce qui est notable, en particulier dans les cas où des données volumineuses sont ajoutées ou extraites du cache.
Le format binaire est avantageux si la majeure partie de votre traitement est côté client et que les opérations effectuées sont telles que l'ajout, la mise à jour, la récupération et la suppression du cache. Par exemple, un objet Product sérialisé est extrait du cache pour afficher son contenu. En utilisant le format binaire, l'élément ne doit être désérialisé qu'une fois qu'il atteint le client, réduisant ainsi le coût de traitement au minimum. Si le format Objet est utilisé, le serveur sérialisera l'objet Produit et l'enverra au client qui le désérialisera ensuite. Cela augmente les frais généraux et le coût global de la sérialisation et de la désérialisation.
De même, si un objet est ajouté au cache en utilisant le format binaire, il sera sérialisé avant d'être envoyé sur le réseau et il sera stocké tel quel.
Sérialisation JSON
Notes
Cette fonctionnalité est disponible en NCache Entreprise ainsi que Professional.
JSON est la syntaxe textuelle pour le stockage et l'échange de données. Il s’agit d’un format assez plus facile à analyser pour les machines et à comprendre pour les utilisateurs. Grâce à la sérialisation JSON, les objets sont convertis en leur équivalent JSON une fois sérialisés, puis reconvertis en leurs objets personnalisés au moment de la désérialisation.
Envisagez un .NET Produit classe contenant les données des produits. Il contient divers attributs, par exemple ProductName, ID de produitet Expiration du produit et ainsi de suite
Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Sizes = new string[] { "Small" };
Ces données seront sérialisées dans la chaîne JSON suivante :
{
"Name": "Apple",
"Expiry": "2008-12-28T00:00:00",
"Sizes":
[
"Small"
]
}
Le sérialiseur utilisé est une extension du NewtonSoft Sérialiseur tiers. Cela peut constituer une approche préférable pour une sérialisation compacte et pratique des données. La sérialisation JSON peut être préférée à la sérialisation binaire pour les raisons suivantes :
Mémoire efficace : La mémoire est l’un des principaux paramètres à prendre en compte lors de l’utilisation de grands ensembles de données. La consommation d'une mémoire plus importante affecte d'autres mesures de performances. La sérialisation JSON affecte moins de mémoire pour stocker les objets. L'ensemble des données est sérialisé au format JSON et entraîne une consommation de mémoire réduite en raison d'une taille nettement plus petite, améliorant ainsi la communication réseau.
Portabilité: La sérialisation JSON offre une plus grande portabilité car elle vous offre la facilité de sérialiser les données de diverses technologies dans le même standard. Le sérialiseur JSON sérialise les données de tous types. Par exemple, si l'utilisateur utilise la classe Java, le sérialiseur JSON sérialisera les données sous forme de chaîne et les désérialisera dans le type défini par l'utilisateur. Ce niveau de portabilité n'est pas fourni par la sérialisation binaire.
Aucun changement de code : Étant donné que la sérialisation selon le format JSON est entièrement automatisée, aucun changement de code n'est requis par l'utilisateur, sauf si vous avez besoin d'un changement de code selon votre propre logique.
Attributs non sérialisables : Vous avez également le choix de sérialiser les attributs sélectifs et de conserver les attributs de votre choix non sérialisés en utilisant une méthode appelée « JsonIgnore » dans votre classe. Cela signifie que le sérialiseur ignorera ces attributs lors de la sérialisation des données et sérialisera le reste. Cela ne peut être fait qu'avec les attributs d'une classe personnalisée. Veuillez vous référer au NewtonSoft documentation pour plus de détails. Par exemple, si l'utilisateur souhaite conserver l'attribut Mot de Passe comme non sérialisé,
JsonIgnore
le marquera comme non sérialisable.
using Newtonsoft.Json;
[JsonIgnore]
public String Password()
{
get;
set;
}
Vous trouverez ci-dessous un exemple de classe personnalisée avec un attribut marqué non sérialisable Mot de Passe. Après la sérialisation, la chaîne JSON sérialisée ne contiendra pas la valeur de l'attribut non sérialisé.
Account account = new Account
{
FullName = "Joe User",
EmailAddress = "joe@example.com",
Password = "VHdlZXQgJ1F1aWNrc2lsdmVyJyB0byBASmFtZXNOSw=="
};
Les données ci-dessus seront sérialisées dans la chaîne JSON suivante.
{
"FullName":"Joe User",
"EmailAddress":"joe@example.com"
}
En gardant à l'esprit les facteurs ci-dessus, la sérialisation JSON peut permettre d'atteindre un niveau de performances plus élevé. Toutefois, si vous souhaitez obtenir une précision à un niveau plus élevé, utilisez la sérialisation binaire au lieu de la sérialisation JSON, car les données sérialisées binaires sont désérialisées avec plus de précision.
Voir aussi
Sérialisation compacte
Inscrire des classes pour une sérialisation compacte
Pont pour la réplication WAN
Équilibrage de charge de données