Problématique d'échange de données
On souhaite transmettre une donnée structurée (c'est à dire composée d'un ensemble de données élémentaires) entre deux programmes.
Pour cela, on a le choix entre deux types de transfert :
Transfert binaire
Avantages
- Rapide, car on ne doit pas transformer la structure de données.
- Compacte, car on utilise seulement le nombre de bits nécessaires au codage de l'information.
Inconvénients
- Un humain ne peut pas facilement lire et comprendre le message échangé. Il faut donc développer un outil de décodage de la structure binaire pour débugger la communication ou utiliser des formats d'échange normalisé pour lesquels les outils ont déjà été développés.
- La structuration binaire ne doit pas utiliser de pointeurs car les adresses en mémoire sont propres à une machine (et ne sont donc pas transmissibles).
- Le langage utilisé doit donner accès à la forme binaire des variables pour la transmettre via le moyen de communication choisi entre les deux programmes.
- Si on n'utilise pas le même langage dans les deux programmes ou la même version du compilateur (ou interpréteur) ou le même type de microprocesseur, cela risque de ne pas fonctionner car la structuration binaire pourrait ne pas être exactement la même.
Bilan
Le format binaire est adapté à l'envoi de données structurées en fichier (correspondant à une norme). Par exemple une image jpg (ou png, ...), un son wav (ou mp3, ...), une vidéo.
Transfert texte
Avantages
- On peut transmettre à la fois la structuration des données et les données proprement dites en même temps
- Un humain peut facilement lire et comprendre le message échangé.
Inconvénients
- Ajoute un temps de traitement supplémentaire pour la conversion binaire vers texte à l'émission et text vers binaire à la réception.
- La représentation des donnée sous une forme textuelle (codé ensuite en ASCII) utilise plus de bits (et donc de bande passante) qu'en binaire.
- Il faut définir une syntaxe permettant de séparer les valeurs, qui ont été retranscrites en texte, et d'indiquer le type de ces valeurs.
Bilan
Grâce à l'utilisation d'une norme telle que XML ou JSON, toute la difficulté liée à la structuration du fichier texte est déjà pris en compte.
En langage Python, une bibliothèque JSON contient déjà le code nécessaire à la sérialisation (binaire vers texte) et à la dé-sérialisation (texte vers binaire) des données.