Rest Term

Thriftでバイナリデータを扱う

Pocket

Thriftでバイナリデータをやりとりする方法。

以前、FlexでXML-RPCを利用していた時は、確かbase64にエンコードして返していたと思うので、
Thriftでも同様にバイナリデータはbase64にエンコードして返すようにします。
Thriftのソースを漁っていると TBase64Utils とかいうのを見つけたのですが、
どうせboost必須なフレームワークなのでboostを使ってエンコードしてみます。

インタフェースとして、
・サービス名を Test
・プロシージャ名を returnImage
・引数は画像ファイル名、戻り値はbase64エンコード文字列
を定義します。

画像ファイルを読み込んで、base64にエンコードするだけの処理です。
boostでbase64にエンコードする方法は以下のサイトを参考にさせていただきました。
B Lifeで行こう: boostでbase64のエンコード

ここではハンドラの部分のみ、自動生成部分は省略します。

次にクライアントを今回はPHPで書きます。
RPCで受け取ったbase64エンコード文字列をimgタグに埋め込んで画面に表示します。

こんな感じで一応上手く表示まで行うことができました。

サーバ側で画像処理を行った後、出力画像をクライアントに返す時などに使えます。
楽な方法なんですが、大きな画像データをやりとりするのには向いてないですね;;
もうちょっと良い方法を探してみます。

・関連記事
Thrift + OpenCV
Thrift::例外処理
Thriftインストール

あわせて読む:

Pocket

 

Tags: ,

Comments

No comments so far.

  • Leave a Reply
     
    Your gravatar
    Your Name