2009-08-10 14 views
6

¿Hay alguna razón para cambiar del alcance predeterminado (transitorio?) A otra cosa, fuera de la necesidad de controlar el alcance por razones funcionales (por ejemplo, Singleton)?Alcance de Structuremap/Guía del ciclo de vida?

Si me quedo con el alcance predeterminado, cada instancia predeterminada de cada tipo de complemento se instanciará efectivamente en cada solicitud (asumiendo una aplicación web), ¿es correcto? ¿Puede esto afectar el rendimiento notablemente?

He considerado utilizar Http Session scope para limitar esto a una instancia por usuario conectado. Sin embargo, eso dará como resultado (al menos) una instancia de cada tipo de complemento almacenada en memoria para cada usuario en todo momento. Con el alcance predeterminado, estas instancias solo se mantendrían en la memoria mientras se procesaba una solicitud de página. No estoy seguro de cuál es preferible.

Si usa StructureMap, ¿cómo configura generalmente el alcance para cada uno de sus tipos de complementos?

Gracias por cualquier idea,

Phil

Respuesta

7

que salen del ámbito predeterminado en su lugar. Esto significa que por cada solicitud (ya sea por cada usuario o por muchos usuarios) tengo una instancia de un objeto en la mano. Esto significa que se realiza una nueva solicitud cada vez. Mantenerlo en sesión es algo sobre lo que prefiero tener un control más específico. Por esta razón, puedo lanzar una capa de almacenamiento en caché sobre la capa de servicio y pegar el objeto devuelto por StructureMap. Luego puedo consultar el caché para el objeto ya instanciado (ahora serializado) y elegir desde dónde obtener mis objetos.

Haría lo mismo para una configuración de Singleton donde usaría StructureMap para obtener el objeto real ... pero cuando se trata de devolver el objeto una segunda vez, el objeto mismo entregaría una instancia a sí mismo (en términos simples que es). Esto usa StructureMap por su poder ... pero no le da más potencia de la necesaria.

+0

Gracias por su respuesta. Tu opinión sobre los singletons es interesante, y lo tendré en cuenta también. –

Cuestiones relacionadas