ITLAB – Laboratorio IT

SOA (Service Oriented Architecture), Web 2.0, Open Source e Java.

  • Feed

    Feed ITLAB

  • Chi sono

    Mi chiamo Andrea Gumina. Sono laureato in Scienze dell'Informazione e lavoro per un'azienda di consulenza IT. Da qualche anno mi occupo di integrazione di sistemi, di SOA (Service Oriented Architecture) da poco meno di tre.

  • Bookmarks

  • Licenza

  • Statistiche

Da Facebook un nuovo IDL: Thrift

Pubblicato da Andrea Gumina su 7 Febbraio 2009

L’IDL (Interface Description Language) è un linguaggio con cui descrivere interfacce; vi si ricorre quando si desidera esporre – solitamente in modalità RPC (Remote Procedure Call) – un componente software ad altri sistemi, anche se sviluppati con linguaggi di programmazione diversi. L’IDL è paragonabile ad una lingua franca tra linguaggi di programmazione differenti: tipi semplici e complessi, parametri di input e di output, operazioni, ecc. espressi secondo il linguaggio di programmazione dei sistemi coinvolti, sono tutti ricondotti ai corrispondenti costrutti dell’IDL, che diviene così il linguaggio comune per questa comunicazione. CORBA (IDL) e WSDL sono esempi di IDL.

Facebook, tempo fa, ha aperto il codice dell’IDL che usa al suo interno: Thrift.

Thrift è quindi un linguaggio con cui definire interfacce: tipi semplici e complessi, tipi strutturati e operazioni con parametri di input e di output. Con il compilatore che include, si genera poi, a partire dalle interfacce così descritte, data-bindings e stubs, lato server e client.

Thrift è indipendente da trasporto, protocollo e serializzazione: non ne impone di specifici ma ne stabilisce l’interfaccia in modo da poter essere adattato o esteso. Di alcuni trasporti (file, memoria, socket e pochi altri) ne include l’implementazione.

Thrift, infine, è compatibile sia in avanti che all’indietro: i campi non attesi ma presenti nel pacchetto serializzato sono semplicemente ignorati, quelli attesi, ma non presenti, lasciati vuoti e il fatto segnalato. Questa caratteristica è soddisfatta sia per le strutture che per i parametri dei metodi; potrebbe però non essere garantita nel caso in cui un server obsoleto non riceva un campo rimosso da un nuovo client.

Thrift nasce da esigenze ben precise: l’interoperabilità tra un certo numero di linguaggi (Java, C++, PHP, Python e altri), la generazione automatica del codice di “traduzione” tra formati d’interscambio e nativi, il volersi sottrarre all’aggiornamento contemporaneo di tutti i sistemi e il desiderio di concentrarsi sulla logica di business piuttosto che sui dettagli d’infrastruttura.

Facebook impiega Thrift in un elevato numero di sistemi, tra cui: ricerca, logging, gestione degli annunci pubblicitari e applicazioni mobili.

Thrift è un progetto Open Source ospitato su Apache.

—-><—-

Hai trovato questo articolo interessante? Segui il feed e commenta!

Lascia un commento

XHTML: Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>