質問

サービスはあなたにサービス参照を使用する方法、WCFである典型的なクライアント・サービス・アプリケーションでは、

例えば、個別に各呼び出しのためにあなたにインスタンス化サービスを行う、またはあなたにオープンいずれかを実行し、クライアントアプリケーションの寿命を通してそれを維持しますか? (私は「instatiatingサービス」に参照のうえだとき、私はsvcutilによって作成されたインスタンス化サービスオブジェクトを意味する)

それは速く、常に、開口部を作成し、それぞれ、すべてのコールのためのサービスを閉じるよりも見えたが、それはOKだった場合、今、私はさまようため、今のところ、私たちは、クライアント上のサービス・インスタンスを使用しましたか?このアプローチの私たちが持っている主な問題は、タイムアウトが発生(または私達は10hrsのために開かれたセッションを持っている必要があります)という接続が切断などであり、我々は常に必ずすべてが大丈夫です...作るためにチャネルを介して「IsAliveの」を実行する必要があります

(ヘッダに認証トークンを挿入することによって)、それはアプリはシングルスレッドである任意の関連性情報、及び認証は、カスタム構築されている場合。結合(実際にはこの場合のために重要ではありません、またはWS)basicHttpです。

役に立ちましたか?

解決

個人的に私はちょうどメソッド呼び出しが戻るまでオープンしてからクローズそれ自由なリソースへのチャネルを維持することを好みます。それはすべての最もクリーンなアプローチです。プロキシインスタンスを初期化するたびにはミリ秒単位の問題であり、私のパフォーマンス目標に影響を与えることはありません。

ServiceClientシングルトンのいくつかの種類を持つことは面白いアイデアですが、あなたが述べたように、それは私が確かにスマートなアプローチをだことないけど、あなたのアプリがシングルスレッドであるため、それはいけないので、副作用の多くが付属しています大きな問題になると、あなたは、おそらく若干のパフォーマンス上の利点を持っています。

ミリ秒を保存すると、ミッションクリティカルであるならば、あなたもあなたからのインスタンスを取得することができることをServiceClientsのプールを持つことができます。

はしかし、第1のアプローチはクリーンです。複雑性が悪いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top