add SDi/IOT_Technologies/serialisation
This commit is contained in:
1 parent
5da923e68b
commit
295a0844be
1 file changed
+84
-6
@@ -2,7 +2,7 @@
|
|||||||
IOT Technologies
|
IOT Technologies
|
||||||
</h1></header>
|
</h1></header>
|
||||||
|
|
||||||
## Serialisattion
|
# Serialisattion
|
||||||
Sérialiser est nécessaire pour deux principales raisons :
|
Sérialiser est nécessaire pour deux principales raisons :
|
||||||
|
|
||||||
1. **Communication entre systèmes :** Lorsque des objets résident en mémoire vive (RAM) et doivent être échangés avec
|
1. **Communication entre systèmes :** Lorsque des objets résident en mémoire vive (RAM) et doivent être échangés avec
|
||||||
@@ -13,7 +13,7 @@ transmises efficacement.
|
|||||||
les stockant dans une mémoire persistante (comme le stockage de masse). La sérialisation permet de traduire ces objets
|
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.
|
en un format pouvant être stocké et récupéré ultérieurement.
|
||||||
|
|
||||||
## Basé texte ou binaire
|
# Basé texte ou binaire
|
||||||
- **Encodage des données :**
|
- **Encodage des données :**
|
||||||
- **Texte :** Les données sont encodées sous forme de flux de caractères imprimables (comme dans XML ou JSON).
|
- **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.
|
- **Binaire :** Les données sont encodées sous forme de flux d'octets, sans nécessiter de représenter les caractères imprimables.
|
||||||
@@ -22,12 +22,12 @@ en un format pouvant être stocké et récupéré ultérieurement.
|
|||||||
- **Texte :** Lisible par les humains, facilite le débogage. Cependant, peut être moins compact, nécessitant plus de bande passante.
|
- **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.
|
- **Binaire :** Plus compact, nécessite moins de bande passante. Cependant, illisible pour les humains, compliquant le débogage.
|
||||||
|
|
||||||
### Sérialisation basée texte
|
## 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.
|
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
|
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.
|
formats binaires, nécessitant plus de bande passante.
|
||||||
|
|
||||||
#### XML (eXtensible Markup Language)
|
### 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
|
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
|
à 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.
|
des informations sur Internet. XML est un format de données ouvert et indépendant du logiciel et du matériel.
|
||||||
@@ -78,7 +78,7 @@ La validité d'un document XML peut être vérifiée en le comparant à un sché
|
|||||||
```
|
```
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Exemple</summary>
|
<summary><b><u>Exemple</u></b></summary>
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<?xml version="1.0" encoding="ASCII"?>
|
<?xml version="1.0" encoding="ASCII"?>
|
||||||
@@ -111,13 +111,91 @@ En résumé, XML offre une syntaxe flexible pour décrire des données structur
|
|||||||
interprétable par les machines, facilitant l'échange d'informations entre systèmes hétérogènes.
|
interprétable par les machines, facilitant l'échange d'informations entre systèmes hétérogènes.
|
||||||
|
|
||||||
|
|
||||||
#### JSON (JavaScript Object Notation)
|
### 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
|
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
|
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
|
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
|
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.
|
langage d'échange de données idéal.
|
||||||
|
|
||||||
|
1. **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.
|
||||||
|
|
||||||
|
2. **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.
|
||||||
|
|
||||||
|
3. **Imbrication :**
|
||||||
|
Les objets et les tableaux peuvent être imbriqués pour créer une structure hiérarchique et représenter des données complexes.
|
||||||
|
|
||||||
|
4. **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.
|
||||||
|
|
||||||
|
5. **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.
|
||||||
|
|
||||||
|
6. **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.
|
||||||
|
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b><u>Exemple</u></b></summary>
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
***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 :
|
||||||
|
|
||||||
|
1. **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.
|
||||||
|
|
||||||
|
2. **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é.
|
||||||
|
|
||||||
3. **Compacité et Efficacité :**
|
3. **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
|
Les données sérialisées avec Protobuf sont plus compactes que d'autres formats textuels comme JSON. Cela les rend plus
|
||||||
|
|||||||
Reference in new issue
Block a user