Web Application Frameworks. Robert M. Dondero, Ph.D. Princeton University



Similar documents
Django Web Framework. Zhaojie Zhang CSCI5828 Class Presenta=on 03/20/2012

Requirements Design Implementation. Software Architectures. Components Software Component Architecture. DSSA: Domain-Specific Software Architectures

Pentesting Web Frameworks (preview of next year's SEC642 update)

Web [Application] Frameworks

BEST WEB PROGRAMMING LANGUAGES TO LEARN ON YOUR OWN TIME

Web Frameworks. web development done right. Course of Web Technologies A.A. 2010/2011 Valerio Maggio, PhD Student Prof.

Nupic Web Application development

Slides from INF3331 lectures - web programming in Python

Exploring the Relationship Between Web Application Development Tools and Security

Rapid Application Development. and Application Generation Tools. Walter Knesel

Web Development Frameworks

Server-Side Scripting and Web Development. By Susan L. Miertschin

Web 2.0 Technology Overview. Lecture 8 GSL Peru 2014

Using Python, Django and MySQL in a Database Course

Rapid Website Deployment With Django, Heroku & New Relic

PRINCIPAL JAVA ARCHITECT JOB ID: WD001087

A Comparison of Open Source Application Development Frameworks for the Enterprise

JAVA IN THE CLOUD PAAS PLATFORM IN COMPARISON

Syllabus INFO-GB Design and Development of Web and Mobile Applications (Especially for Start Ups)

What s really under the hood? How I learned to stop worrying and love Magento

Syllabus INFO-UB Design and Development of Web and Mobile Applications (Especially for Start Ups)

Trollhättan, Sweden

A Comparative Study of Web Development Technologies Using Open Source and Proprietary Software

Whisler 1 A Graphical User Interface and Database Management System for Documenting Glacial Landmarks

Modern Web Development From Angle Brackets to Web Sockets

A Model of the Operation of The Model-View- Controller Pattern in a Rails-Based Web Server

CrownPeak Java Web Hosting. Version 0.20

Offerte del 13 giugno 2014

Web Development. Owen Sacco. ICS2205/ICS2230 Web Intelligence

APP DEVELOPMENT ON THE CLOUD MADE EASY WITH PAAS

COS 333: Advanced Programming Techniques

Logicify Fact Sheet. We bring logic to the software systems and development processes. We call this process to logicify.

Choosing a Content Management System (CMS)

Web Cloud Architecture

Introduction to FreeNAS development

Architecture Workshop

A review and analysis of technologies for developing web applications

Web Applications Come of Age

Introduction to Django Web Framework

Drupal Performance Tuning

Education. Relevant Courses

RED HAT SOFTWARE COLLECTIONS BRIDGING DEVELOPMENT AGILITY AND PRODUCTION STABILITY

DTWMS Required Software Engineers. 1. Senior Java Programmer (3 Positions) Responsibilities:

IT3504: Web Development Techniques (Optional)

ABTO Software PHP Web Development Overview

Evaluation. Chapter 1: An Overview Of Ruby Rails. Copy. 6) Static Pages Within a Rails Application

IBM Rational Web Developer for WebSphere Software Version 6.0

What is a stack? Do I need to know?

Case Studies PHP 2015

alchemy webapp framework Introduction What is alchemy?

ecommerce Facts and Stats 2015 and Beyond

CTIS 256 Web Technologies II. Week # 1 Serkan GENÇ

PHP FRAMEWORK FOR DATABASE MANAGEMENT BASED ON MVC PATTERN

A Practical Comparison of Agile Web Frameworks

Table of Contents. Table of Contents

CloudCERT (Testbed framework to exercise critical infrastructure protection)

GUI and Web Programming

A benchmark approach to analyse the security of web frameworks

Developing ASP.NET MVC 4 Web Applications MOC 20486

How To Build A Web App

The Django web development framework for the Python-aware

EECS 398 Project 2: Classic Web Vulnerabilities

