Thrift est une pile logicielle légère et indépendante du langage pour la mise en œuvre RPC point à point. Thrift fournit des abstractions et des implémentations propres pour le transport de données, la sérialisation des données et le traitement au niveau des applications. Le système de génération de code prend en entrée un langage de définition simple et génère du code dans des langages de programmation qui utilisent la pile abstraite pour créer des clients et des serveurs RPC interopérables.
Thrift permet aux programmes écrits dans différents langages de programmation de partager facilement des données et d'appeler des procédures à distance. Avec la prise en charge de 28 langages de programmation, il est probable que Thrift prenne en charge les langages que vous utilisez actuellement.
Thrift est spécifiquement conçu pour prendre en charge les modifications de version non atomiques dans le code client et serveur. Cela vous permet de mettre à niveau votre serveur tout en étant en mesure de servir des clients plus anciens ; ou demandez aux clients les plus récents d'émettre des requêtes vers des serveurs plus anciens. Un excellent article fourni par la communauté sur l'économie et la compatibilité lors de la gestion des versions d'une API peut être trouvé dans le Thrift Missing Guide.
Pour plus de détails sur la conception et la mise en œuvre de Thrift, consultez le livre blanc Thrift inclus dans cette distribution, ou dans le fichier README.md dans le sous-répertoire qui vous intéresse.
Bifurquer | Travis | Fournisseur d'applications | Analyse de couverture | codecov.io | Site web |
---|---|---|---|---|---|
master | |||||
0.17.0 |
Thrift ne maintient pas de calendrier de sortie spécifique pour le moment.
Nous nous efforçons de publier deux fois par an. Téléchargez la version actuelle.
Licence accordée à Apache Software Foundation (ASF) dans le cadre d'un ou plusieurs accords de licence de contributeur. Consultez le fichier AVIS distribué avec cette œuvre pour plus d'informations sur la propriété des droits d'auteur. L'ASF vous concède une licence pour ce fichier sous la licence Apache, version 2.0 (la « Licence » ); vous ne pouvez pas utiliser ce fichier sauf en conformité avec la licence. Vous pouvez obtenir une copie de la licence à
http://www.apache.org/licenses/LICENSE-2.0
Sauf disposition contraire de la loi applicable ou accord écrit, le logiciel distribué sous la licence est distribué « TEL QUEL », SANS GARANTIE OU CONDITION D'AUCUNE SORTE, expresse ou implicite. Consultez la licence pour connaître la langue spécifique régissant les autorisations et les limitations en vertu de la licence.
épargne/
compilateur/
Contains the Thrift compiler, implemented in C++.
lib/
Contains the Thrift software library implementation, subdivided by
language of implementation.
cpp/
go/
java/
php/
py/
rb/
...
test/
Contains sample Thrift files and test code across the target programming
languages.
tutoriel/
Contains a basic tutorial that will teach you how to develop software
using Thrift.
Pour construire de la même manière que Travis CI construit le projet, vous devez utiliser Docker. Nous avons des instructions de construction complètes pour Docker.
Voir http://thrift.apache.org/docs/install pour une liste des exigences de construction (peut être obsolète). Vous pouvez également consulter les environnements de construction Docker pour une liste des prérequis.
Plus d’informations sur Thrift peuvent être obtenues sur la page Web de Thrift à l’adresse :
http://thrift.apache.org
Thrift s'est inspiré de pillar, un outil RPC léger écrit par Adam D'Angelo, ainsi que des tampons de protocole de Google.
Si vous construisez dès la première sortie du référentiel source, vous devrez générer les scripts de configuration. (Ce n'est pas nécessaire si vous avez téléchargé une archive tar.) Dans le répertoire supérieur, faites :
./bootstrap.sh
Une fois les scripts de configuration générés, thrift peut être configuré. Depuis le répertoire supérieur, faites :
./configure
Vous devrez peut-être spécifier explicitement l'emplacement des fichiers boost. Si vous avez installé boost dans /usr/local
, vous exécuterez configure comme suit :
./configure --with-boost=/usr/local
Notez que par défaut, la bibliothèque Thrift C++ est généralement construite avec des symboles de débogage inclus. Si vous souhaitez personnaliser ces options, vous devez utiliser l'option CXXFLAGS dans configure, comme telle :
./configure CXXFLAGS='-g -O2'
./configure CFLAGS='-g -O2'
./configure CPPFLAGS='-DDEBUG_MY_FEATURE'
Pour activer les options requises par gcov, -fprofile-arcs -ftest-coverage, activez-les :
./configure --enable-coverage
Exécutez ./configure --help pour voir d'autres options de configuration
Veuillez noter que la bibliothèque Python ignorera l'option --prefix et s'installera simplement là où les distutils de Python la placeront (généralement dans le sens de /usr/lib/pythonX.Y/site-packages/
). Si vous devez contrôler l'emplacement d'installation des modules Python, définissez la variable PY_PREFIX. (DESTDIR est respecté pour Python et C++.)
Faites des économies :
make
Depuis le répertoire supérieur, devenez superutilisateur et faites :
make install
Désinstaller Thrift :
make uninstall
Notez que certains packages de langage doivent être installés manuellement à l'aide d'outils de construction mieux adaptés à ces langages (au moment d'écrire ces lignes, cela s'applique à Java, Ruby, PHP).
Recherchez le fichier README.md dans le dossier lib// pour plus de détails sur l'installation de chaque package de bibliothèque de langue.
Apache Thrift est disponible via un certain nombre de gestionnaires de packages, une liste qui ne cesse de s'allonger. Un aperçu plus détaillé peut être trouvé sur le site Web d'Apache Thrift sous « Bibliothèques » et/ou dans les fichiers README respectifs pour chaque langue sous /lib.
Il existe un grand nombre de tests de bibliothèque client qui peuvent tous être exécutés à partir du répertoire de niveau supérieur.
make -k check
Cela créera toutes les bibliothèques (si nécessaire) et exécutera les tests unitaires définis dans chacune des bibliothèques clientes. Si une seule langue échoue, la vérification se poursuivra et fournira un résumé à la fin.
Pour exécuter la suite de tests multilingues, veuillez exécuter :
make cross
Cela exécutera un ensemble de tests qui utilisent des clients et des serveurs dans différentes langues.