2011/2/22 Juan Cuello <[email protected]>

> Bueno, eso es lo que haría yo... pero este framework que desarrollo se
> utiliza en 5 proyectos y de esta forma evito problemas de sesiones.
>

Bueno, no todos, de lo contrario este thread no hubiese sido necesario :-)


Además, le agregué soporte para trabajar con diferentes orígenes de
> datos a la vez, osea, que a veces hace falta tener más de una sesión/
> transacción abierta (una por origen de datos o sessionfactory).
>

Creo que esto podrias hacerlo facilmente si inicias las sesiones en un unico
lugar. En realidad no tenes un problema tecnico, creo que el problema es que
vos incresas a servicios transaccionados desde servicios transaccionados,
esto es lo que te causa problemas. Si tuvieras una capa transaccionada (con
interceptors estaria bien) con los puntos de etrada a tu logica (lo que se
llama fachada de servicios) y desde alli llamaras a servicios (no
transaccionados con interceptors) solucionarias tu problema.


En un web service ASMX se puede utilizar un session-per-request o qué
> debería usarse?
>

Lo mas comun es session-per-request, pero a veces hace falta mas de una
sesion en la operacion, en esos casos podes usar un modelo especial. Para la
implementacion uso HttpModules o directamente en el WebMethod,
indistintamente.


En WCF uso una implementación de ICallContextInitializer implementandoras
> el AfterInvoke y BeforeInvoke.
> En Web uso session-per-request
> En MVC uso ActionFilters o IoC en el controlador --> Te parece una
> mala práctica el uso de interceptors en un controlador?
>

Me parecen todas buenas decisiones, yo tambien uso filters (global filters
en caso de MVC 3)


En aplicaciones de consola uso IoC
>

Este no lo entendi. Supongo que usaras IoC en todos lados. En aplicaciones
de consola da mas bien para una implementacion custom, una clase sencilla
que implemente IDisposable y se use de esta manera:

using (new CustomUoW())
{
   // ...
}

Que es lo mismo que uso en los tests de repositorios y queries.

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


> On 18 feb, 14:27, Carlos Peix <[email protected]> wrote:
> > Hola Juan,
> >
> > Las transacciones deberian iniciarse en el punto de acceso a tu logica de
> > negocio, puede ser sobre una accion de MVC, en un modulo per request en
> una
> > pagina o en un webservice, etc.
> >
> > Es alli donde debes iniciar transaccion y no en el un metodo de tu capa
> de
> > negocio, a menos que esa capa sea lo que se llama fachada de servicios.
> Si
> > este fuera el caso, no deberias llamar a otro metodo de la capa de
> servicios
> > desde dentro de tu capa de servicios.
> >
> > Entonces, nunca tendrias sessiones/transacciones anidadas.
> >
> > Se entiende?
> >
> > ----------------------------------
> > Carlos Peix
> >
> > 2011/2/17 Juan Cuello <[email protected]>
>
>

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

Responder a