C#用ライブラリ
Thrift.dllの作成
thriftはバイナリディストリビューションが無いため、ソースからライブラリをビルドする必要がある。 以下ではthrift-0.8.0(2012/8最新版)を、Microsoft Visual C# 2010 Express(無料版)でコンパイル・利用する例。
http://thrift.apache.org/からtar.gzを取得して展開。thrift-0.8.0というフォルダが作成されたものとする。このフォルダ以下にread only属性がついていたらすべてはずすこと。
- Visual C#の「プロジェクトを開く」で、thrift-0.8.0\lib\csharp\src\Thrift.csprojを指定する(Thrift.slnは開けないので注意)。
- 変換ウィザードが起動するので、バックアップ不要で完了。変換ログを表示させると、Thrift.csprojのみが変換され、他は変換無し。
- プロジェクトプロパティで対象フレームワークを指定する。
- ソリューションエクスプローラーからプロジェクトをビルドする。slnファイルを保存しろと言われるので、そのまま上書き保存。
- thrift-0.8.0\lib\csharp\src\bin\Releaseにthrift.dllが作成されている。
Thrift.dllのテスト
ここでは既にthriftのIDL定義から、C#クライアントコードが生成されているものとする。これをコンソールアプリケーションから呼び出してみる。
- Visual C#の「新しいプロジェクト」で「コンソールアプリケーション」を選択。
- 参照設定の「参照の追加」で先のThrift.dllを指定。右クリックしてオブジェクトブラウザーで表示させると、Thriftgが追加されている。
- デフォルトで作成されているProgram.csに「using Thrift;」を追加してビルドすると、「型または名前空間名'Thrift'が見つかりませんでした」というエラー。オブジェクトブラウザーからも消える。
プロジェクトのターゲットを「.NET Framework 4 Client Profile」から「.NET Framework 4」に変更する。以下を参考
この状態でビルドするとエラーは消える。
C#クライアントのテスト
この状態で、thrift-IDLから生成されたC#クライアントをソースツリーに追加する。ビルドするとエラー無しで実行可能。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Thrift; using Thrift.Transport; using Thrift.Protocol; using sample; // サービスのnamespace namespace ConsoleApplication1 { class Program { static void Main(string[] args) { TTransport transport = new TSocket("localhost", 9090); TProtocol protocol = new TBinaryProtocol(transport); Interface.Client client = new Interface.Client(protocol); // サービス transport.Open(); string s = client.getSomething(); // サービスメソッドの呼び出し System.Console.WriteLine(s); System.Console.ReadLine(); } } }