1
|
|
2
|
- Peter Edwards ~ background
|
3
|
- Learn what frameworks are out there
- Technical considerations
- Business tools for decision-making
- Audience: What is your background and interest?
|
4
|
- Define the problem
- Example requirements
- Attributes of frameworks
- Business decision making tools
- Architecture
- Application components
- Perl application frameworks
- Roll your own
- Summary
|
5
|
- Why do you need a web app?
- What functionality / how complex?
no. screens, other features, e.g. search engine, integration to
other apps/components/company infrastructure, server platform
- Business setting
Project length, size; Developer expertise, skill sets; Integration
to network, database type, existing frameworks e.g. ADS authentication;
Capacity plan - no. of users and required performance
|
6
|
- http://merlinfootball.com
- Components
Flash front end, sending XML transactions to
Perl back end
Perl XHTML admin system
- Elements
Huge volume of users and transactions
Streaming video
Picture upload and approval to gallery
FAQ submission, approval and editing into FAQ list
|
7
|
- Size -> complexity
- Learning curve
- Vertical vs. horizontal
- Functionality, flexibility
- Monotheistic/"One True Way" vs. agnostic
- Increased power, reduced performance
- Cost of testing new code = 50% of time
- By extension DRY KISS
|
8
|
- The point of business
Increased shareholder value - cash
- William of Occam, 14th century logician and Franciscan friar
entia non sunt multiplicanda praeter necessitatem
entities should not be multiplied beyond necessity
"All things being equal, the simplest solution tends to be
the best one.“
It often happens that the best explanation is much more
complicated than the simplest possible explanation because it requires
fewer assumptions.
- Pareto Principle, by Joseph M. Juran named after Vilfredo Pareto,
Italian economist
"for many phenomena, 80% of the consequences stem from 20%
of the causes“
-- en.wikipedia.org
- Cost Benefit Analysis
Estimate days for development
Estimate hidden costs and benefits e.g. of more stable
framework
Cost comparison -> decision
Perfection vs. pragmatism
|
9
|
- Web Protocol
HTTP request/response
URI, REST, URL parameters
http://server.com/client/view/FRED?view=xml&tabs=all
Web 2.0, AJAX
- Web Server
Apache, IIS, lighttpd
CGI/mod_perl, FastCGI
- Controller Processing
Apache registry style stacked phase handlers
MVC Model View Controller
Single entry point vs. separate CGI
|
10
|
- Session
CGI::Session
Apache::Session
Catalyst::Plugin::Session -> Cache::FastMMap
- Security
Authentication
Group permission roles
HTML field and SQL field encoding
- Database layer
Direct DBI
Simple
Class::DBI
ORM Object Relational Mapper
DBIx::Class Rose::DB
Performance considerations - DBI 10-100x faster
Data object attributes - data dictionary - screen dictionary
|
11
|
- Templates
Template::Toolkit (TT2)
variable merge, not too complex,
encourages using Perl in app modules
HTML::Mason – inline code
Personal preference; understandable by Web designers
XHTML, accessibility, internationalisation Locale::Maketext
Form handling, CRUD from db object, validation Data::FormValidator
Rich components http://script.aculo.us/ http://dojotoolkit.org/
- Testing
module unit test, business data object tests, Javascript/browser
compatability checks
Test::More
Test::WWW::Mechanize
Test::WWW::Selenium
|
12
|
- Pre-built components
save time in short term on testing; may cost more long term;
integration costs
PHP::Session
- Language Repository Template Component
Perl CPAN TT2 Bricolage
PHP PEAR Smarty CMSMS
Python Built-in Clearsilver Trac
|
13
|
- CGI::Application + CGI::Session
lightweight, easy to use, reliable, full control, open
- Watch out for CGI::Builder, based on CGI::App but used to have
Makefile.PL that downloaded and eval'd code, also bizarre
"Perlish" coding style
; use 5.006_001
; use Carp
; $Carp::Internal{+__PACKAGE__}++
; $Carp::Internal{__PACKAGE__.'::_'}++ ; use IO::Util
- CGI::Framework
fixed - glue between HTML::Template, CGI::Session, CGI,
Locale::Maketext last
release 11-Oct-2005
- Jifty one true way: database
mapper, template, web services, AJAX toolkit, handlers for FastCGI continuations, form-based
dispatch "Jifty is the
only web application framework that comes with a pony“
- Gantry + Bigtop
Apache/mod_perl, MVC
Bigtop - web application data language processor, app generator
- OpenInteract + SPOPS
Complex, slow, powerful, CMS-oriented permissions last release 18-Mar-2005
- Catalyst
agnostic, MVC, complex, magic, powerful, slow (third time in
NEXT/C3 OO extension), well tested
Works well with DBIx::Class and TT2; can also use Class:DBI,
HTML::Mason Many plugins for
auth, XML etc.
- Maypole (ancestor of Catalyst)
similar approach
Class::DBI, TT2
|
14
|
- "Not invented here" syndrome, AKA submitting a module to CPAN
with "Lite" or "Plus" in the name.
- Can base on CGI::Application + CGI::Session
- Or write one yourself. Easier than you'd think. Here's one written in a
week, not pretty but delivered a project delivered fast and on time: http://perl.dragonstaff.co.uk/app.zip
|
15
|
- Processes and decision making
- requirements
- business context
- CBA decision basis
- technical considerations, architecture, constraints and features
- application components
- Perl application frameworks
|
16
|
- CPAN http://search.cpan.org
- Books
- Any Questions
- These slides are at http://perl.dragonstaff.co.uk/
|