Question

Lors de l'écriture d'un gestionnaire / module de http, il existe un élément d'interface mettent en œuvre appelé - bool IsReusable .

Quelle est la signification de ce membre? Si je mets à faux (ou vrai), qu'est-ce que cela signifie pour le reste de l'application web?

Était-ce utile?

La solution

Le point d'entrée normal pour un gestionnaire est la méthode ProcessRequest. Cependant, vous pouvez avoir le code dans le constructeur de classe qui met ensemble des valeurs d'instance qui sont coûteux à construire.

Si vous spécifiez réutilisable 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 à le reconstruire à chaque fois.

L'application instancier autant de ces gestionnaires qui sont besoin pour gérer la charge actuelle.

L'inconvénient est que si le nombre de cas nécessaires est plus grande que les cas actuellement présents, ils provoquent plus de mémoire à utiliser. A l'inverse, ils peuvent aussi réduire la mémoire apparente utilise depuis leur valeur d'instance survivra cycles de GC et ne pas besoin d'être réaffectés fréquemment.

Une autre mise en garde est que vous devez être sûr qu'à la fin de l'exécution ProcessRequest l'état d'objet est que vous voulez pour une autre demande de réutiliser l'objet.

Autres conseils

Suite à la réponse de AnthonyWJones, si votre gestionnaire HTTP retourne true pour IsReusable alors vous devez vous assurer qu'il est complètement thread-safe.

Il n'y a rien dans la documentation pour indiquer que les gestionnaires réutilisables ne peuvent pas être réutilisés en même temps, bien que les implémentations actuelles de Microsoft apparaissent uniquement pour les réutiliser consécutivement. Mais, au moins en théorie, une seule instance de gestionnaire pourrait être réutilisé simultanément par plusieurs demandes, donc vous ne devriez pas compter sur les données qui pourraient être modifiées par d'autres threads simultanés.

Si vous ne stockons pas état dans ce cas (i.e. .: vous n'avez pas des champs (aka « variables de classe »)), alors vous devriez être la réutilisation en toute sécurité, il.

Il est faux par défaut pour être du bon côté.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top