Difference between revisions of "Thrift"

From air
Jump to navigation Jump to search
 
(14 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
 
https://thrift.apache.org/
 
https://thrift.apache.org/
   
  +
=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).
   
  +
[[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 :
Thrift est un langage spécifique, dévloppé initialement par Facebook, pour définir une interface de composant logiciel, ce qui permet une communication entre les composant logiciel qui peuvent ne pas être dans le même langage ni même sur la même machine.
 
   
  +
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 14:04, 9 April 2016

https://thrift.apache.org/

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).

ThriftArchitechture.png

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.)

Liens

https://en.wikipedia.org/wiki/Apache_Thrift