8.1 KiB
IOT Technologies
Serialisattion
Sérialiser est nécessaire pour deux principales raisons :
-
Communication entre systèmes : Lorsque des objets résident en mémoire vive (RAM) et doivent être échangés avec d'autres systèmes via des canaux de communication, la sérialisation les convertit en séquences d'octets pouvant être transmises efficacement.
-
Stockage persistant : Parfois, il est nécessaire de conserver des objets au-delà de l'exécution du programme, les stockant dans une mémoire persistante (comme le stockage de masse). La sérialisation permet de traduire ces objets en un format pouvant être stocké et récupéré ultérieurement.
Basé texte ou binaire
-
Encodage des données :
- Texte : Les données sont encodées sous forme de flux de caractères imprimables (comme dans XML ou JSON).
- Binaire : Les données sont encodées sous forme de flux d'octets, sans nécessiter de représenter les caractères imprimables.
-
Lisibilité et Efficacité :
- Texte : Lisible par les humains, facilite le débogage. Cependant, peut être moins compact, nécessitant plus de bande passante.
- Binaire : Plus compact, nécessite moins de bande passante. Cependant, illisible pour les humains, compliquant le débogage.
Sérialisation basée texte
La sérialisation basée texte est généralement utilisée pour les données structurées, comme les documents XML ou JSON. Ces formats sont lisibles par les humains, ce qui facilite le débogage. Cependant, ils sont moins compacts que les formats binaires, nécessitant plus de bande passante.
XML (eXtensible Markup Language)
XML est un langage de balisage qui définit un ensemble de règles pour l'encodage de documents dans un format qui est à la fois humain et machine lisible. Il est largement utilisé pour représenter des données structurées et pour échanger des informations sur Internet. XML est un format de données ouvert et indépendant du logiciel et du matériel.
-
Structure : XML utilise des balises pour définir des éléments structurés. Chaque élément a une balise d'ouverture et une balise de fermeture. Les balises peuvent contenir des données ou d'autres balises.
-
Attributs : Les éléments peuvent avoir des attributs qui fournissent des informations supplémentaires. Les attributs sont définis à l'intérieur de la balise d'ouverture.
-
Hiérarchie : Les éléments peuvent être imbriqués pour créer une structure hiérarchique, formant ainsi un arbre de données.
-
Document XML : Un document XML commence souvent par une déclaration indiquant la version d'XML utilisée. Ensuite, il a un élément racine qui contient tous les autres éléments du document.
-
Namespace : Les espaces de noms (namespace) permettent d'éviter les conflits de noms en associant un préfixe à un espace de noms unique.
-
Caractères d'échappement : Certains caractères spéciaux (comme
<,>,",',&) doivent être échappés pour éviter toute confusion avec la syntaxe XML. -
Validation : La validité d'un document XML peut être vérifiée en le comparant à un schéma XML (XSD) qui définit la structure attendue du document.
Éléments :
<tag>
data
</tag>
Attributs :
<tag attribute="metadata">
data
</tag>
Namespace :
<tag xmlns:f="https://namespace.com/example/">
<f:subtag>
data
</f:subtag>
</tag>
Exemple
<?xml version="1.0" encoding="ASCII"?>
<disco>
<cd style="Classic">
<title>For ever</title>
<artist>Pavarotti</artist>
<songs>
<song appreciation="preferred">
<title>No, la morte</title>
<length>3:50</length>
</song>
<song>
<title>Che voi m 'amate</title>
<length>2:55</length>
</song>
</songs>
<price>30</price>
</cd>
</disco>
En résumé, XML offre une syntaxe flexible pour décrire des données structurées de manière lisible par les humains et interprétable par les machines, facilitant l'échange d'informations entre systèmes hétérogènes.
JSON (JavaScript Object Notation)
JSON est un format de données léger et facile à lire et à écrire. Il est basé sur un sous-ensemble du langage de programmation JavaScript, Standard ECMA-262 3ème édition - Décembre 1999. JSON est un format de données texte qui est complètement indépendant du langage mais utilise des conventions familières aux programmeurs de la famille de langages C, y compris C, C++, C#, Java, JavaScript, Perl, Python et bien d'autres. Ces propriétés font de JSON un langage d'échange de données idéal.
-
Objets et Tableaux : JSON utilise des objets (encadrés par
{}) et des tableaux (encadrés par[]) pour organiser les données. Les objets contiennent des paires clé-valeur, tandis que les tableaux sont des listes ordonnées de valeurs. -
Paires Clé-Valeur : Les données sont représentées par des paires clé-valeur à l'intérieur des objets. Les clés sont des chaînes de caractères, et les valeurs peuvent être des nombres, des chaînes, des booléens, des objets, des tableaux ou null.
-
Imbrication : Les objets et les tableaux peuvent être imbriqués pour créer une structure hiérarchique et représenter des données complexes.
-
Caractères d'Échappement : Certains caractères spéciaux, comme les guillemets doubles (
") et les barres obliques inverses (\), peuvent nécessiter un échappement dans les chaînes de caractères. -
Lecture et Écriture : Les langages de programmation fournissent des fonctions pour convertir des objets ou des chaînes JSON en structures de données utilisables et vice versa.
-
Interopérabilité : JSON est largement utilisé pour l'échange de données entre serveurs et clients, car il est facilement compréhensible et traitable dans de nombreux langages de programmation.
Exemple
{
"disco": [
{
"cd": {
"style": "Classic",
"title": "For ever",
"artist": "Pavarotti",
"songs": [
{
"song": {
"appreciation": "preferred",
"title": "No, la morte",
"length": "3:50"
}
},
{
"song": {
"title": "Che voi m'amate",
"length": "2:55"
}
}
],
"price": 30
}
}
]
}
Syntaxe
En résumé, JSON offre une syntaxe simple et lisible pour représenter des données structurées, favorisant l'interopérabilité entre différentes plates-formes et langages.
Sérialisation Binaire
Les Protocol Buffers, ou Protobuf, sont une méthode de sérialisation binaire développée par Google. Voici une explication simple :
-
Sérialisation Binaire : Protobuf permet de convertir des données structurées, comme des objets, en une séquence binaire. Cela facilite la transmission ou le stockage de ces données.
-
Schéma : Les données sérialisées sont définies par un schéma, qui agit comme un contrat décrivant la structure des données. Ce schéma est écrit dans un langage dédié.
-
Compacité et Efficacité : Les données sérialisées avec Protobuf sont plus compactes que d'autres formats textuels comme JSON. Cela les rend plus efficaces à transmettre sur un réseau ou à stocker.
-
Interopérabilité : Protobuf prend en charge la génération automatique de code dans plusieurs langages de programmation, facilitant l'interopérabilité entre différentes plates-formes.
-
Évolution : Le schéma peut évoluer avec le temps sans casser la compatibilité en ajoutant de nouveaux champs. Cela rend Protobuf flexible pour les applications en constante évolution.
En résumé, Protobuf est une façon efficace et flexible de sérialiser des données structurées en binaire, offrant compacité, interopérabilité et facilité d'évolution.

