SlideShare une entreprise Scribd logo
1  sur  16
Desperately Seeking…
a lightweight Perl web framework
                               Peter Edwards




                                                                   1
   Desperately seeking... a lightweight Perl web framework   12/22/12
Introduction
 Peter   Edwards ~ background


Subject
 Explain  about the processes and decision
   making involved in assessing, selecting
   and using a Perl web framework


                                                            2
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Aims
 Learn what frameworks are out there
 Technical considerations
 Business tools for decision-making


   Audience: What is your background and
    interest?


                                                            3
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Topics
 Define the problem
 Example requirements
 Attributes of frameworks
 Business decision making tools
 Architecture
 Application components
 Perl application frameworks
 Roll your own
 Summary



                                                            4
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Define the Problem
 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




                                                            5
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Example
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
                                                            6
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Attributes of Frameworks
 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

                                                            7
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Business Decision Making Tools
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
                                                            8
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Architecture I
 Web     Protocol
   HTTP request/response
   URI, REST, URL parameters
   http://server.com/client/view/FRED?view=xml&tabs=al
   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
                                                            9
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Architecture II
 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
                                                           10
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Architecture III
 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
                                                           11
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Application Components
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

                                                           12
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Perl Application Frameworks
   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


                                                            13
 Desperately seeking... a lightweight Perl web framework
                                                     12/22/12
Roll Your Own
 "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


                                                           14
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Summary
Processes and decision making
 requirements
 business context
 CBA decision basis
 technical considerations, architecture,
  constraints and features
 application components
 Perl application frameworks

                                                           15
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Where to Get More Information
CPAN http://search.cpan.org
Books


 Any     Questions

These slides are at
 http://perl.dragonstaff.co.uk/

                                                           16
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12

Contenu connexe

Tendances

Tricks and Tips With NIO Using the Grizzly Framework
Tricks and Tips With NIO Using the Grizzly FrameworkTricks and Tips With NIO Using the Grizzly Framework
Tricks and Tips With NIO Using the Grizzly Framework
elliando dias
 
Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the rest
george.james
 

Tendances (20)

JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
 
Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)
 
What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)
 
Jetty Vs Tomcat
Jetty Vs TomcatJetty Vs Tomcat
Jetty Vs Tomcat
 
Grizzly 20080925 V2
Grizzly 20080925 V2Grizzly 20080925 V2
Grizzly 20080925 V2
 
Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stack
 
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQLHTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
 
Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules upload
 
Modular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafModular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache Karaf
 
XML and Web Services with Groovy
XML and Web Services with GroovyXML and Web Services with Groovy
XML and Web Services with Groovy
 
Serverless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & Triumphs
 
Tricks and Tips With NIO Using the Grizzly Framework
Tricks and Tips With NIO Using the Grizzly FrameworkTricks and Tips With NIO Using the Grizzly Framework
Tricks and Tips With NIO Using the Grizzly Framework
 
PHP on IBM i Tutorial
PHP on IBM i TutorialPHP on IBM i Tutorial
PHP on IBM i Tutorial
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015
 
Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the rest
 
Karaf ee-apachecon eu-2012
Karaf ee-apachecon eu-2012Karaf ee-apachecon eu-2012
Karaf ee-apachecon eu-2012
 
Open Social Summit Korea
Open Social Summit KoreaOpen Social Summit Korea
Open Social Summit Korea
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeans
 
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetApache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume Nodet
 

Similaire à Desperately seeking a lightweight Perl framework

Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
Patrick Chanezon
 
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Felix Gessert
 

Similaire à Desperately seeking a lightweight Perl framework (20)

A Tour of Ruby On Rails
A Tour of Ruby On RailsA Tour of Ruby On Rails
A Tour of Ruby On Rails
 
Cloud Computing for Barcamp NOLA 2009
Cloud Computing for Barcamp NOLA 2009Cloud Computing for Barcamp NOLA 2009
Cloud Computing for Barcamp NOLA 2009
 
Cloud foundry and openstackcloud
Cloud foundry and openstackcloudCloud foundry and openstackcloud
Cloud foundry and openstackcloud
 
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
 
Is 12 Factor App Right About Logging
Is 12 Factor App Right About LoggingIs 12 Factor App Right About Logging
Is 12 Factor App Right About Logging
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
 
DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)
 
