SlideShare a Scribd company logo
Web Application Frameworks
(WAF)
Ako Kaman
@scheperson
What is a WAF?
• A general purpose software framework
• Used to build:
• Dynamic websites
• Web applications
• Web API
• Mostly based on MVC pattern
• Push based (more popular)
• Pull based
Why should I bother using a WAF?
• Community support
• Don’t reinvent the wheel
• Better application structure
• Decrease development time
• Free tools and components (more on this later)
• Hundreds of developers are smarter than your team! (RoR => 3477)
What is included in a typical WAF?
• Asset management (some WAFs)
• Generating sprites
• Pre-compiling assets for production
• Compiling SASS, Less and Coffescript on the fly (development)
• Helpers
• Security
• Local authentication
• Using OAuth
• Controllers
• Test tools
What is included in a typical WAF? (cont.)
• Scaffolding
• Command line tools
• I18n and L10n support
• Templating engine (View layer)
• Routing and URL mapping (no Default.aspx)!
• Database access and abstraction (Model layer)
• Migrations
• Caching data
• Databased agnostic
• Object oriented database access (ORM)
How does MVC work?
Router
Controller Model
Browser
View
Request
Dispatch
Fetch dataPush data
Render Response
Some WAFs out there
• PHP
• Yii
• Laravel
• FuelPHP
• CakePHP
• Zend Framework
• CodeIgniter (dead) => ExpressionEngine
• Symfony => Yahoo Bookmarks, Delicious, DailyMotion
• Python
• Flask
• Pylons
• Django => Pinterest, Disqus, Instagram, Mozilla, Rdio
Some WAFs out there (cont.)
• Java/Scala
• Lift => FourSquare
• Play => LinkedIn, Klout, The Guardian
• Java
• Grails
• Spring
• ASP.NET (C#, VB) :(
• ASP.NET MVC
• Ruby :)
• Sinatra => Apple, BBC, Heroku
• Ruby on Rails =>Twitter, GitHub, Basecamp, Groupon, SoundCloud
Web Application Frameworks (WAF)
How does MVC work?
Router
Controller Model
Browser
View
Request
Dispatch
Fetch dataPush data
Render Response
Making an HTTP request
Router
Controller Model
Browser
View
Request
Dispatch
Fetch dataPush data
Render Response
Making an HTTP request (cont.)
http://example.com/books/1
GET /books/1 HTTP/1.1
Host: example.com
Routing and URL mapping
Router
Controller Model
Browser
View
Request
Dispatch
Fetch dataPush data
Render Response
Routing and URL mapping (cont.)
get “admin/news”
match "admin/news", to: "admin#posts", as: "manage_news", via: :get
Prefix Verb URI Pattern Controller#Action
admin_news GET /admin/news admin#news
Prefix Verb URI Pattern Controller#Action
manage_news GET /admin/news admin#posts
Routing and URL mapping (cont.)
resources “books”
Note the :id parameter
Prefix Verb URI Pattern Controller#Action
books GET /books books#index
POST /books books#create
new_book GET /books/new books#new
edit_book GET /books/:id/edit books#edit
book GET /books/:id books#show
PATCH /books/:id books#update
PUT /books/:id books#update
DELETE /books/:id books#destroy
Migrations, Models and Controllers
Router
Controller Model
Browser
View
Request
Dispatch
Fetch dataPush data
Render Response
Migrations, Models and Controllers (cont.)
class CreateBooks < ActiveRecord::Migration
def change
create_table :books do |t|
t.string :title
t.string :isbn
t.integer :pages
end
end
end
$ rails g migration CreateBooks title isbn pages:integer
What is a migration?
Migrations, Models and Controllers (cont.)
class BooksController < ApplicationController
...
def show
@book = Book.find(params[:id]) # /books/:id
end
...
end
class Book < ActiveRecord::Base
end
Views
Router
Controller Model
Browser
View
Request
Dispatch
Fetch dataPush data
Render Response
Views (cont.)
<p>
<strong>Title:</strong>
<%= @book.title %>
</p>
<p>
<strong>ISBN:</strong>
<%= @book.isbn %>
</p>
<p>
<strong>Pages:</strong>
<%= @book.pages %>
</p>
<%= link_to 'Edit', edit_book_path(@book) %> |
<%= link_to 'Back', books_path %>
Views (cont.)
<p>
<strong>Title:</strong>
<%= @book.title %>
</p>
<p>
<strong>ISBN:</strong>
<%= @book.isbn %>
</p>
<p>
<strong>Pages:</strong>
<%= @book.pages %>
</p>
<%= link_to 'Edit', edit_book_path(@book) %> |
<%= link_to 'Back', books_path %>
Prefix Verb URI Pattern Controller#Action
books GET /books books#index
edit_book GET /books/:id/edit books#edit
The end result
Questions?

