Thrift とは
スポンサーリンク
このドキュメントの内容は、以下の通りです。
thrift は、 RPC フレームワークです。C++, PHP, Pel, Python, Ruby, Python , Java, JavaScript, Node.js, Haskell, Erlang, Cocoa, OCaml, Delphi などに対応しています。
https://thrift.apache.org/
thrift を使い方は、以下の流れににあります。
- thrift コンパイラをインストールする
- thrift インタフェース .thrift ファイルを作成する
- thrift を用いて、スケルトンを生成する
- スケルトンを利用して、サーバ、クライアントを実装する
thrift コンパイラ
各モジュール間のインタフェースを .thrift ファイルで定義し、 thrift コンパイラで、RPC サーバとクライアントのコードを自動生成できます。
その生成されたコードを用いて、コーディングします。
データ型
インタフェース定義で利用できるデータ型は、以下のとおりです。
- 基本データ型
- 構造体
- コンテナ
- list
- set
- map
- 例外
すべての言語で使える主要な型です。
- bool: ブール値 (true or false)
- byte: 8-bit 符号付き整数
- i16: 16-bit 符号付き整数
- i32: 32-bit 符号付き整数
- i64: 64-bit 符号付き整数
- double: 64-bit 浮動小数点
- string: UTF-8 エンコーディングのテキスト文字列
- binary: 非エンコードバイト列
thrift ファイルから生成する
thrift ファイルからソースコードを生成するには、 thrift コマンドを利用します。
生成したい言語を指定します。
thrift --gen <language> <Thrift filename>
例
Thrift 定義ファイル
struct UserProfile {
1: i32 uid,
2: string name,
3: string blurb
}
service UserStorage {
void store(1: UserProfile user),
UserProfile retrieve(1: i32 uid)
}
Python クライアント
# Make an object
up = UserProfile(uid=1,
name="Test User",
blurb="Thrift is great")
transport = TSocket.TSocket("localhost", 9090)
transport.open()
# Use the service we already defined
service.store(up)
# Retrieve something as well
up2 = service.retrieve(2)
C++ サーバ
class UserStorageHandler : virtual public UserStorageIf {
public:
UserStorageHandler() {
// 初期化
}
void store(const UserProfile& user) {
printf("store\n");
}
void retrieve(UserProfile& _return, const int32_t uid) {
printf("retrieve\n");
}
};
int main(int argc, char **argv) {
int port = 9090;
shared_ptr handler(new UserStorageHandler());
shared_ptr processor(new UserStorageProcessor(handler));
shared_ptr transportFactory(
new TBufferedTransportFactory());
TSimpleServer server(processor,
serverTransport,
transportFactory,
protocolFactory);
return 0;
}
合わせて読む
- [2012-03-31-1] FreeBSD thrift をインストールする
- [2012-04-01-1] FreeBSD php5-thrift をインストールする
参照しているページ (サイト内): [2012-04-04-1] [2012-04-03-1] [2012-04-02-1] [2012-04-01-1] [2012-03-31-1]
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12