2009-06-24 14 views
12

私は自分のアプリケーションに依存性注入コンテナをセットアップしました。私は、WCFサービスリクエストが来るたびにコンテナを作成することが非効率的になると考えています。IISでホストされる(http)WCFサービスのライフサイクルはどのくらいですか?

誰かがhttp/IISでホストされているWCFサービスについて、そのサービスのライフサイクルは何ですか?これを理解することができれば、コンテナの保管場所、インスタンス化、破棄などの知識があります。

答えて

23

InstanceContextModePerCallの場合、サービスクラスは着信要求ごとにゼロから作成され、完了したら処分されます。

あなたInstanceContextModeがPerSessionある場合は、サービスクラスが作成され、セッションの間1つの所与のクライアントにサービスを提供するために使用されます(または「InactivityTimeoutは、」検出された、またはエラーが発生するまで)。

あなたInstanceContextModeは、最初のリクエストが来て、エラーが発生しない限り、限り要求がでてくるように、メモリにとどまるだろうと何inactivityTimeoutがない場合には、サービスクラスが作成されますシングル(シングルトン)の場合到達した。

だから、あなたはそれを持っています!あなたは依存性注入コンテナとWCFサービスのインスタンスを統合しようとしていたことを言及したようもちろん、(PerSessionSingleサービスのための)同時実行モードも、

+0

ニース!ありがとう、ちょうど私が欲しかった答え。 –

+2

これを設定するには、サービスクラスにServiceBehaviorAttributeを追加します。これは、ninjectとうまく一致する私のものです:[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] – Twisted

0

これはServiceBehavourによって異なります。 特にthisおよびthisです。

1

を、より「面白い」だけ少し物事を作るために遊びに来ます私はちょうどそれをするためにCastle WCF Integration Facilityを使って非常に肯定的な経験をしたと言いたいと思います。

これはCastle Windsor依存性注入コンテナに固有ですが、オープンソースであるため、提供されている課題と解決策の中を見て理解することができます。

関連する問題