More Related Content

PPTX
10 tips to make your ASP.NET Apps Faster
PPTX
Getting Started with ASP.NET 5
PPTX
Building rest services using aspnetwebapi
PPTX
Azure Serverless Conf
PPTX
Building Modern Web Applications with ASP.NET5
PPTX
Building a Node.js API backend with LoopBack in 5 Minutes
PDF
Rapid API Development with LoopBack/StrongLoop
PDF
PLAT-8 Spring Web Scripts and Spring Surf
10 tips to make your ASP.NET Apps Faster
Getting Started with ASP.NET 5
Building rest services using aspnetwebapi
Azure Serverless Conf
Building Modern Web Applications with ASP.NET5
Building a Node.js API backend with LoopBack in 5 Minutes
Rapid API Development with LoopBack/StrongLoop
PLAT-8 Spring Web Scripts and Spring Surf

What's hot (20)

PPSX
Web technologies practical guide
PDF
Ryan Brown - Open Community
KEY
SOA on Rails
PPTX
Serverless with Azure Functions
PPTX
Azure functions
PPTX
ASP.NET MVC - Latest & Greatest So Far
PDF
Isomorphic WordPress Applications with NodeifyWP
PDF
Getting Started with WordPress JSON REST API
PDF
ITT Flisol 2013
PPTX
SoCal Code Camp 2011 - ASP.NET 4.5
PDF
A Beginner's Guide to Ember
PPTX
Elastic & Azure & Episever, Case Evira
PPTX
Episerver and search engines
PDF
LoopBack: a productivity booster for MEAN
PPTX
SenchaCon 2016: Oracle Forms Modernisation - Owen Pagan
PPTX
Firebase - cloud based real time database
PPTX
Single page application and Framework
PPTX
REST and ASP.NET Web API (Tunisia)
PPTX
Modern Applications With Asp.net Core 5 and Vue JS 3
PPTX
Maximizing WordPress
Web technologies practical guide
Ryan Brown - Open Community
SOA on Rails
Serverless with Azure Functions
Azure functions
ASP.NET MVC - Latest & Greatest So Far
Isomorphic WordPress Applications with NodeifyWP
Getting Started with WordPress JSON REST API
ITT Flisol 2013
SoCal Code Camp 2011 - ASP.NET 4.5
A Beginner's Guide to Ember
Elastic & Azure & Episever, Case Evira
Episerver and search engines
LoopBack: a productivity booster for MEAN
SenchaCon 2016: Oracle Forms Modernisation - Owen Pagan
Firebase - cloud based real time database
Single page application and Framework
REST and ASP.NET Web API (Tunisia)
Modern Applications With Asp.net Core 5 and Vue JS 3
Maximizing WordPress
Ad

Similar to Web Application Frameworks (WAF) (20)

PDF
Angular JS Basics
PDF
Streamlining Your Applications with Web Frameworks
PDF
Framework Presentation
PDF
Ruby on rails vs asp.net mvc
PDF
Ruby On Rails Basics
PDF
Spring vs. asp.net mvc
PPT
Ruby On Rails
PPT
Ruby On Rails Siddhesh
PDF
Crash Course HTML/Rails Slides
PDF
CG_CS25010_Lecture
PDF
How do I Even Web App
PPTX
MVC - Introduction
KEY
Ruby On Rails
PPTX
MVC 6 Introduction
PDF
PDF
Web frameworks
PDF
Web Applications Are Technically Awesome!
PPTX
Asp.Net MVC3 - Basics
KEY
Social dev camp_2011
PPTX
Web Development Today
Angular JS Basics
Streamlining Your Applications with Web Frameworks
Framework Presentation
Ruby on rails vs asp.net mvc
Ruby On Rails Basics
Spring vs. asp.net mvc
Ruby On Rails
Ruby On Rails Siddhesh
Crash Course HTML/Rails Slides
CG_CS25010_Lecture
How do I Even Web App
MVC - Introduction
Ruby On Rails
MVC 6 Introduction
Web frameworks
Web Applications Are Technically Awesome!
Asp.Net MVC3 - Basics
Social dev camp_2011
Web Development Today
Ad

Recently uploaded (20)

DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Machine learning based COVID-19 study performance prediction
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPT
Teaching material agriculture food technology
PDF
Electronic commerce courselecture one. Pdf
The AUB Centre for AI in Media Proposal.docx
Empathic Computing: Creating Shared Understanding
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Network Security Unit 5.pdf for BCA BBA.
Machine learning based COVID-19 study performance prediction
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
NewMind AI Weekly Chronicles - August'25 Week I
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Diabetes mellitus diagnosis method based random forest with bat algorithm
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Spectral efficient network and resource selection model in 5G networks
Dropbox Q2 2025 Financial Results & Investor Presentation
20250228 LYD VKU AI Blended-Learning.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Teaching material agriculture food technology
Electronic commerce courselecture one. Pdf

