3

これは当然の質問かもしれませんが、そうでないかもしれません。ボタンを押すたびに、リモート WCF サービスで異なる関数が呼び出される GUI コントロール アプリケーションを想像してみてください。ボタンの使用頻度は、約数秒間隔です。一般に、関数呼び出しごとに WCF チャネルを開いて閉じるか、アプリケーションの有効期間中チャネルを開いたままにするのが最善ですか? もちろん、このアプリケーションのインスタンス化はわずかしかないと仮定します。

注意。この質問は実際には例に関するものではありませんが、ここでのベストプラクティスを理解するのに役立ちます.

4

2 に答える 2

2

すべての呼び出しの前にクライアント プロキシを再作成する必要がないようにできる場合は、パフォーマンスに確実に役立ちます。

ただし、そうする場合は、サーバー側のすべての例外が適切に処理され (おそらくIErrorHandlerサービスにインターフェイスを実装することによって)、SOAP 障害に変換されることを確認する必要があります。これは、チャネルに障害を起こすことなくクライアントに転送できます。

単一の例外が回避され、「通常の」.NET 例外としてクライアントに送り返された場合、チャネル (クライアントとサーバー間の通信リンク) に障害が発生します。つまり、役に立たなくなります。

このような場合、最初にその状態を確認する必要があります (チャネルには.Stateプロパティがあります)。障害のあるチャネルが発生した場合は、メソッドを呼び出す前にクライアント プロキシを再作成する以外にできることはありません。

于 2010-01-06T05:56:18.273 に答える
1

チャネルを開いたままにすることはお勧めしませんが、チャネルを物理的に閉じる/開くタイミングを決定するためにWCFを残しておくことをお勧めします。同じクライアントオブジェクトを何度も使用することで、リソースを節約できます。2つのスレッドが同時に使用しないようにしてください(2つのボタンを同時にまたは次々に押すことができる場合)。

于 2010-01-09T02:37:39.470 に答える