私は新しいクライアント サーバー アプリ (.Net) を開発しており、これまで WCF を使用してきました。これは、アプリの要求応答アプローチに適しています。ただし、これをソケットベースのソリューションに置き換えるように求められました。これは、.Net 以外のクライアントと、将来の pub-sub/broadcast 要件を部分的にサポートするためです (WCF が可能であることは認識していますが、決定の背後には他の要因があります)。独自の非同期ソケット ソリューションの作成に惨めな失敗をしたので、今は ZeroMQ に注目しています。
クライアント アプリには、サーバーから定期的にデータを要求するバックグラウンド スレッドがいくつかあります。さらに、特定の UI アクション (ボタンのクリックなど) は、サーバーへのメッセージをトリガーすることができます。WCF はこれを簡単にしました - コードはシングルトン WCF サービス プロキシで関連するメソッドを呼び出すだけでした (実際には、非同期呼び出し機能を提供するキャッスル ウィンザー WCF 機能を使用していますが、それはおそらく私の質問には関係ありません)。
特にソケットの管理に関して、このアプローチがZeroMQにどのように変換されるかはよくわかりません-私はZeroMQに非常に慣れておらず、まだガイドを読んでいます。各スレッド (つまり、2 つの b/g スレッドと UI) に個別のソケットが必要になると言っているのは正しいですか? ソケットの有効期間について - 送受信するたびに作成するか (おそらく非効率的)、スレッドの開始時にソケットを作成し、スレッドの有効期間全体で再利用しますか?