Aunque Oscar (el colega que envio la consulta) dijo que su entorno era
ASP.NET, no aclaro si es WebForms, Monorail o MVC, me gustaria mencioar otra
posibilidad (y dejar al descubierto mi preferencia por Monorail/ASP.NETMVC).

Cuando el punto de entrada es el controller es mucho mas facil manejar estos
temas. Lo unico que se necesita es, mediante AOP, activar las
sesiones/transacciones en el contexto de ejecucion del metodo del
controller.

Una opcion en Monorail es usar Automatic Transaction Manager, tambien se
podria hacer con filtros. En ASP.NET MVC es similar, con ActionFilters.

Otro motivo mas para prestar atencion a una arquitectura alternativa.
Mirense estos articulos [1] y [2] del año 2005 (si, 2005), una detallada
descripcion de la arquitectura sobre Monorail. Noten que inverti el orden de
los articulos porque me parece mas adecuado ese orden para el caso.

En serio, vale la pena leerlo. BTW, Hamilton Verissimo, el autor, fue el
desarrollador principal de Monorail.

Un saludo

[1] http://www.codeproject.com/KB/architecture/introducingcastleii.aspx
[2] http://www.codeproject.com/KB/architecture/introducingcastle.aspx

----------------------------------
Carlos Peix

2010/4/1 José F. Romaniello <[email protected]>

> ah si, en ese caso si. Un post acerca de esto que decís:
>
> http://ayende.com/Blog/archive/2009/08/16/what-is-the-cost-of-opening-a-session.aspx
>
>
>
> El 31 de marzo de 2010 21:11, Jonathan Leibiusky <[email protected]>escribió:
>
> No no... me entendiste mal.
>> Digo de usar el patrón session-per-request pero sin abrirla cuando inicia
>> el request sino cuando la usa por primera vez en ese request... como una
>> especie de LazySession... de esa forma no hay que complicarse para detectar
>> qué tipo de request es.
>> Cuando es una imágen, css o cualquier recurso que no usa la DB no la abre
>> y listo.
>>
>>
>>
>> 2010/3/31 José F. Romaniello <[email protected]>
>>
>>> El 31 de marzo de 2010 20:09, Jonathan Leibiusky <[email protected]>
>>>  escribió:
>>>
>>> No sería más sencillo hacer que solamente abra una session la primera vez
>>>> que la usa?
>>>> No parece muy complicado de implementar.
>>>
>>>
>>> La primer vez que que??
>>>
>>> Session per application es un timebomb en aplicaciones de escritorio,
>>> pero session per application en una aplicación web es directamente
>>> imposible.
>>> Al voleo se me vienen tres cosas que impiden esto:
>>> 1-Significa que tu unit of work tiene el ciclo de vida de toda la
>>> aplicación? Esto no me gusta del vamos.
>>> 2-Session no es thread safe.
>>> 3-Por otro lado, luego que una sesión arroja alguna excepción, la sesión
>>> queda en un estado fallido que no puede ser usado nuevamente.
>>>
>>> Para web lo mejor es session per request.
>>> Lo que dijo Nelo de mantener la sesión en un pool me parece mala idea
>>> también, pero tendría que ver la implementación.
>>>
>>>  --
>>> Para escribir al Grupo, hágalo a esta dirección:
>>> [email protected]
>>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>>
>>
>>  --
>> Para escribir al Grupo, hágalo a esta dirección:
>> [email protected]
>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>
>
>  --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

To unsubscribe, reply using "remove me" as the subject.

Responder a