1

クライアントが番号を取得するために呼び出す単純なWCFアプリケーションがあるとします。その中にはあまり処理がなく、サービスコントラクトはSessionMode=SessionMode.NotAllowedとして属性付けられています。

コンストラクターはいつ呼び出されますか?オブジェクトはいつ破壊されますか?コンストラクターはリクエストごとに呼び出されますか?

この情報を含む参照ドキュメントまたはリソースはありますか?見つからないようです。

4

1 に答える 1

1

WCFはIISによってホストされているため、ライフタイムルールが適用されます。サービスクラス自体は、アプリ内で必要に応じて作成および破棄される可能性があります。クラスは、リクエストを受け取り、メソッドが呼び出され、結果が返されると構築されます。その後、オブジェクトはスコープを離れ、破棄/ファイナライズされます。

ただし、サービスを含むプロジェクトは、IISにとって通常のActiveServer.NET Webアプリのように見えます(その中にあるはずのGlobal.asaxファイルを確認してください。このプロジェクトにはHttpApplicationタイプのクラスが含まれており、IISがそのアプリのエントリポイントを表します。を使用して制御できます)、IISはこれらのアプリケーションの「プール」を維持して、複数のクライアントからの要求を処理します。要求が着信し続け、IISがアプリが「古くなった」と判断せず、アプリまたはプール全体を更新しない限り、アプリケーションは実行を継続します。したがって、宣言する静的クラス、たとえばシングルトンIoCコンテナー、または子型として使用する派生HttpApplicationクラスに追加するものはすべて、アプリがリサイクルされるまでメモリに残ります。

于 2010-09-28T22:24:52.363 に答える