WCFサービスを使用するデスクトップアプリケーションがあります。私は、非同期WCF呼び出しを実装すると、使い勝手が向上しています。WCFサービスクライアントの初期化戦略
私の質問は、サービスクライアントを初期化するベストプラクティスは何ですか?
資格を持つ単一の静的オブジェクトとパブリックメソッドGetClient()
が存在し、これはすべての呼び出しの前にnew ServiceClient
を作成していました。
using (var svc = ServiceClientFactory.GetClient()) {
var data = svc.CallMethod(...);
some_application_context.specific_attribute = data;
}
ので、任意の呼び出しの前に、作成された新しいクライアント、操作が終了したとのデータが使用された受信直後に破壊されました:アプリケーションでは、一般的にこのような構成を用いました。
私の質問です:すべての呼び出しの前にクライアントコンストラクタを呼び出すのがベストプラクティスですか?
私は、起動時に一度初期化され、アプリケーション終了時に一度破棄される単一の静的クライアントオブジェクトを作成しようとしましたが、想定されるパフォーマンスの向上はありません。
それはうまくいくようですが、単一のクライアントを使用する際の非常に明白な障害はありませんか?そして、何がお勧めですか?
'mService.State' - それが障害物でした、私は求めていました – obratim