質問

WCFサービスを開始するには、以下を使用します。

selfHost = new ServiceHost(typeof(MyServiceClass));
selfHost.Open();

ある時点で、これはのインスタンスを作成します MyServiceClass. 。リクエストごとに単一のインスタンスまたはインスタンスを作成しますか?

役に立ちましたか?

解決

1つのインスタンスに制限する場合は、外部のサービスクラスをインスタンスして、インスタンスをServiceHostに渡すことができます。

var myservice = new MyServiceClass();
selfHost = new ServiceHost(typeof(MyServiceClass), myservice); // forces singleton pattern
selfHost.Open();

他のヒント

デフォルトでは、リクエストごとにインスタンスですが、これを変更できます。たとえば、自分で書くことができます iinstanceProvider サービスクラスの生活を自分で管理します。

これらの答えはすべて正しいですが、あなたが求めているものよりも複雑に思えます。通話ごと、セッションごとにインスタンスを作成するかどうかの基本は、 instanceContextMode これは、サービスクラスの属性です。そこで読み始めます。

要求ごとにインスタンスを作成します。単一のインスタンスが必要な場合は、静的クラスを使用できます。アプリケーションの寿命には静的クラスが存在します。呼び出しがあるか、新しいWCF接続が行われるたびに再設定されません。

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