.net Framework
.net Framework.net Framework
.net Framework
 
Kubernetes Summit 2019 - Harden Your Kubernetes Cluster
Kubernetes Summit 2019 - Harden Your Kubernetes ClusterKubernetes Summit 2019 - Harden Your Kubernetes Cluster
Kubernetes Summit 2019 - Harden Your Kubernetes Cluster
 
Php Frameworks
Php FrameworksPhp Frameworks
Php Frameworks
 
Power features in .NET 4: Investigating the features of .NET 4 which you don’...
Power features in .NET 4: Investigating the features of .NET 4 which you don’...Power features in .NET 4: Investigating the features of .NET 4 which you don’...
Power features in .NET 4: Investigating the features of .NET 4 which you don’...
 
Durkee apache 2009_v7
Durkee apache 2009_v7Durkee apache 2009_v7
Durkee apache 2009_v7
 
Speeding up your Drupal site
Speeding up your Drupal siteSpeeding up your Drupal site
Speeding up your Drupal site
 
Building Low Cost Scalable Web Applications Tools & Techniques
Building Low Cost Scalable Web Applications   Tools & TechniquesBuilding Low Cost Scalable Web Applications   Tools & Techniques
Building Low Cost Scalable Web Applications Tools & Techniques
 
Cloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftCloud Native Applications on OpenShift
Cloud Native Applications on OpenShift
 
Lamp Zend Security
Lamp Zend SecurityLamp Zend Security
Lamp Zend Security
 
Principles of MVC for Rails Developers
Principles of MVC for Rails DevelopersPrinciples of MVC for Rails Developers
Principles of MVC for Rails Developers
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on Rails
 
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
 

Plus de Peter Edwards (8)

Enhancing engagement through content
Enhancing engagement through contentEnhancing engagement through content
Enhancing engagement through content
 
Twitter oauth
Twitter oauthTwitter oauth
Twitter oauth
 
BBC World Service Twitter OAuth Perl
BBC World Service Twitter OAuth PerlBBC World Service Twitter OAuth Perl
BBC World Service Twitter OAuth Perl
 
Perl exceptions lightning talk
Perl exceptions lightning talkPerl exceptions lightning talk
Perl exceptions lightning talk
 
Role based access control
Role based access controlRole based access control
Role based access control
 
Getting started with Catalyst and extjs
Getting started with Catalyst and extjsGetting started with Catalyst and extjs
Getting started with Catalyst and extjs
 
Real world cross-platform testing
Real world cross-platform testingReal world cross-platform testing
Real world cross-platform testing
 
Open Source for Government - PSEICT Conference - British Council Case Study u...
Open Source for Government - PSEICT Conference - British Council Case Study u...Open Source for Government - PSEICT Conference - British Council Case Study u...
Open Source for Government - PSEICT Conference - British Council Case Study u...
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

Desperately seeking a lightweight Perl framework

  • 1. Desperately Seeking… a lightweight Perl web framework Peter Edwards 1 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 2. Introduction  Peter Edwards ~ background Subject  Explain about the processes and decision making involved in assessing, selecting and using a Perl web framework 2 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 3. Aims  Learn what frameworks are out there  Technical considerations  Business tools for decision-making  Audience: What is your background and interest? 3 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 4. Topics  Define the problem  Example requirements  Attributes of frameworks  Business decision making tools  Architecture  Application components  Perl application frameworks  Roll your own  Summary 4 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 5. Define the Problem  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 5 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 6. Example 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 6 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 7. Attributes of Frameworks  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 7 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 8. Business Decision Making Tools 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 8 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 9. Architecture I  Web Protocol HTTP request/response URI, REST, URL parameters http://server.com/client/view/FRED?view=xml&tabs=al 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 9 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 10. Architecture II  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 10 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 11. Architecture III  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 11 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 12. Application Components 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 12 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 13. Perl Application Frameworks  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 13 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 14. Roll Your Own  "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 14 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 15. Summary Processes and decision making  requirements  business context  CBA decision basis  technical considerations, architecture, constraints and features  application components  Perl application frameworks 15 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 16. Where to Get More Information CPAN http://search.cpan.org Books  Any Questions These slides are at http://perl.dragonstaff.co.uk/ 16 Desperately seeking... a lightweight Perl web framework 12/22/12