Jose te puso link a una forma elegante de hacer la actualizacion de los
datos que publico en su Blog (el patron se llama Observer)

Gustavo.

2010/11/27 tolemaC <[email protected]>

> Antes de conoceros pensaba que mi nivel en .NET era alto, ...
> Ahora me siento como que no tengo ni idea.
>
> Veo los ejemplos de NHibernate, de uNhAddins, y otros y no me entero
> de casi nada, por otro lado me pierdo con tanto nombre de patrón que
> no conozco, para poder entender un texto tengo que dedicarle toda mi
> atención y concentración a parte de tener 4 o 5 ventanas del navegador
> abiertas, una para lo que estoy leyendo y las otras para buscar que
> significan varias cosas de las que estoy leyendo :/, eso sin contar el
> traductor, pues hay cosas en inglés que se me escapan.
>
> Bueno, esa es la parte mala, la buena es que me gusta mucho todo lo
> que estoy aprendiendo y el echo de sentirme tan mal me da fuerzas para
> aprender, pero no puedo ir a la velocidad que me gustaría.
>
> Siguiendo con el tema, lo que voy a hacer es abrir una sesión por
> petición (session per request creo que lo llamais) a nivel del
> controlador.
>
> En mi aplicación estoy usando 4 capas Acceso a datos, Negocio,
> Controlador y Vista (con binding al controlador), lo que creo que se
> me ajusta mejor es tener el manejo de sesiones a nivel del
> controlador, ya que en una misma sesión puedo estar interactuando con
> dos objetos de negocio distintos, el único inconveniente que veo es
> que cuando quiera trabajar con algún dato que está visualizandose en
> pantalla tendré que hacer attach de los datos antes de navegar por los
> proxies o realizar cambios en los datos para guardarlos. Si en algún
> caso necesito actualizar los datos en pantalla que se han cambiado en
> otro Form, ya me inventaré alguna forma de notificar el cambio en los
> datos.
>
> Bueno, muchas gracias por los enlaces, son de mucha ayuda.
> Ya os iré contando.
>
> Saludos,
>
>
> On 26 nov, 15:52, Edgar Ramos <[email protected]> wrote:
> > José
> >
> > Hay un ejemplo dentro de unhaddins, que hace uso de CPBT, aqui la session
> es
> > manejada a nivel del model (carpeta BusinessLogic del ejemplo), este
> sería
> > un caso similar al que te refieres en
> > --
> > y la sessión de nhibernate la manejo mediante el patrón CpBT a veces en
> app
> > services
> > --
> >
> > Muchas gracias por los comentarios
> >
> > Saludos
> >
> > Edgar
> >
> > El 26 de noviembre de 2010 07:14, José F. Romaniello <
> [email protected]
> >
> >
> >
> >
> >
> >
> >
> > > escribió:
> > > En winforms yo utilizo el patrón MVP Supervising Controller el cual lo
> > > explico aca:
> >
> > >http://jfromaniello.blogspot.com/2010/11/mvp-patron-supervising-contr.
> ..
> > > <
> http://jfromaniello.blogspot.com/2010/11/mvp-patron-supervising-contr...>y
> > > la sessión de nhibernate la manejo mediante el patrón CpBT a veces en
> app
> > > services, y a veces directamente sobre el presenter, siempre con AOP.
> >
> > > Para hacerlo a nivel de presenter necesité hacer AOP en metodos
> privados,
> > > por lo cual use postsharp y publique el código en unhaddins.Postsharp
> > > Un ejemplo simple que twittie hace un tiempo es este:
> > >https://gist.github.com/341790
> >
> > > <https://gist.github.com/341790>Lo que dijo nelo de :
> > > -no compartir objetos entre sesión
> > > -no compartir sesión entre casos de uso
> >
> > > Estoy 100% de acuerdo. Para la comunicación de datos entre diferentes
> casos
> > > de uso, utilizo event aggregator:
> > >http://jfromaniello.blogspot.com/2010/04/event-aggregator-example.html
> > >  <
> http://jfromaniello.blogspot.com/2010/04/event-aggregator-example.html>
> > >http://jfromaniello.blogspot.com/2010/04/event-aggregator-with-reacti.
> ..
> > > <
> http://jfromaniello.blogspot.com/2010/04/event-aggregator-with-reacti...>
> > >http://jfromaniello.blogspot.com/2010/07/event-aggregator-subscriptor.
> ..
> >
> > > <
> http://jfromaniello.blogspot.com/2010/07/event-aggregator-subscriptor..
> .>Aunque
> > > ahora también he empezado a utilizar en silverlight otro patrón que se
> llama
> > > Subject/Conductor, con una idea muy similar:
> >
> > >http://www.jeremydmiller.com/ppatterns/Default.aspx?Page=ScreenActiva.
> ..
> >
> > > <
> http://www.jeremydmiller.com/ppatterns/Default.aspx?Page=ScreenActiva...>A
> > > lo que voy es que uso datos simples, nunca enviaría un entidad de
> negocio
> > > desde un caso de uso a otro.
> >
> > > El 26 de noviembre de 2010 02:27, Nelo Pauselli <
> [email protected]>escribió:
> >
> > > algunos puntos que yo tengo en cuenta en estos casos son:
> >
> > >> 1) Los objetos (y sus propiedad) que son leidos y guardados en una
> > >> session solo son visibles dentro de la session antes de hacer el
> > >> flush. mmm a ver si me explico mejor en código:
> >
> > >>    session0.Save(new Persona {Nombre = "Original" });
> >
> > >>    var p1 = session1.Get<Persona>(id);
> > >>    p1.Nombre = "Otro";
> >
> > >>    var p2 = session2.Get<Persona>(id);
> > >>    Assert.AreEqual("Original", p2.Nombre);
> >
> > >>    var p1bis = session1.Get<Persona>(id);
> > >>    Assert.AreEqual("Otro", p1bis.Nombre);
> >
> > >>    session1.Flush();
> >
> > >>    var p3 = session3.Get<Persona>(id);
> > >>    Assert.AreEqual("Otro", p3.Nombre);
> >
> > >> es decir que, antes de hacer el Flush() los cambios solo son visibles
> > >> utilizando la misma session, luego del Flush están disponibles para
> > >> todas las sessions.
> > >> Pienso que esto debería ayudarte a saber si tenés que usar la misma
> > >> session o no en dos forms, para mi la conclusión es que una misma
> > >> session no se debería usar en 2 casos de uso (unit of work, etc)
> > >> diferentes o dos instancias del mismo caso de uso.
> >
> > >> 2) Luego, y en especial para winforms, la pregunta sería si vas a
> > >> trabajar con objetos del negocio bindeados a los controles o vas a
> > >> manejar un esquema de ApplicationServices y DTOs para la UI.
> >
> > >> - Si vas por la opción de los DTOs pienso que alcanzaría con manejar
> > >> una session per call a nivel de ApplicationServices,
> > >> - Si vas por la opción del binding (aspecto muy interesante en
> > >> winforms) se me ocurren dos opciones ahora, al principio de cada
> > >> método del form seteas la CurrentSession (sessions manejadas por
> > >> hilos) y antes de salir del método seteas como current la anterior o
> > >> hacés esto mismo con AOP a nivel de tu "controller", claro que con
> > >> esto no podrías poner lógica de negocio en los forms, pero hasta
> > >> quizás sea bueno. ;)
> >
> > >> saludos.
> > >> nelo
> >
> > >> 2010/11/25 Nestor Rodriguez <[email protected]>:
> > >> > Este es un buen articulo, te lo recomiendo :
> > >> >http://msdn.microsoft.com/en-us/magazine/ee819139.aspx
> > >> > Saludos,
> > >> > Nestor Rodriguez
> >
> > >> > 2010/11/25 tolemaC <[email protected]>
> >
> > >> >> Pues el problema viene al decidir una estrategia de manejo de
> sesión
> > >> >> en WinForm, si usar una sesión por ventana o hacerlo por cada
> proceso
> > >> >> de negocio, realmente el problema viene cuando un proceso de
> negocio
> > >> >> llama a otro, no es facil saber si hay una sesión activa, si hay
> que
> > >> >> abrir otra o coger la actual. También me gustaría liberar al
> negocio
> > >> >> del uso de la sesión, ... en fin ese tipo de cosas.
> >
> > >> >> On 24 nov, 20:42, José F. Romaniello <[email protected]>
> wrote:
> > >> >> > El 24 de noviembre de 2010 16:02, tolemaC <[email protected]>
> > >> escribió:
> >
> > >> >> > > ¿Conversation-per-Business-Transaction es la respuesta al
> problema
> > >> con
> > >> >> > > las sesiones?
> >
> > >> >> > Para contestarte esto necesitamos que nos digas cual es tu
> problema
> > >> con
> > >> >> > el
> > >> >> > manejo de sesiones.
> >
> > >> >> --
> > >> >> 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
>
> --
> 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

Responder a