クレジット カードによる支払いが 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 サーバーで実行できます。サードパーティによるインストール用のシステムの場合、これは重要な考慮事項になる可能性があります。