私はWCFサーバーとクライアントアプリケーションを作成しました。サーバー側では、アプリケーションがいつ実行されているかを知る必要があります。WCFサービスの可用性
私は、WCFのメソッドを作成し、このようにそれを呼び出そうとしている:
var myEndpoint = new EndpointAddress(url); //I generate HTTP url to endpoint here
var myBinding = new WSHttpBinding { Security = { Mode = SecurityMode.None } };
var myChannelFactory = new ChannelFactory<IMycontract>(myBinding, myEndpoint);
ISqlExpressSyncContract client = null;
try
{
client = myChannelFactory.CreateChannel();
client.IsAvailable();
((ICommunicationObject)client).Close();
return true;
}
catch (Exception)
{
if (client != null)
{
((ICommunicationObject)client).Abort();
}
return false;
}
コードは動作しますが、それは利用できないときにタイムアウトが長すぎます。私はここにhttp://msdn.microsoft.com/en-us/magazine/ee335779.aspxを提供するようなUDP発見を使ってみました。しかし、クライアントが利用できない場合にも同じ問題があります。
各クライアントを高速にpingしてその可用性ステータスを確認するロジックを実装する最も良い方法は何ですか?