|Think about Loose Coupling|
Multi tiered web applications in Perlby pernod (Chaplain)
|on Oct 21, 2003 at 13:00 UTC||Need Help??|
pernod has asked for the
wisdom of the Perl Monks concerning the following question:
One of the tasks here at $firm is developing a cgi-application. It is a rather simple thing using CGI.pm, some database connections and scary amounts of print-statements. Organic growth of the application has shown that this approach is (unsurprisingly) not good enough.
We are researching different solutions, and one of them is CGI::Application, supported by HTML::Template and CGI::Session. Testing will be conducted with Test::More and screen-scraping with WWW::Mechanize. This is all well and good, but we are also inspecting other avenues.
As $firm is quite enamoured with .NET, this is an obvious choice that offer advantages and disadvantages that will not be detailed in this forum. Another alternative would be J2EE, or even some CMS system or other.
From this rather long-winded introduction comes my question. In the name of buzzword-compliance, can Perl offer something akin to the multi-tiered architectures that J2EE and .NET market so heavily?
I want to say that separating business logic and database access into modules that implement CGI::Application, and presentation with HTML::Template is already (logically) a three-tiered architecture. Is it possible, or even interesting to divide these into physical tiers? Placing the presentation logic on one server and the CGI::Application stuff on another?
I could imagine some solutions, but they would be home-rolled and communicate on sockets and such. From a quality assurance viewpoint (another buzzword here at $firm), this is clearly not desirable. We simply do not have the resources to re-implement an enterprise server communication system in Perl, even though it could be quite an interesting challenge ...
Performing a last CPAN search before posting this dug up Oak::Application, which shows some promise. It is somewhat poorly documented though, so I'm not sure if this is a viable alternative. It seems to be a framework for muli-tiered applications, does anyone have any experience with this module?
Any enlightenment will be greatly appreciated. Thank you for reading this.