Fine, but then an example would be greatly appreciated :) 2009/9/22, Ayende Rahien <[email protected]>: > State full > > On Tue, Sep 22, 2009 at 11:38 PM, Simone Busoli > <[email protected]>wrote: > >> >> Do I read correctly or did you mean stateless? >> >> 2009/9/22, Ayende Rahien <[email protected]>: >> > The most important one, it could be stateful. >> > I like stateful components, they are much easier to work with >> > >> > On Tue, Sep 22, 2009 at 3:53 PM, Jason Meckley >> > <[email protected]>wrote: >> > >> >> >> >> Oren, could you share an example of how a transient service would >> >> benefit, rather than a singleton? For example I don't see how managing >> >> cache would be effected by the lifestyletype of the service. >> >> >> >> On Sep 21, 6:50 pm, Ayende Rahien <[email protected]> wrote: >> >> > There is a reason that I like to depend directly on ISession, and >> >> > make >> >> > my >> >> > services transient. >> >> > It allows me to make assumptions with things like the session cache, >> >> > uniqueness, etc. >> >> > With UoW.Current or interceptor approach, that is not the case. >> >> > >> >> > On Mon, Sep 21, 2009 at 11:47 PM, Simone Busoli < >> [email protected] >> >> >wrote: >> >> > >> >> > > Thanks Jason, I see it now, and it's an interesting approach, I >> never >> >> used >> >> > > it though. At the moment I am just doing UoW.Current when I need >> >> > > access >> >> to >> >> > > the UoW, but having a decorator which gives me the current one and >> >> still >> >> > > have it in the constructor is a nice way to accomplish that. >> >> > >> >> > > On Mon, Sep 21, 2009 at 22:37, Jason Meckley < >> [email protected] >> >> >wrote: >> >> > >> >> > >> this is what I like about the SessionAdapter object I posted >> >> > >> above. >> >> > >> you can use the default lifestyle of singleton. the actual session >> is >> >> > >> not retrieved (from the current session context) until you call a >> >> > >> member of session. >> >> > >> >> > >> On Sep 21, 3:20 pm, Simone Busoli <[email protected]> wrote: >> >> > >> > I'm not sure I follow you, if I have a component which takes an >> >> > >> > ISession as a ctor argument, I need to be careful to configure >> its >> >> > >> > lifestyle to be "more transient" than that of the session >> >> > >> > itself, >> >> > >> > right? Or I'll get an instance of the component with an out of >> date >> >> > >> > session. >> >> > >> >> > >> > 2009/9/21, Ayende Rahien <[email protected]>: >> >> > >> >> > >> > > Simone, >> >> > >> > > *shrug*, the provide an ISession implementation that will >> access >> >> the >> >> > >> ambient >> >> > >> > > session. >> >> > >> >> > >> > > On Mon, Sep 21, 2009 at 9:49 PM, Simone Busoli >> >> > >> > > <[email protected]>wrote: >> >> > >> >> > >> > >> That's what I don't like much with this approach, it's easy >> >> > >> > >> to >> >> > >> > >> do >> >> > >> > >> something wrong, because you need to be very careful about >> >> > >> > >> the >> >> > >> > >> lifestyle of your components, or you'll get into weird >> >> situations. >> >> > >> > >> Ideally, I wouldn't like my components to be sort of aware of >> >> > >> > >> the >> >> > >> > >> lifestyle of something they depend on, or, put in other >> >> > >> > >> words, >> >> I'd >> >> > >> > >> expect them to get the right UoW regardless of whether they >> are >> >> > >> > >> transient or singleton. >> >> > >> >> > >> > >> 2009/9/21, Ayende Rahien <[email protected]>: >> >> > >> > >> > yes >> >> > >> >> > >> > >> > On Mon, Sep 21, 2009 at 7:20 PM, Martin Nilsson < >> >> > >> [email protected]> >> >> > >> > >> wrote: >> >> > >> >> > >> > >> >> Yes, that was the case. Thanks. >> >> > >> > >> >> My other question regarding taking ISession as a ctor >> >> argument. >> >> > >> Then >> >> > >> > >> >> all >> >> > >> > >> >> those classes (queryobject, service and repository) needs >> to >> >> be >> >> > >> > >> transient? >> >> > >> >> > >> > >> >> On Sun, Sep 20, 2009 at 12:45 PM, Ayende Rahien < >> >> > >> [email protected]> >> >> > >> > >> wrote: >> >> > >> >> > >> > >> >>> You need to register the factory facility. >> >> > >> >> > >> > >> >>> On Sun, Sep 20, 2009 at 10:15 AM, Martin Nilsson >> >> > >> > >> >>> <[email protected]>wrote: >> >> > >> >> > >> > >> >>>> Ok ok :) >> >> > >> >> > >> > >> >>>> I changed to this instead: >> >> > >> >> > >> >> >> >> Kernel.Register(Component.For<ISession>().LifeStyle.Transient.UsingFactoryMethod(() >> >> > >> > >> >>>> => >> Kernel.Resolve<ISessionFactory>().GetCurrentSession())); >> >> > >> >> > >> > >> >>>> but then I get error: >> >> > >> > >> >>>> "Type NHibernate.ISession is abstract. >> >> > >> > >> >>>> As such, it is not possible to instansiate it as >> >> implementation >> >> > >> of >> >> > >> > >> >>>> NHibernate.ISession service" >> >> > >> >> > >> > >> >>>> My solution now is this (not causing the above error): >> >> > >> >> > >> > >> >>>> ServiceClass: >> >> > >> > >> >>>> ctor(IUnitOfWorkFactory unitOfWorkFactory) >> >> > >> >> > >> > >> >>>> In ServiceMethod: >> >> > >> > >> >>>> var session = unitOfWorkFactory.CurrentSession; >> >> > >> >> > >> > >> >>>> Questions: >> >> > >> > >> >>>> 1. Anyone knows why I get the above error? >> >> > >> > >> >>>> 2. Is my other solution (using IUnitOfWorkFactory) >> >> > >> > >> >>>> better/ok >> >> > >> then? >> >> > >> > >> >>>> 3. You say that it's possible (better?) to take the >> >> > >> > >> >>>> ISession >> >> as >> >> > >> a >> >> > >> > >> >>>> ctor >> >> > >> > >> >>>> arg. Will that be a different one for each req if my >> >> > >> > >> >>>> service >> >> > >> class is >> >> > >> > >> >>>> singleton, although my session registration is >> >> > >> > >> >>>> transient? >> >> > >> >> > >> > >> >>>> On Fri, Sep 18, 2009 at 9:50 PM, Ayende Rahien < >> >> > >> [email protected] >> >> > >> > >> >wrote: >> >> > >> >> > >> > >> >>>>> This is HORRIBLE. >> >> > >> > >> >>>>> You micro manage the session and remove from NH things >> >> > >> > >> >>>>> like >> >> > >> UoW, >> >> > >> > >> >>>>> auto >> >> > >> > >> >>>>> change tracking, persistence by reachability, etc. >> >> > >> > >> >>>>> Sessions should be managed by request / context, not in >> >> > >> methods. >> >> > >> >> > >> > >> >>>>> On Fri, Sep 18, 2009 at 4:25 PM, Martin Nilsson >> >> > >> > >> >>>>> <[email protected]>wrote: >> >> > >> >> > >> > >> >>>>>> ProductService: >> >> > >> > >> >>>>>> public void Save(Product product) { >> >> > >> > >> >>>>>> using(var session = ?.GetSession) >> >> > >> > >> >>>>>> using(var tx = session.BeginTransaction()) >> >> > >> > >> >>>>>> { >> >> > >> > >> >>>>>> repository.Add(product); >> >> > >> > >> >>>>>> tx.Commit(); >> >> > >> > >> >>>>>> } >> >> > >> > >> >>>>>> } >> >> > >> >> > >> > >> -- >> >> > >> > >> Inviato dal mio dispositivo mobile >> >> > >> >> > >> > -- >> >> > >> > Inviato dal mio dispositivo mobile >> >> > >> >> >> > >> > > >> > >> >> -- >> Inviato dal mio dispositivo mobile >> >> > >> > > > >
-- Inviato dal mio dispositivo mobile --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Rhino Tools Dev" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rhino-tools-dev?hl=en -~----------~----~----~----~------~----~------~--~---
