箱から出してすぐに、MSMQ で WCF を使用することを考えたことはありますか? あなたがアーキテクチャを完全に理解しているかどうかはわかりませんが、API のクライアントは、API をホストする別のプロセスをスピンアップする必要があるようです。API ホストを開始してから、クライアントが呼び出しを試行するまでの間に、タイミングの問題が発生する場合があります。Microsoft は最近、.NET Remoting (および ASMX Web サービスなどの他のすべての以前の通信テクノロジ) をレガシーとして廃止し、開発者が WCF プラットフォームに移行することを強く推奨しています。
MSMQ で WCF を使用する場合、タイミングの問題は発生しません。API ホストが実行されているかどうかに関係なく、クライアント アプリケーションは永続的なキューにメッセージをドロップできます。API ホストはいつでも開始でき、キューで待機しているすべてのメッセージを取得して処理します。クライアント アプリケーションで API ホストを起動する場合でも、.NET Remoting ではなくキューイングを使用してメッセージを転送しているため、タイミングの問題は問題になりません。WCF は、MSMQ の優れた便利で使いやすいラッパーを提供するため、参入障壁は比較的低くなります。
.NET Remoting で WCF を使用することのもう 1 つの優れた点は、クライアント アプリを変更することなく、API ホストを別の物理サーバーに簡単に移動できることです。必要に応じて、クライアントまたは API ホスト アプリを変更せずに、別のキュー プラットフォーム (AMQP の RabbitMQ など) に移動することもできます。WCF はそのすべての対話を処理し、クライアント アプリと API ホスト間のより明確な分離と信頼性の高い通信を提供します。
WCF に移行できない場合は、.NET Remoting を使用してポートを明示的に設定できるはずです。API ホストをどのように構成しているかはわかりませんが、特定のリモート オブジェクトの URL は通常、次の形式になっています。
tcp://<hostname>[:<port>]/<object>
ポートを追加すると、Abhijeet のソリューションを使用して、ポートが開いているかどうかを判断できるはずです。WCF の疎結合と信頼できる通信の利点は得られませんが、作業は確実に少なくなります。;)