Migration and Developer Productivity Solutions Retargeting IT for Emerging Business Needs

Open Source Content Management System for content development: a comparative study

Last time. Today. IaaS Providers. Amazon Web Services, overview

Performance Evaluation of PHP Frameworks (CakePHP and CodeIgniter) in relation to the Object-Relational Mapping, with respect to Load Testing

IT3503 Web Development Techniques (Optional)

Web Design Technology

Database Technologies MySQL, PostgreSQL, SQL Server, Oracle. Development Tools Eclipse, Aptana, NetBeans

Vincent Gabriel. Summary. Experience. Senior Software Developer at Landmark Network

Design Approaches of Web Application with Efficient Performance in JAVA

Oracle Application Express MS Access on Steroids

Case Study. Data Governance Portal Brainvire Infotech Pvt Ltd Page 1 of 1

Pooja Gautam ONLINE AIRLINE TICKETING SYSTEM

Web Programming Languages Overview

Chapter 13 Computer Programs and Programming Languages. Discovering Computers Your Interactive Guide to the Digital World

StableFlow is a software development company, focused on software outsourcing services to companies ranging from startups to large enterprise.

Private Clouds with Open Source

Course Number: IAC-SOFT-WDAD Web Design and Application Development

Additional information >>> HERE <<< Getting Instant Access free web hosting with cpanel and mysql Real User Experience

Information Technology Services

In this chapter, we lay the foundation for all our further discussions. We start

SwiftScale: Technical Approach Document

Web Application Development and Frameworks

Ruby on Rails is a web application framework written in Ruby, a dynamically typed programming language The amazing productivity claims of Rails is

AngularJS, Javascript, Prototype-based OO concept, RESTful Design Pattern, GWT, HTML5, Database.

Transcription:

Web Application Frameworks Robert M. Dondero, Ph.D. Princeton University 1

Objectives You will learn about: The Django web app framework Other MVC web app frameworks (briefly) Other web app frameworks (briefly) Web app framework assessment 2

Motivation Conventional approach to building a website: Write ad hoc client-side code In HTML, CSS, JavaScript, etc. Write ad hoc server-side code Well understood In Python, Java, PHP, etc. Write ad hoc code to access DBMS Web app frameworks mechanize (parts of) the process 3

Part 1: The Django Web App Framework 4

Django Jazz guitarist and composer Jean "Django" Reinhardt 1910-1953 5

The Django Web App Framework Who: Adrian Holovaty & Jacob Kaplan-Moss (Benevolent Dictators for Life) When: 1995 Why: Help web developers do more, use good style, and avoid security vulnerabilities Holovaty Kaplan-Moss 6

Django Characteristics A Python package (collection of modules) "Django lets you build deep, dynamic, interesting sites in an extremely short time. Django is designed to let you focus on the fun, interesting parts of your job while easing the pain of the repetitive bits. In doing so, it provides high-level abstractions of common Web-development patterns, shortcuts for frequent programming tasks, and clear conventions on how to solve problems. At the same time, Django tries to stay out of your way, letting you work outside the scope of the framework as needed." Holovaty and Kaplan-Moss 7

Django Test Server Django test web server Good for development Not good for deployed version To use: Handles only a single request at a time reliably No security audit Issue command: cd projectdirectory Issue command: python manage.py runserver In browser: http://localhost:8000/somepage 8

PennypackDjango1 App See PennypackDjango1 App book.py, database.py, common.py manage.py settings.py urls.py views.py Generalizing... 9

PennypackDjango1 App Django separates URL from file name Can use "pretty" URLs Can map multiple URLs to same function Can change function name without changing URL Can change URL without changing function name 10

PennypackDjango2 App See PennypackDjango2 App book.py, database.py manage.py settings.py urls.py header.html, footer.html, searchform.html, searchresults.html views.py Generalizing... 11

PennypackDjango2 App Templates Template tags, variables Can be used independent of Django Django separates: Presentation (.html templates) Business logic (views.py) Easy to compose HTML No need for redirection when author name is missing/empty! 12

