2011-06-30 19 views
1

arhitecture:WCFの二重サービスを含むデュプレックスWCFサービスチャネル(WSDualHttpBinding)

  1. コンソールアプリケーション。
  2. windows app consumers;すべてのアプリはDuplexに加入していますので、サブスクライバのリストを持っています サービスはいくつかのイベントが発生した場合に通知を送信する必要があります。

問題:

  1. サービスは、クライアントに通知を送信できるように、継続的に生きて接続を維持するためにどのように?

このバインディングには2つのチャネルがあることがわかりました。私はサービスから(コールバック用の)チャネルを永久に開く必要があります。

ありがとうございます。

答えて

0

クライアントがサービスに接続されている限り、コールバックチャネルは有効です。クライアントが切断されると(またはチャネルに障害が発生すると)、コールバックチャネルが閉じます。

+0

こんにちはTim、ありがとう。クライアントが接続されていて、フォルトが発生していない状態でチャンネルを生き続けるためには、どのような方法が有効か(24/24)を教えてください。 –

+0

タイムアウト値を高く設定することはできますが、他の問題(リソース制約など)を実行することができます。常にクライアントを接続させる必要があるのは何ですか?クライアントがリスナーとして働くことを望んでいるように思えますが、WCFがそのための適切なモデルであるかどうかはわかりません。私の理解では、クライアントはサービスとのやりとりを完了するために必要な時間だけ生きています。サービス自体は、ホストマシンが稼働している限り(WindowsサービスがWCFサービスホストを実行しているなど)、実行されるように設定できます。 – Tim

+0

はい、リスナーとして機能しています。ありがとう。 WCFでない場合は、どのデザインが最適ですか? –

4

私はあなたと同じ問題を抱えていました。それを解決するには、キープアライブメソッドを実装する必要があります。あなたのサービスへのダミーコールは、実際にはWCFの最善のアーキテクチャの方法ではないので、24/7 WCFサービスを持つのは馬鹿げたものですが、時には必要なものが常に最善のものではないことがわかります。

だから、ちょうど5分ごとにWCFサービスへの呼び出しを実装して、接続を維持してください。たぶんあなたも他の問題を抱えている可能性があります。私のケースでは、WCFサービスの購読者がたくさんいないので、このソリューションは問題ありませんでした。

関連する問題