2016-04-05 7 views
1

私はwcfサービスホスト(コンソールアプリケーション)とクライアントover NetTCPBindingを持っています。 私の要求では、ホストがダウンして頻繁に立ち上がります。クライアントがホストを処理し、ホストが1分ごとにチェックする必要があります。 1. WS-ディスカバリー 2.サーバー 3. pingの方法でのIsAliveなど 4.ポーリングWCFクライアントWCFホストが起動して動作しているかどうかを確認しますか?

private static bool IsConnectionUp() 
     { 
      _logClient = new LogClient(); 

       try 
       { 
        _logClient.Open(); 
        return true; 
       } 
       catch (FaultException exception) 
       { 
        if (_logClient.State == CommunicationState.Faulted) 
        { 

         _logClient = new LogClient(); 
        } 
        return false; 
       } 


     } 

    Main() 
    { 
    while (IsConnectionUp()!=true) 
       { 
        IsConnectionUp(); 
       } 
    } 

提案してくださいいない場合は実行するコードの良い方法の上記作品。

私は、クライアントからホストに対して継続的にポーリングしたいと思います。私が採用できる最良の方法です。 ありがとう

答えて

0

危険な接続が既存のコードから漏れています。 WCFのdisposeパターン(WCFチームのAPI設計エラーのために通常のパターンではありません)を実装する必要があります。

接続を開いても、必ずしも可用性をテストするわけではありません。私はあなたの束縛が何を開くのか分からない。私は、HTTPベースのバインディングはまったく何もしないと思う。私は、基盤となるHttpWebRequestインフラストラクチャに要求を出さずに接続を開くように要求することはできないと考えています。

これを行う最善の方法は、テストメソッド(例:void Ping() { })を実装することです。短いタイムアウトを使用し、リソースを破棄します。

抑制されていないループも危険です。これは基本的にサービス拒否攻撃です。