Thrift: Difference between revisions
Line 4: | Line 4: | ||
Thrift est un langage spécifique, dévloppé initialement par Facebook en C++, pour définir une interface de composant logiciel, ce qui permet une communication entre les composants qui peuvent ne pas être dans le même langage ni même sur la même machine. |
Thrift est un langage spécifique, dévloppé initialement par Facebook en C++, pour définir une interface de composant logiciel, ce qui permet une communication entre les composants qui peuvent ne pas être dans le même langage ni même sur la même machine. |
||
Il fourni des abstraction claires pour le transport de donnée et la sérialisation des données. Fourni aussi de nombreuses implementations de style de server (comme threadPoolServer or nonBlockingServer). |
|||
[[File:thriftArchitechture.png]] |
[[File:thriftArchitechture.png]] |
Latest revision as of 12:04, 9 April 2016
Introduction
Thrift est un langage spécifique, dévloppé initialement par Facebook en C++, pour définir une interface de composant logiciel, ce qui permet une communication entre les composants qui peuvent ne pas être dans le même langage ni même sur la même machine. Il fourni des abstraction claires pour le transport de donnée et la sérialisation des données. Fourni aussi de nombreuses implementations de style de server (comme threadPoolServer or nonBlockingServer).
Fonctionnement
Une fois thrift installé sur la machine on peut créer un fichier .thrift qui défini les services implémentés par le serveur qui seront appelés par le(s) client(s). Un fichier .thrift contient des données et des services. Ce fichier servira ensuite à générer un fichier dans un langage spécifié qui rendra accessible un certain nombre de services.
Exemple de fichier .thrift :
namespace java exemple //pour générer du code java namespace py exemple //pour générer du code python service AditionService { i32 add(1:i32 x1, 2:i32 x2), }
Ce simple fichier permet, via la commande : "thrift --gen <language> <Thrift filename>", de générer du code <language> permettant une communication entre un server et un client qu'il faudrait maintenant instancier. (Sachant que le client pourrait être en python et le server en java.)