Where does the ApplicationConfiguration class live? Do you bootstrap
NH in this class as well?

If this class exists in your UI layer, don't you still need a
reference to the NH dll for it to run?


On Jun 29, 12:58 am, Fabio Maulo <[email protected]> wrote:
> All projects where I'm working to have all initializations and the complete
> wire of the applications in its own specialized classes.
> Application_Start has is "why"and it is:
>
>             guywire = ApplicationConfiguration.GetGuyWire();
>             guywire.Wire();
>
> On Tue, Jun 29, 2010 at 12:44 AM, Vadim Chekan <[email protected]>wrote:
>
> > On Jun 28, 4:00 pm, Fabio Maulo <[email protected]> wrote:
> > > You can move any initialization outside your application, even better...
> > you
> > > should move it.
>
> > Global contains Application_Start, why? :)))
> > Wen saying that initialization should be moved out,we should consider
> > what type/size of application we are talking about. One size does not
> > fit all. There is no universal design pattern, all of them are applied
> > within specific conditions.
>
> > Moreover, I would argue that not application size, but initializations
> > code size matters. If I have a zoo of components, many of which
> > require initializations, I would become uncomfortable keeping all of
> > them in Global, and I would definably do what you say: move init to a
> > specialized class/function[s].
> > Or if NH init is complicated, it deserves its own function/class.
> > NFluent which will have long initialization is a good example to be
> > moved to a separate class.
>
> > At the same time, NH initialization is very important part of
> > application. You need to glance through init routine to understand how
> > application works. Hiding it behind injector will make program more
> > difficult to understand.
> > Injectors are like pills. They help when you are sick, but if you are
> > taking them when you are healthy will only harm you.
>
> > Another reason to keep init in its own class if, for example there is
> > a possibility to have web and console/win-service application. Then
> > init routine can be reused instead of copy-pasted.
> > But again, there must be a requirement which makes you thinking you
> > will need to reuse it and there must be expectation that init is
> > complicated enough to make copy-paste looking bad.
>
> > > You can easily inject the injector.
> > > in web you can use HttpModule... why ?
> > > WCF has "behaviors" configurable via XML... why ?
> > > MVC has "ActionFilters" and "ControllerFactory".... why ?
>
> > First of all, wcf is xml configurable on a pair with attribute
> > configurable and imperative configurable.
> > If xml would be the only true way, there would be only xml
> > configuration.
>
> > Who are the bad guys pushing MS to bad design? :)))
>
> > The reason why all of them have xml configuration and use IoC pattern
> > is that those frameworks are fundamental and as result, at least some
> > projects will have a requirement: re-configuration without
> > recompilation. Not all of them, but some.
> > As being very flexible, IoC is a must in any modern fundamental
> > framework.
>
> > Now, when we are talking about a concrete web application, unlike a
> > framework, usage scenarios are known fairly well, and generally
> > speaking, we can not assume that reconfiguration without recompilation
> > is required. In fact if applied without a need, IoC can lower
> > application reliability. Compiler can not do static checks during
> > compilation so it is easy to rename a class without noticing that it
> > is referenced in well hidden injector xml. And the worst, you will not
> > notice it until appropriate function is called. Run-time errors are
> > nasty. So injectors are not so harmless to recommend them by default.
>
> > > Somebody are pushing you to do the wrong thing ? arg!! such bad guys!!
>
> > Let's stay focused on technical aspects of the question and please
> > don't make assumptions that somebody pushes me.
>
> > > With the argument "you app. can't work without NH" I saw NH calls in the
> > > code behind, if that is good for you... well... good luck!!
>
> > You are attributing me to something I haven't said nor implied.
>
> > Vadim.
>
> > > On Mon, Jun 28, 2010 at 2:48 PM, Vadim Chekan <[email protected]>
> > wrote:
> > > > I agree with Felipe,
>
> > > > 1. By moving persistence initialization into a separate http module
> > > > nothing changes: you are still having persistence calls in
> > > > presentation tier: HttpModule is part of presentation framework. May
> > > > be you imply the fact that it allows you to remove NH from referenced
> > > > assemblies? Then it does not remove dependency but creates an illusion
> > > > of dependency being removed because your app won't even start without
> > > > NH assembly.
>
> > > > 2. Often system components require initialization. In this case Global
> > > > acts not as part of presentation tier, but as application start hook,
> > > > where you put your init calls. For example in console application
> > > > it'll be Main(), in Win Service it'll be OnStart. Moving init calls
> > > > into HttpModule, which were not directly intended for initialization
> > > > make program more difficult to read.
>
> > > > 3. I can think of legitimate reasons for removing binary dependency,
> > > > for example application can use one of several persistence strategies.
> > > > Then as architect you may feel bad about linking libraries which may
> > > > be not used at all.
> > > > In scenarios when NH is the only option, linking HN assembly is a good
> > > > thing. And putting init call where it is expected to be is good too.
>
> > > > Vadim.
>
> > > > On Jun 26, 2:53 pm, nadav s <[email protected]> wrote:
> > > > > no, its a matter of having a direct reference to the DAL or event
> > worse,
> > > > a
> > > > > persistance tool that your dal uses, from the presentation layer. its
> > a
> > > > > basic 3 tier anti pattern.
>
> > > > > On Sun, Jun 27, 2010 at 12:22 AM, Felipe Oriani <[email protected]>
> > > > wrote:
> > > > > > Hi guys ... thanks for the awsers!
>
> > > > > > What is there any difference between I use an HttpModule or
> > Global.asax
> > > > > > (prerequest / postrequest) events ?  one has more performace than
> > the
> > > > > > other?
>
> > > > > > On Sat, Jun 26, 2010 at 3:56 PM, John Davidson <
> > [email protected]
> > > > >wrote:
>
> > > > > >> Unfortunately there are _many_ samples on the Internet that show
> > > > almost
> > > > > >> the same initialization using the global.asax This use of an
> > > > HttpModule for
> > > > > >> this purpose needs to be described as a best practice for
> > initializing
> > > > a
> > > > > >> session in NHibernate.
>
> > > > > >> John Davidson
>
> > > > > >> Sent from my iPad
>
> > > > > >> On 2010-06-26, at 11:55, nadav s <[email protected]> wrote:
>
> > > > > >> it has nothing to do with you're question, but i don't think its
> > wise
> > > > > >> putting this code in the global asax, and therefor making you're
> > > > > >> presentation layer too much aware of you're persistancy.
> > > > > >> you can write an HttpModule that does just that and register it in
> > the
> > > > web
> > > > > >> config.
>
> > > > > >> On Sat, Jun 26, 2010 at 6:18 PM, Felipe Oriani < <
> > [email protected]>
> > > > > >> [email protected]> wrote:
>
> > > > > >>> Hi all, I'm developing an application using Asp.Net MVC. I've
> > > > developed
> > > > > >>> a session per Request... so when the browser request something
> > from
> > > > server,
> > > > > >>> the app start an session.
>
> > > > > >>> By the way, I have a page in my website that each second does a
> > > > > >>> asynchronous request by Json to take some information at cache
> > (and
> > > > the
> > > > > >>> first time, the cache is loaded from database, by repositories
> > using
> > > > > >>> Nhibernate). Everything is fine, but when I see the application
> > > > running with
> > > > > >>> NHProf, I see all "ISession" per request ... but any command is
> > > > executed
> > > > > >>> (because I load a cache).
>
> > > > > >>> I wonder, if doing so may cause a problem in the future? Or, with
> > > > many
> > > > > >>> accesses the web application may become slow ?
>
> > > > > >>> At my global.asax I do this:
>
> > > > > >>> public override void Init()
> > > > > >>>         {
> > > > > >>>             base.Init();
>
> > > > > >>>             PreRequestHandlerExecute += OpenNHibernateSession;
> > > > > >>>             PostRequestHandlerExecute +=
> > DisposeNHibernateSession;
> > > > > >>>         }
>
> > > > > >>>         private static void OpenNHibernateSession(object sender,
> > > > > >>> EventArgs e)
> > > > > >>>         {
> > > > > >>>             if (RequestHelper.IsStaticFiles())  // ||
> > > > > >>> RequestHelper.IsJson()) = to avoid calls Json if necessary, but
> > i'll
> > > > need
> > > > > >>> use h in some called jsons
> > > > > >>>                 return;
>
> > > > > >>>             ManagedWebSessionContext.Bind(HttpContext.Current,
> > > > > >>> _sessionFactory.OpenSession());
> > > > > >>>         }
>
> > > > > >>>         private static void DisposeNHibernateSession(object
> > sender,
> > > > > >>> EventArgs e)
> > > > > >>>         {
> > > > > >>>             if (RequestHelper.IsStaticFiles()) // ||
> > > > > >>> RequestHelper.IsJson())
> > > > > >>>                 return;
>
> > > > > >>>             var session =
> > > > > >>> ManagedWebSessionContext.Unbind(HttpContext.Current,
> > > > _sessionFactory);
> > > > > >>>             if (session != null)
> > > > > >>>                session.Dispose();
>
> > > > > >>>         }
>
> > > > > >>> If someone can help-me... I'll! appreciate
>
> > > > > >>> PS: Sorry for my english!
>
> > > > > >>> Cheers
>
> > > > > >>> --
> > > > > >>> ______________________________________
> > > > > >>> Felipe B. Oriani
> > > > > >>> <[email protected]>[email protected] |
> > > > > >>> <http://www.felipeoriani.com.br>www.felipeoriani.com.br
>
> > > > > >>> "...Trabalhe quanto puder, tornando-se útil quanto possível..." ,
> > por
> > > > > >>> André Luiz
>
> > > > > >>> --
> > > > > >>> You received this message because you are subscribed to the
> > Google
> > > > Groups
> > > > > >>> "nhusers" group.
> > > > > >>> To post to this group, send email to <[email protected]>
> > > > > >>> [email protected].
> > > > > >>> To unsubscribe from this group, send email to
> > > > > >>> <nhusers%[email protected]<nhusers%[email protected]>
>
> ...
>
> read more »

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" 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/nhusers?hl=en.

Reply via email to