Apache Thrift

IDL usato come framework per chiamate di procedura remota

Apache Thrift è un linguaggio di definizione di interfaccia (IDL) usato per definire e creare servizi per diversi linguaggi informatici[1], in dettaglio, un protocollo di comunicazione binario[2]. È usato come framework per chiamate di procedura remota (RPC) e fu sviluppato presso Facebook per lo "sviluppo di servizi per linguaggi scalabili". Combina un software stack con un motore della generazione di codice per costruire servizi che lavora efficientemente per diversi gradi e senza soluzione di continuità tra Delphi, C#, C++ (su sistemi POSIX compatibili), Cappuccino, Cocoa, Erlang, Go, Haskell, Java, OCaml, Perl, PHP, Python, Ruby, Node.js e Smalltalk[3].

Sebbene sviluppato presso Facebook, ora è un progetto open source presso la Apache Software Foundation. L'implementazione fu descritta in un articolo tecnico reso disponibile su Facebook nell'aprile 2007, ora presente su Apache.

Architettura

modifica

Thrift include uno stack completo per la creazione di client e server. Ad alto livello c'è un codice generato dalla definizione Thrift.

Protocolli supportati

modifica
  • TBinaryProtocol
  • TCompactProtocol
  • TDebugProtocol
  • TDenseProtocol
  • TJSONProtocol
  • TSimpleJSONProtocol

Creare un servizio Thrift

modifica

Creazione di un servizio Thrift in C++:

enum PhoneType {
 HOME,
 WORK,
 MOBILE,
 OTHER
}

struct Phone {
 1: i32 id,
 2: string number,
 3: PhoneType type
}
  1. ^ Andrew Prunicki, Apache Thrift: Introduction, su jnb.ociweb.com, http://www.ociweb.com/, Object Computing Inc. – An Open Solutions Company. URL consultato l'11 aprile 2011 (archiviato dall'url originale il 23 luglio 2011).
    «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.»
  2. ^ Installing and using Apache Cassandra With Java Part 4 (Thrift Client), su sodeso.nl, http://www.sodeso.nl/, Sodeso – Software Development Solutions. URL consultato il 30 marzo 2011 (archiviato dall'url originale il 15 agosto 2010).
    «Thrift is a separate Apache project which is, to put it simply, a binary communication protocol.»
  3. ^ Andrew Prunicki, Apache Thrift: Code Generation, su jnb.ociweb.com, http://www.ociweb.com/, Object Computing Inc. – An Open Solutions Company. URL consultato il 12 aprile 2011 (archiviato dall'url originale il 23 luglio 2011).
    «Thrift supports many languages too varying degrees. The complete list is below. Be careful before assuming that just because your language has some support that it supports all of the features of Thrift. Python for instance, only supports TBinaryProtocol. Cocoa, C++, C#, Erlang, Haskell, Java, OCaml, Perl, PHP, Python, Ruby, and Smalltalk»

Voci correlate

modifica

Altri progetti

modifica

Collegamenti esterni

modifica
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica