Thrift: Difference between revisions
No edit summary |
|||
(14 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
https://thrift.apache.org/ |
https://thrift.apache.org/ |
||
=Introduction= |
|||
⚫ | |||
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]] |
|||
https://thrift.apache.org/ |
|||
=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 |
|||
Thrift is an interface definition language and binary communication protocol[1] that is used to define and create services for numerous languages.[2] It is used as a remote procedure call (RPC) framework and was developed at Facebook for "scalable cross-language services development". It combines a software stack with a code generation engine to build services that work efficiently to a varying degree and seamlessly between C#, C++ (on POSIX-compliant systems[3]), Cappuccino,[4] Cocoa, Delphi, Erlang, Go, Haskell, Java, Node.js, OCaml, Perl, PHP, Python, Ruby and Smalltalk.[5] Although developed at Facebook, it is now an open source project in the Apache Software Foundation. The implementation was described in an April 2007 technical paper released by Facebook, now hosted on Apache.[6] |
|||
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.) |
|||
Andrew Prunicki. "Apache Thrift: Introduction". http://www.ociweb.com/: Object Computing Inc. – An Open Solutions Company. Retrieved 2011-04-11. Through a simple and straightforward Interface Definition Language (IDL), Thrift allows you to define and create services that are both consumable by and serviceable by numerous languages. Using code generation, Thrift creates a set of files that can then be used to create clients and/or servers. In addition to interoperability, Thrift can be very efficient through a unique serialization mechanism that is efficient in both time and space. |
|||
=Liens= |
|||
https://en.wikipedia.org/wiki/Apache_Thrift |
https://en.wikipedia.org/wiki/Apache_Thrift |
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.)