タイトルにあるように、私はC ++で書かれたWindowsアプリを持っており、そこからリモートのThriftサービスを呼び出す必要があります。正直なところ、この件については少し迷っています。http://wiki.apache.org/thrift/ThriftInstallationWin32には、「ThriftC++ランタイムライブラリは現在Windowsでは機能しません」と記載されています。それは私が運が悪かったことを意味しますか、それとも回避策がありますか?
3 に答える
自分のアプリ用に Thrift を Windows/C++ に移植しました。オープンソースなので、他の人は自由に利用できます: http://peoplesnote.codeplex.com/SourceControl/list/changesets
エレガントな解決策ではないかもしれませんが、少なくともうまくいくはずです:
Thrift Wiki によると、C# バインディングがありますが、実際には .NET バインディングと呼ぶ必要があります。C# 固有のものは何もありません。したがって、通信ライブラリを C++/CLI dll ライブラリに実装し、アンマネージ コードからその .dll を参照することができます。
そのページはかなり簡単に見えます。彼らは Thrift コンパイラの作り方を教えてくれますが、それからのメタコードは Windows ではコンパイルできないと明言しています。
したがって、誰かに Windows でのコンパイル方法を理解してもらうまでは、運が悪いことになります。
正直なところ、Cygwin は Windows で UNIX ソースをコンパイルするために必要なすべての機能を備えているため、これがそれほど大きな問題になるとは思えません。かなり難解な UNIX 機能を使用しているに違いないとしか言いようがありません。
ここから取るべきアプローチはいくつかあります。
1/ Apache Incubator に入ったので、Windows をサポートする計画があるかもしれません (見つけられませんでしたが)。それが本当にオープン ソースであり、その必要性が特定された場合、誰かがランタイムを Windows に移植し始める可能性があります。お待たせしない場合がございます。
2/ 世界が別のRPC メカニズムを必要とした理由は、私には理解できません。ただし、既存の RPC メカニズム (SUN/ONC) の 1 つまたは独自の RPC プロトコルを使用して、Windows ボックスから UNIX ボックスに通信し、Thrift 経由で RPC を転送することができます。しかし、これはお世辞であり、私は原則からそれをしません。
それ以外は、私が提案できることはあまりありません、申し訳ありません。幸運を祈ります。