Not anything downloadable I'm afraid. But here is my current brain
dump on the matter.

The most important question: what are your scalability needs? If you
are creating a public facing web site with possibly *very* large
fluctuations in user behavior, your scalability needs are way more
important than with intranet applications. The latter kind of
application typically don't have the enormous peaks and variety of
usage. So even if they have tens of thousands of users (like the
application that I'm currently working on will have), the load will be
pretty predictable, and is something that can be planned for.

Presuming scalability is an important concern, where do you expect the
bottlenecks to happen? In my experience, the database/ back-end
typically starts crumbling way before the web tier. And if you use a
clustered environment with sticky sessions, the web tier most likely
will never be a real concern.

Now, if you defined the web tier as a likely bottleneck, and your
scalability requirements are such that you probably have to work with
a big cluster etc, it's time to talk business. Learn about the
pitfalls of the frameworks you are considering and evaluate that with
your situation.

But now my remark about that Wicket might actually uses less server
side memory than some other framework... that was primarily directed
to web MVC frameworks like Struts, WW, Spring MVC, etc. Unfortunately
still the leading paradigm it seems.

A big pitfall for web MVC frameworks is that it is hard to program
complex UIs in them. Things like wizards, multiple levels of tabs,
page-able lists, search panels with detail screens etc, are very hard
to do without a stateful model. So what typically happens is that
programmers use session memory to store 'temporary' data, like the
selected tab, the previous search command, the page of the page-able
list etc. I quoted 'tempory' as that stuff typically don't gets
cleaned up properly - the primary reason why an MVC based application
Johan profiled some time ago actually used much more session memory
than a comparable Wicket application. Worse, such ad-hoc usage is
unpredictable and hard to tweak in a clustered environment. Even if
you had an MVC and a Wicket application that would use exactly the
same amount of memory, the Wicket application will very likely put
less strain on the cluster as - due the fact that Wicket controls what
goes in and out of the actual session/ cluster - Wicket will try to
optimize and take care to only update when it is really needed.
Alternatively, you could force your programmers to never use the
session for things like that. It *is* possible to achieve the same by
passing request parameters everywhere. However, for complex UIs you'll
soon be bogged down by an incomprehensible stack of spaghetti. You
might get into the problem that your get requests are getting too
long. And using request parameters is a potential security concern.
But most importantly, you have to 'flat down' everything you could
otherwise componentize to a page level, and every little refactoring
will be tedious, and you probably will have lots of code duplication.
For anyone that actually build a couple of non-trivial web
applications with MVC frameworks like Struts, I'm not telling a new
story here. My point of this whole section is that even though MCV
frameworks potentially scale better, changes are that in practice they
don't. Not for anything moderately complex. And the prize to pay for
this warm fuzzy feeling that you theoretically scale better can be
pretty big.

Eelco

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to