asp.net httphandler ihttphandler

asp.net - httphandler angular



Significado de bool IsReusable en la interfaz del controlador http (3)

El punto de entrada normal para un controlador es el método ProcessRequest. Sin embargo, puede tener código en el constructor de la clase que reúne algunos valores de instancia que son caros de construir.

Si especifica Reutilizable para que sea verdadero, la aplicación puede almacenar en caché la instancia y reutilizarla en otra solicitud simplemente llamando a su método ProcessRequest una y otra vez, sin tener que reconstruirlo cada vez.

La aplicación instanciará tantos manejadores como sea necesario para manejar la carga actual.

La desventaja es que si el número de instancias necesarias es mayor que las instancias actualmente presentes, causan que se use más memoria. Por el contrario, también pueden reducir los usos aparentes de la memoria, ya que su valor de instancia sobrevivirá a los ciclos del GC y no es necesario que se reasignen con frecuencia.

Otra advertencia es que debe asegurarse de que al final de la ejecución de ProcessRequest, el estado del objeto es el que desea para otra solicitud para reutilizar el objeto.

Al escribir un controlador / módulo http, hay un miembro de la interfaz para implementar llamado - bool IsReusable .

¿Cuál es el significado de este miembro? Si lo configuro en falso (o verdadero), ¿qué significa esto para el resto de la aplicación web?


Si no almacena ningún estado en esa instancia (es decir: no tiene ningún campo (también conocido como "variables de clase")), entonces debería estar seguro reutilizándolo.

Por defecto es falso estar en el lado seguro.


Además de la respuesta de AnthonyWJones, si su controlador HTTP devuelve true para IsReusable entonces debe asegurarse de que sea completamente seguro para subprocesos.

No hay nada en la documentación que indique que los manipuladores reutilizables no puedan reutilizarse al mismo tiempo, aunque las implementaciones actuales de Microsoft solo parecen reutilizarlos consecutivamente. Pero, al menos en teoría, una sola instancia del controlador podría reutilizarse simultáneamente por varias solicitudes, por lo que no debe confiar en ningún dato que pueda ser modificado por otros hilos concurrentes.