PennypackDjango3 App See PennypackDjango3 App book.py, database.py, common.py settings.py urls.py header.html, footer.html, searchform.html, results.html views.py models.py Generalizing... 13

PennypackDjango3 App Django separates: Presentation (.html templates) Business logic (views.py) Model (the database) Programmer need not know SQL 14

PennypackDjango4 App PennypackDjango4 App book.py, database.py, common.py settings.py urls.py header.html, footer.html, searchform.html, results.html views.py models.py admin.py Generalizing... 15

PennypackDjango4 App Try in browser: http://localhost:8000/admin/ Django automatically provides an "administrator" interface Allows site administrator to manage content of application's database tables "A less powerful but more convenient version of your database's command-line utility" Not a public interface to application's data 16

And More! There is much more to Django See the Django book: Holovaty, Adrian & Kaplan-Moss, Jacob. The Definitive Guide to Django: Web Development Done Right (Second Edition). Apress. New York. 2009. Also online 17

Part 2: MVC Web App Frameworks 18

MVC Overall architecture... The Model-View-Controller (MVC) design pattern Model: The system's data access logic View: The system's data presentation logic Controller: (vague) The system's business logic; the logic that connect the data with the presentation 19

MVC in Django In Django Model: models.py View: HTML templates Controller: view.py (confusingly) 20

Other MVC Frameworks See http://en.wikipedia.org/wiki/comparison_of_web_application_frameworks For Python CherryPy, Django, Grok, Pyjamas, Pylins, Pyramid, TurboGears, web2py, Webward, Zope 3, Zope2 For Java Apache Click, Sling, Apache Struts, Apache Wicket, ItsNat, JavaServer Faces, JBoss Seam, Jspx-bay, Jvx WebUI, OpenXava, Play, RIFE, Spring, Stripes, Tapestry, WaveMaker, ztemplates, ZK 21

Other MVC Frameworks For PHP CakePHP, codeigniter, Zeta Components, Fusebox, Joomla, Kajona, Kohana, Midgard, Qcode, RedSpark, Symfony, Yii, Zend Framework, SilverStripe For Ruby Camping, Nitro, Ruby on Rails, Sinatra 22

Part 3: Web App Frameworks 23

GWT Google Web Toolkit Input: Output: Java code, similar to Swing Strong type checking (unlike JavaScript) Specifies browser GUI Equivalent JavaScript/HTML/CSS code One script for each popular browser!!! Hides browser incompatibilities 24

GAE Google App Engine (GAE) Web app framework (MVC) Hosting service Java or Python Python framework uses Django template engine Web server, file space, persistent storage Must use Google persistent data store (and not the DBMS of your choice) 25

EC2 Amazon Elastic Compute Cloud (EC2) Hosting service Users rent predefined "virtual machines" E.g. Ubuntu Linux, Apache Web server, MySQL, Python, and Django, running on the East coast of the U.S. Users can create virtual machines 26

Part 4: Web App Framework Assessment 27

Framework Assessment Positives Yields reliable code Framework code has been thoroughly tested Yields consistent code Code has uniform structure across apps Makes efficient use of programer time Framework handles repetitive parts "DRY" (don't repeat yourself) is encouraged 28

Framework Assessment Positives Allows separation of concerns: Model: DB administrator (SQL, normalization,...) View: Web designer (HTML, CSS,...) Controller: Programmer (Python, Java, ) Facilitates parallel development Can develop model, view, controller concurrently Facilitates maintenance Framework provides loose coupling Can change model, view, controller independently 29

Framework Assessment Negatives Can yield code that is difficult to understand and change Can yield systems that are large Can yield systems that are slow See Joel Spolsky's "Why I Hate Frameworks" http://discuss.joelonsoftware.com/default.asp?joel.3.219431.12 30

Summary We have covered: The Django web app framework Other MVC web app frameworks (briefly) Other web app frameworks (briefly) Web app framework assessment 31