Web Application Frameworks (WAF)

  • 2. What is a WAF? • A general purpose software framework • Used to build: • Dynamic websites • Web applications • Web API • Mostly based on MVC pattern • Push based (more popular) • Pull based
  • 3. Why should I bother using a WAF? • Community support • Don’t reinvent the wheel • Better application structure • Decrease development time • Free tools and components (more on this later) • Hundreds of developers are smarter than your team! (RoR => 3477)
  • 4. What is included in a typical WAF? • Asset management (some WAFs) • Generating sprites • Pre-compiling assets for production • Compiling SASS, Less and Coffescript on the fly (development) • Helpers • Security • Local authentication • Using OAuth • Controllers • Test tools
  • 5. What is included in a typical WAF? (cont.) • Scaffolding • Command line tools • I18n and L10n support • Templating engine (View layer) • Routing and URL mapping (no Default.aspx)! • Database access and abstraction (Model layer) • Migrations • Caching data • Databased agnostic • Object oriented database access (ORM)
  • 6. How does MVC work? Router Controller Model Browser View Request Dispatch Fetch dataPush data Render Response
  • 7. Some WAFs out there • PHP • Yii • Laravel • FuelPHP • CakePHP • Zend Framework • CodeIgniter (dead) => ExpressionEngine • Symfony => Yahoo Bookmarks, Delicious, DailyMotion • Python • Flask • Pylons • Django => Pinterest, Disqus, Instagram, Mozilla, Rdio
  • 8. Some WAFs out there (cont.) • Java/Scala • Lift => FourSquare • Play => LinkedIn, Klout, The Guardian • Java • Grails • Spring • ASP.NET (C#, VB) :( • ASP.NET MVC • Ruby :) • Sinatra => Apple, BBC, Heroku • Ruby on Rails =>Twitter, GitHub, Basecamp, Groupon, SoundCloud
  • 10. How does MVC work? Router Controller Model Browser View Request Dispatch Fetch dataPush data Render Response
  • 11. Making an HTTP request Router Controller Model Browser View Request Dispatch Fetch dataPush data Render Response
  • 12. Making an HTTP request (cont.) http://example.com/books/1 GET /books/1 HTTP/1.1 Host: example.com
  • 13. Routing and URL mapping Router Controller Model Browser View Request Dispatch Fetch dataPush data Render Response
  • 14. Routing and URL mapping (cont.) get “admin/news” match "admin/news", to: "admin#posts", as: "manage_news", via: :get Prefix Verb URI Pattern Controller#Action admin_news GET /admin/news admin#news Prefix Verb URI Pattern Controller#Action manage_news GET /admin/news admin#posts
  • 15. Routing and URL mapping (cont.) resources “books” Note the :id parameter Prefix Verb URI Pattern Controller#Action books GET /books books#index POST /books books#create new_book GET /books/new books#new edit_book GET /books/:id/edit books#edit book GET /books/:id books#show PATCH /books/:id books#update PUT /books/:id books#update DELETE /books/:id books#destroy
  • 16. Migrations, Models and Controllers Router Controller Model Browser View Request Dispatch Fetch dataPush data Render Response
  • 17. Migrations, Models and Controllers (cont.) class CreateBooks < ActiveRecord::Migration def change create_table :books do |t| t.string :title t.string :isbn t.integer :pages end end end $ rails g migration CreateBooks title isbn pages:integer What is a migration?
  • 18. Migrations, Models and Controllers (cont.) class BooksController < ApplicationController ... def show @book = Book.find(params[:id]) # /books/:id end ... end class Book < ActiveRecord::Base end
  • 20. Views (cont.) <p> <strong>Title:</strong> <%= @book.title %> </p> <p> <strong>ISBN:</strong> <%= @book.isbn %> </p> <p> <strong>Pages:</strong> <%= @book.pages %> </p> <%= link_to 'Edit', edit_book_path(@book) %> | <%= link_to 'Back', books_path %>
  • 21. Views (cont.) <p> <strong>Title:</strong> <%= @book.title %> </p> <p> <strong>ISBN:</strong> <%= @book.isbn %> </p> <p> <strong>Pages:</strong> <%= @book.pages %> </p> <%= link_to 'Edit', edit_book_path(@book) %> | <%= link_to 'Back', books_path %> Prefix Verb URI Pattern Controller#Action books GET /books books#index edit_book GET /books/:id/edit books#edit

Editor's Notes

  • #2: -Ask what is the difference between a web application and a normal web site?- The difference between Push/Pull