132 votes

Signification de bool IsReusable http gestionnaire d'interface

Lors de l'écriture d'un gestionnaire http/module, il y a une interface membre de mettre en œuvre les appelle - bool IsReusable.

Quelle est la signification de ce membre? Si je l'ai mis à false (ou vrai), qu'est-ce que cela signifie pour le reste de la web app?

153voto

AnthonyWJones Points 122520

La normale du point d'entrée pour un gestionnaire est la méthode ProcessRequest. Cependant, il peut y avoir de code dans le constructeur de la classe qui met en commun certaines valeurs d'instance qui sont coûteux à construire.

Si vous spécifiez Réutilisables pour être vrai l'application peut mettre en cache l'instance et le réutiliser dans une autre demande simplement en appelant sa méthode ProcessRequest encore et encore, sans avoir à reconstruire à chaque fois.

L'application va instancier autant de ces gestionnaires que sont le besoin de gérer la charge actuelle.

L'inconvénient est que si le nombre de cas de besoin est plus grand que le cas actuellement, ils causent plus de mémoire à utiliser. A l'inverse, elles peuvent également réduire apparente de mémoire utilise depuis leur valeur d'instance de survivre GC cycles et n'ont pas besoin d'être fréquemment ré-alloué.

Un autre inconvénient est que vous devez être sûr qu'à la fin de la ProcessRequest de l'exécution de l'état de l'objet est comme vous voulez pour une autre demande de réutilisation de l'objet.

47voto

LukeH Points 110965

Suite à AnthonyWJones réponse, si votre gestionnaire HTTP retours true pour IsReusable alors vous devez vous assurer qu'il est entièrement thread-safe.

Il pourrait être un changement de contexte, à tout moment, même à mi-chemin par le biais de l'exécution de la ProcessRequest méthode, de sorte que votre gestionnaire ne peut compter sur les données qui peuvent être modifiées par d'autres threads simultanés.

3voto

Andrei Rînea Points 7554

Si vous n'avez pas de magasin de n'importe quel état de l'instance (c'est à dire: vous n'avez pas de champs (aka "variables de classe")), alors vous devriez être sûr de le réutiliser.

Il est par défaut à false pour être sur le côté sécuritaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X