2

2 つのプログラム (1 つの exe と 1 つの dll が別のサードパーティ exe のプロセス空間にロードされている) が、ローカル マシンの wcf サービス (ネット名前付きパイプ バインディングを使用) を使用して相互に要求をやり取りしている状況があります。サービスのホスティングを開始する 3 番目のホスト exe があります。それはすべてうまく機能します (これまでのところとにかく... 私はまだ学んでいます) が、チャネルに障害が発生したり、サービスがタイムアウトになったりした場合に何が起こるかを考えなければなりませんでした。障害をチェックして処理し、チャネルを維持するためのベストプラクティスは何ですか?

私の場合、アプリケーションを開いたままにするか閉じるかはユーザー次第であり、夜間や週末などにアプリケーションを開いたままにする傾向があるユーザーがいます...これは、サービスの障害または損失であり、回復する方法がわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

1

まず、なぜチャンネルを無期限に維持するのですか?

1 日のうちに読み取りたいデータベースに接続しているとします。朝にデータベース接続を作成し、夕方に閉じますか?

互いに数秒以内に複数の呼び出しを行うことがわかっている場合を除き、呼び出しごとに WCF でチャネルを構築するのは比較的安価です。その場合は、チャネルを再利用する必要があります。

編集

この投稿では、その方法について説明します。これは非常に複雑であり、コードでバインディングに巨大なタイムアウト値を設定する方が簡単な場合があります (投稿の最後で提案されているように)。

WCF コールバックのタイムアウトを行う

編集

これについては、Google にたくさんの情報があります: http://bit.ly/10ZPWE2

于 2013-05-16T09:28:52.957 に答える