Locked History Actions

thrift/CS

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();
        }
    }
}