> From: Jesse Erlbaum [mailto:[EMAIL PROTECTED]] 
> Sent: 30 May 2002 22:42
> To: 'Ray Zimmerman'; modperl List; Mason List

Jesse, thanks for your comments, I found them very interesting.
I am comfortable with Perl and Web programming (though previously
not the two together) and am about to embark on development of
a new product for an ASP, so have considerable interest at this
stage of the proceedings.

I would like to ask some further questions, please forgive the
extensive haircut of your comments:

> applying a design pattern such as MVC is not a panacea
I agree - I much prefer Perlish DWIM dweomer

>    Model:  The business logic.  Not related to the UI at all.
>    View:   The user interface.
>    Controller:  The glue between the View and the Model.

> ... the Model is simply a Perl module... make it entirely separate 
> from the user interface... the methods... being called from a web 
> application, a cron script, or an email-based interface

Makes sense, in old-style speak [yes, I am approaching 'Ancient of Days'

status] this seems to indicate the Model accepts method calls and
returns
data that will be rendered elsewhere. In our planned development, there
is a LOT of tabular data - do you use any standards for the data being 
returned to the Controller? eg do you use a struct [ie hash/array Perl
primitive] or do you return an object? eg a table object etc?


> The View, in a web application, is really the HTML output.  

Sounds good, so I could also pass the Models returned data to a
different
flavoured rendering view eg PDF, Spreadsheet, Text etc. This sounds a
lot
like our existing Perl reporting infra which does exactly that.

W3 did a huge amount of analysis on layout and style as part of the CSS 
specs. In our setup, the table objects contain lots of style info. It is

easy to render complex tables in PDF [as HTML will be] but formats like 
Excel are very hard, as there are layout constraints [eg a column can
have 
only one width for the entire page - we call this the 'Highlander
Effect']

Is this true of your setup? does the Model returned data contain lots of
style hints? Or do you leave this completely to the View layer? How does
the view layer know for example to render an Error cell as RED in HTML
but blue in Excel due to Excel palette limitations?


> Optimally, the View avoids *ALL* application logic.  
mmmm - so the Model has to say RED rather than ERROR? but that wouldn't
work if rendering something where RED is illegible? Our reporting knows
about basic things like Error, Good, User Date / Numeric preferences 
etc.

> At my company we use HTML::Template ... it's damn fast, too
will look at this - is there a list somewhere?


> The Controller connects the View to the Model... takes user input 
> ... translates it into method calls on the Model... then takes output 
> from the Model and passes it to your View.

Sounds like Controller only interacts with one Model? I would assume 
that a Controller might collect data from a number of Models, and then
pass the collection of data to a View?

What controls the overall layout? e.g. what is the equivalent of the
'Grid Bag' layout manager - is this done in the Controller? and then
passed to the View with all the data from a set of Models? Or do you 
make the Controller minimalist and have a meta-Model that assembles
all the sub-Models into a layout.


> CGI::Application modules
will do some reading on this also then.

> separating the View from Controller is a problem.

I guess this is a balance between purist and DWIMism, but as we already
have this separation for reporting, I would like to extend it into our
dynamic web page generation.


> If you have to work with an SPS such as Mason but you still want to 
> separate your View from your Controller, you have to work twice as
hard.
Interesting!

Jesse, I found your posting extremely useful - thank you very much!

Regards
Jeff


Reply via email to