スポンサーリンク

このドキュメントの内容は、以下の通りです。

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
  • 例外
thrift で扱う基本のデータ型は、以下のとおりです。
すべての言語で使える主要な型です。

  • 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-04-04-1] [2012-04-03-1] [2012-04-02-1] [2012-04-01-1] [2012-03-31-1]

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 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

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー