0

Intel Compiler、OpenCV などを使用した非常に複雑な C++ 画像処理エンジンがあります。現在、C# 相互運用レイヤーを介して製品に統合されています。これは非常に薄いため、速度パフォーマンスにはほとんど影響しませんリクエストあたりのミリ秒)。現在、システムを CentOS に移行することを計画しています (まだ Windows プラットフォームをサポートしています)。歴史的に、私は Mono をあまり信頼していません。JNI にも問題があるため、最も論理的な解決策は、純粋な C++ 実装に移行することです。

次の機能を移植する必要があることを考えると、あなたの意見は良い考えですか?

1) ファイルシステム 2) JSON 3) スレッド 4) ストーム / カフカ / RabbitMq 5) XML 6) Log2Cxx

ところで、私はおそらく Qt について考えました。UI は必要ありませんが、ファイルシステム、スレッド、XML、そしておそらく JSON をカバーします。

どうもありがとう、パベル

4

2 に答える 2

1

クレジット カードによる支払いが Qt コアを実行するシステムによって処理された可能性が非常に高いため、正しい方向に進んでいます。

Qt はモジュール式です。サーバーでは GUI も使用できますが、GUI を除外するモジュールがいくつか必要です。たとえば、いくつかの画像をペイントしてクライアントに送り返すのは非常に簡単です。可能な限り Qt を使用し、Qt が必要なものを提供せず、単純な方法で実装できない場合にのみ Boost に頼ることをお勧めします。Qt と boost のどちらにするか迷っている場合は、多くのグルー コードが必要になるため、全体が必要以上に機能することになります。

Qt にはロギング メカニズム自体がありません。デバッグ出力用の機能がいくつかありますが、実際のロギングが必要な場合はさらに多くの機能が必要です。ファイル システム、json、スレッド化、ネットワーキング、イベント キューを使用したオブジェクト間の通信、および/またはシグナルスロット接続をカバーしています。また、ストリーミング XML パーサーも備えています。プロジェクトを log2xx と統合できます。Qt はそれを提供しないため、耐久性のあるメッセージング インフラストラクチャも統合する必要があります。メッセージングに関する限り、必要なものだけを実装する方が簡単であることに気付くかもしれません。

ほとんどのフレームワークでは、スレッド コントローラーはスレッドでユーザー コードを開始するための手段にすぎないため、スレッド化の速度オーバーヘッドについて尋ねるのは少し無意味です。スレッドが作成されると、実行時のオーバーヘッドはありません。すべては、スレッドで実行するコードに依存します。

したがって、質問したいのは、スレッドで通常「実行」するコードは何ですか? のデフォルト実装で提供されるイベント ループのみを実行することが理想的ですQThread。イベント ループは、他のスレッドからメッセージを投稿している場合にのみ、他のスレッドと同期します。とにかく、これはスレッド間通信の他の実装が行うことなので、余分な Qt 固有のオーバーヘッドはありません。次に、QObjects を実行するスレッドに移動します (または、そのスレッドで既に実行されているコードを作成します)。

悪名高いブロック データベース インターフェイスのように、ブロックするサード パーティ コードをカプセル化する必要がある場合は、すべてのデータベース接続を独自のスレッドに配置する必要があります。これは、Qt を使用するかどうかに関係なく当てはまるため、特別なことは何もありません。

Qt の XML と json の実装は合理的ですが、他の何よりも劣る理由がわかりません。

プロジェクトに真剣に取り組んでいるなら、Digia の顧客になるでしょう。提供されるサポートのレベルや安定性についてなど、あなたの質問にきっと答えてくれるはずです。

プロジェクトに Qt を使用する利点の 1 つは、Qt がクロス プラットフォームであることです。つまり、Linux または Windows サーバーで実行できます。サードパーティによるインストール用のシステムの場合、これは重要な考慮事項になる可能性があります。

于 2013-09-05T19:54:06.683 に答える
0

Qt にはロギング メカニズムがあるため、Log2Cxx もカバーする可能性があります。私の知る限り、Qt 5.0 で JSON を解析できます。QJson は別の代替手段です。チェックアウトできます。

http://qjson.sourceforge.net/usage/

Qt のほかに、必要に応じて C++ で使用する最初のライブラリであるため、Boost ライブラリをお勧めします。

于 2013-09-05T19:36:30.833 に答える