1. ホーム
  2. asp.net

[解決済み] httpハンドラインタフェースにおけるIsReusableブールの意義

2022-07-02 17:08:51

質問

http ハンドラ/モジュールを書くとき、実装すべきインターフェースメンバーとして - があります。 bool IsReusable .

このメンバーの意味は何でしょうか?もしこれをfalse(またはtrue)に設定した場合、Webアプリの残りの部分にはどのような意味があるのでしょうか?

どのように解決するのですか?

ハンドラの通常のエントリポイントは ProcessRequest メソッドです。 しかし、クラスのコンストラクタに、ビルドにコストのかかるいくつかのインスタンス値をまとめるコードがあるかもしれません。

Reusable を true に指定すると、アプリケーションはインスタンスをキャッシュし、ProcessRequest メソッドを何度も呼び出すだけで、毎回再構築することなく別のリクエストで再利用することができます。

アプリケーションは、現在の負荷を処理するために必要な数だけ、これらのハンドラのインスタンスを作成します。

欠点は、必要なインスタンスの数が現在存在するインスタンスより大きい場合、より多くのメモリが使用されることです。 逆に、インスタンスの値が GC サイクルに耐え、頻繁に再割り当てする必要がないため、見かけ上のメモリ使用量を減らすこともできます。

もうひとつの注意点は、ProcessRequest の実行の最後に、オブジェクトの状態が、オブジェクトを再利用するための別のリクエストのために必要な状態であることを確認する必要があることです。