Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Sérialisation en C# au format binaire avec ZeroFormatter

Par Nicolas MOUGINOT Publié le 24/05/2019 à 19:03:01 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Introduction

Le but de cet article et de vous faire connaitre la librairie ZeroFormatter qui permet de sérialiser et de déserialiser très rapidement des objets en C#.

Dans l'introduction nous allons parler de deux points fondamentaux pour introduire le sujet, en premier lieu, définir la sérialisation et par la suite, donner ces utilisations courante.

La sérialisation est la transcription d'une donnée d'un format dans un autre, pour faire un parallèle, on pourrait dire que l'on traduit un livre d'une langue dans une autre. Les informations dans le livre ne changent pas, on les lit différemment. Bien sûr, en informatique il y a un but derrière cette transformation autre que la compréhension du plus grand nombre.

La sérialisation à plusieurs utilités, en voici une liste non exhaustive :

  • Enregistrer des données

  • Échanger des données avec d'autres applications

  • Échanger des données sur le réseau

  • Sauvegarder l'état d'un objet ou d'une information variable pour pouvoir le/la recrée si besoin.

Il y a bien plus d'utilisation que ça à sérialisation mais le but de cet article n'est pas de faire un descriptif complet celle-ci. Les principales utilisations sont donc la compression (diminuer la taille des données), la sécabilité (pouvoir couper en petit paquet d'informations une donnée, utiliser pour le réseau) et le changement de format (JSON, XML ... pour pouvoir faciliter la communication entre des applications)

ZeroFormatter est une librairie qui permet de faire de la sérialisation au format binaire. Il y a deux grands types de sérialisation, la sérialisation au format texte, et celle au format binaire.

- La sérialisation au format texte est souvent utilisé pour communiquer avec d'autres applications comme des API par exemple. Les formats les plus courant sont le JSON et le XML.

- La sérialisation au format binaire est utilisé pour compresser des données ou les transmettre sur un réseau.

Sommaire

  • Création d'un projet et installation de ZeroFormatter

  • Utilisation de ZeroFormatter

  • Conclusion

  • Sources

Création d'un projet et installation de ZeroFormatter

Pour avoir un résultat concret de l'utilisation de ZeroFormatter nous allons faire un projet console basique avec une Classe User.

Si vous n'avez aucun IDE d'installer, je vous conseil Visual Studio Community : https://visualstudio.microsoft.com/vs/community/

Pour crée un nouveau projet console, Fichier => Nouveau => Projet ... (ou Ctrl+Maj+N)

Dans la barre de recherche en haut à droite (ou Ctrl+E) rechercher : Application console (.NET Core) Visual C#

Une fois votre projet créé, vous pouvez installer ZeroFormatter très simplement en écrivant dans la Console du gestionnaire de package " Install-Package ZeroFormatter -Version 1.6.4 " (Avec la bonne version qui est indiquée sur ce site : https://www.nuget.org/packages/ZeroFormatter)

Pour ouvrir la Console du gestionnaire de package sur visual studio, il faut allez dans le menu Outils => gestionnaire de package NuGet => Console du gestionnaire de package

Vous pouvez aussi rechercher "Console" dans la barre de recherche en haut à droite (ou Ctrl+Q)

Utilisation de ZeroFormatter

Pour exploiter la librairie ZeroFormatter, on utilise les MetaData. Voici un exemple de MetaData sur une classe :

Dans notre projet console avec ZeroFormatter installé, nous allons créer une nouvelle classe nommée User (Ctrl+Maj+A).

Dans cette classe il vous faudra ajouter un attribut FirstName, un attribut LastName et un attribut Age. Vous pouvez aussi ajouter un attribut FullName qui permettra de retourner le FirstName et le LastName.

Maintenant nous allons ajouter les MetaData pour que notre classe soit sérialisable :

Explication syntaxique des balises de metaData utilisée :

[ZeroFormattable] Permet d'indiquer que la classe User implémente les pré-requis pour être sérialisé par ZeroFormatter.

[Index (x)] Permet d'indiquer et d'ordonner les éléments sérialisés.

[IgnoreFormat] Permet d'indiquer que cet attribut ne doit pas être sérialisé.

Pour avoir un affichage plus clair des objets dans la console, nous pouvons Redéfinir la méthode ToString() de notre class User:

Maintenant nous allons enfin pouvoir sérialiser des objets de type User.

Il y a que deux méthodes très simple à utiliser, ZeroFormatterSerializer.Serialize(User user); pour sérialiser et ZeroFormatterSerializer.Deserialize<User>(Utilisateur1Serialiser); pour désérialiser.

Vous pouvez télécharger le projet complet ici => https://www.mediafire.com/file/kzqhnl656uewzhe/ProjetExempleZeroFormatter.7z/file

Conclusion

Maintenant vous connaissez les bases de la sérialisation avec ZeroFormatter ! Cet article a pour objectif d'être un premier pas dans l'utilisation de cette librairie, il est volontairement court et ne rentre pas dans les détails. Si vous avez besoin ou envie d'utiliser cette librairie de façon plus poussée, tous les liens sont dans la partie sources. De plus, ZeroFormatter fonctionne aussi sur Unity, c'est un plus pour les gameDev =)

Sources

Page GitHub de ZeroFormatter : https://github.com/neuecc/ZeroFormatter

MetaData :

https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.metadatatypeattribute?view=netframework-4.8

Informations sur la sérialisation:

- https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/serialization/

- https://en.wikipedia.org/wiki/Serialization#Uses

- https://www.tutorialride.com/csharp/serialization-deserialization-in-c-sharp.htm

- https://www.guru99.com/c-sharp-serialization.html

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels