.Net リモート処理と通信するクライアント/サーバー アプリケーションがあります。クライアント側の構成を必要とせずに、クライアントがネットワーク上のサーバーを見つけられるようにする必要があります。
私の知る限り、リモーティングでの検出はサポートされていません。クライアントがブロードキャスト メッセージを介してサーバーを見つけることができる UDP ソリューションを実装する準備ができています。
先に進む前に、集合的なSOの知恵を聞きたい. これが最善の方法ですか?他の提案はありますか?
.Net リモート処理と通信するクライアント/サーバー アプリケーションがあります。クライアント側の構成を必要とせずに、クライアントがネットワーク上のサーバーを見つけられるようにする必要があります。
私の知る限り、リモーティングでの検出はサポートされていません。クライアントがブロードキャスト メッセージを介してサーバーを見つけることができる UDP ソリューションを実装する準備ができています。
先に進む前に、集合的なSOの知恵を聞きたい. これが最善の方法ですか?他の提案はありますか?
このタイプの機能についてはSSDPとUPnPの両方を検討しましたが、カスタムUDPマルチキャストソリューションを使用することをお勧めします。基本的に、マルチキャストはブロードキャストに非常に似ていますが、マルチキャストグループに参加している(つまり、ブロードキャストを要求している)マシンのみが接続されます。
IMHO、SSDP、UPnPは肥大化しており、リソースの検出が非常に複雑です...しかし、これは標準です。;)
必要なのはSimpleServiceDiscoveryProtocolまたはSSDPのようです。これは、Microsoftのユニバーサルプラグアンドプレイのサポートの一部としてWindowsに実装されています。これは業界標準のプロトコルであるため、良い賭けのようです。たとえば、ファイアウォールやその他の問題に対処したい場合、独自のソリューションを展開する代わりに、他の人がこれを理解しているでしょう。
.NETについて話しているので、Windowsを使用していると仮定します。ユニバーサルプラグアンドプレイ(UPnP)クライアントサポートというタイトルのWindows用のCスタイルAPIとCOM APIについて説明しているやや古いドキュメント(2001)があります。COM APIはUPNP.DLLによって公開され、SSDPのCスタイルAPIはSSDPAPI.DLLによって公開されます。
UPNP用のCOMスタイルのAPIがおそらく最善の策です。C#はCOMオブジェクトをラップして、相互運用を処理できるためです。このAPIがC#または.NETFrameworkにネイティブに移植されている場所は見つかりませんでした。
また、Zeroconfの実装であるAppleのBonjourを検討することもできます。Mac、PC、Linux/BSDで利用できます。
最近のMSアップデートのため、私のマルチキャストUDPソリューションは信頼できないようです。
リモート作業で見つけた最善の解決策は、サーバー リストをクライアント システムの構成ファイルに保持し、更新可能にすることでした。メンテナンスは簡単ではありませんが、高速でブロードキャストもありませんでした。