Apache Thrift

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 8 februarie 2021; verificările necesită 5 modificări .
Apache Thrift
Tip de cadru RPC
Dezvoltator Apache Software Foundation
Scris in C++
Sistem de operare Software multiplatformă
Prima editie 14 aprilie 2012 [1]
ultima versiune 0.16.0 (9 februarie 2022 ) ( 09.02.2022 )
Licență Licență Apache 2.0
Site-ul web thrift.apache.org
 Fișiere media la Wikimedia Commons

Thrift (din  engleză  -  „thrift”, pronunțat ca [θrift] ) este un limbaj de descriere a interfeței care este folosit pentru a defini și crea servicii pentru diferite limbaje de programare. Este un cadru pentru apelul de procedură la distanță (RPC). Folosit de Facebook ca un serviciu scalabil de dezvoltare în mai multe limbi. Combină o conductă cu un motor de generare de cod pentru a dezvolta servicii care funcționează mai mult sau mai puțin eficient și ușor între limbaje precum [2] C# , C++ , Cappuccino , Cocoa , Delphi , Erlang , Go , Haskell , Java , OCaml , Perl , PHP , Python , Ruby , Rust , Smalltalk și JavaScript [3] . Pur și simplu, Thrift este un protocol de comunicare binar . Din aprilie 2007, a fost dezvoltat ca proiect open source al organizației non-profit Apache Software Foundation .

Arhitectură

Thrift include o conductă de software gata făcută, constând din șase straturi, pentru lucrul cu părțile client și server. Nivelul superior este codul de descriere Thrift generat. Serviciile generează codul client și server din acesta. Spre deosebire de tipurile încorporate, structura de date generată este returnată ca rezultat în codul generat. Protocolul și straturile de transport fac parte din biblioteca de rulare . În Thrift este posibil să selectați servicii și să schimbați protocolul și transportul fără a recompila codul. În plus față de partea client, Thrift include o infrastructură de server pentru comunicare și transport prin protocol în blocking, non-blockingși multi-threadedservere. Cadrul stratului I/O este implementat diferit pentru diferite limbi.

Protocoale acceptate

Transportatori acceptați

Servere acceptate

Beneficii

[patru]

Apache Thrift Protocol tampon
Dezvoltator Facebook, Apache Google
Limbi acceptate C++, C#, Dart, D, Go, Haskell, Java, JavaScript, Python, PHP, XSD, Ruby, Perl, Obiectiv C,

Erlang, Ruby, Smalltalk, OCaml, Haskell

C++, C#, Dart, Go, Java, JavaScript, Python, PHP, Objective C, Ruby
Formate de ieșire Binar, JSON Binar
Tipuri simple bool
octet 16/32/64
de biți întregi șir
dublu secvență de octeți map<t1,t2> list<t> set<t>




bool
numere întregi pe 32/64 de biți
float șir
dublu secvență de octeți proprietăți repetate funcționează ca niște liste


constante da Nu
Tip compozit struct mesaj
Excepții da Nu
Documentație problematic Bun
Licență Apache Stilul BSD
Extensii de tip compozit Nu da

Crearea unui serviciu Thrift

Thrift este scris în C++, dar codul poate fi scris în mai multe limbi. Pentru a crea un serviciu Thrift, trebuie mai întâi să scrieți fișiere Thrift care îl descriu, apoi să generați cod în limbajul de ieșire și să specificați comenzile pentru a porni serverul, apoi să le apelați în client. Iată un exemplu de fișier de descriere:

enumerare PhoneType { acasă , MUNCĂ , MOBIL , ALTE } struct Phone { 1 : i32 id , 2 : număr șir , 3 : PhoneType _ }

Thrift va genera cod din acest fișier de descriere, de exemplu în Java. PhoneTypeva fi o enumerare simplă (enum)în cadrul POJO pentru clasa Telefon.

Literatură

  • Randy Abernethy. Ghidul programatorului pentru Apache Thrift. - Manning Publications Company, 2015. - ISBN 978-1-61729-181-4 .

Note

  1. https://projects.apache.org/json/projects/thrift.json
  2. Apache Thrift - Limbă și matrice de caracteristici . Preluat la 11 martie 2019. Arhivat din original la 8 martie 2019.
  3. Apache Thrift - Javascript . thrift.apache.org. Consultat la 13 octombrie 2016. Arhivat din original pe 9 octombrie 2016.
  4. Thrift vs Protocol Bufffers vs JSON Arhivat 7 noiembrie 2015 la Wayback Machine , MirthLab LLC, 2009

Link -uri