= 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」に変更する。以下を参考 * [[http://d.hatena.ne.jp/trapemiya/20101219/1292734619]] この状態でビルドするとエラーは消える。 == 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(); } } } }}}