3-Tier Web Architectures Ramakrishnan & Gehrke, Chapter 7 - - PowerPoint PPT Presentation

3 tier web architectures
SMART_READER_LITE
LIVE PREVIEW

3-Tier Web Architectures Ramakrishnan & Gehrke, Chapter 7 - - PowerPoint PPT Presentation

3-Tier Web Architectures Ramakrishnan & Gehrke, Chapter 7 www.w3schools.com www.webdesign.com 320302 Databases & Web Services (P. Baumann) 1 Overview Three-tier architectures Presentation tier Application tier 320302


slide-1
SLIDE 1

1 320302 Databases & Web Services (P. Baumann)

3-Tier Web Architectures

Ramakrishnan & Gehrke, Chapter 7 www.w3schools.com www.webdesign.com …

slide-2
SLIDE 2

2 320302 Databases & Web Services (P. Baumann)

Overview

  • Three-tier architectures
  • Presentation tier
  • Application tier
slide-3
SLIDE 3

3 320302 Databases & Web Services (P. Baumann)

  • Presentation
  • Primary interface to the user
  • Needs to adapt to different display devices (PC, PDA, cell phone, voice access, …)
  • Application (“business”) logic
  • Implements business logic (implements complex actions, maintains state between different

steps of a workflow)

  • Accesses different data management systems
  • Data management
  • One or more standard database management systems
  • system architecture determines whether these three components reside on

a single system (“tier) or are distributed across several tiers

Components of Data-Intensive Systems

slide-4
SLIDE 4

4 320302 Databases & Web Services (P. Baumann)

Client-Server Architectures

  • Work division: Thin client
  • Client implements only graphical user interface
  • Server implements business logic and data management
  • Work division: Thick client
  • Client implements both graphical user interface and business logic
  • Server implements data management
slide-5
SLIDE 5

5 320302 Databases & Web Services (P. Baumann)

Single-Tier Architectures

  • All functionality combined into a single tier
  • usually on a mainframe
  • User access through dumb terminals
  • Advantage
  • Easy maintenance and administration
  • Disadvantages
  • users expect graphical user interfaces
  • Heavy load on central system

server app_n app_1

slide-6
SLIDE 6

6 320302 Databases & Web Services (P. Baumann)

Disadvantages of Thick Clients

  • No central place to update the business logic
  • Security issues: Server needs to trust clients
  • Access control and authentication needs to be managed at the server
  • Clients need to leave server database in consistent state
  • One possibility: Encapsulate all database access into stored procedures
  • Does not scale to more than several 100s of clients
  • high data transfer volume between server and client
  • More than one server creates a problem:

x clients, y servers => x*y connections

slide-7
SLIDE 7

7 320302 Databases & Web Services (P. Baumann)

The Three-Tier Architecture

Database Management System Application Server Client Program (Web Browser) Presentation tier Middle tier Data management tier

slide-8
SLIDE 8

8 320302 Databases & Web Services (P. Baumann)

Example: Airline reservations

  • Consider a system for making
  • nline airline reservations
  • What is done in the different tiers?
  • Client Program
  • Log in different users
  • display forms and human-readable
  • utput
  • Application Server
  • Logic to make reservations, cancel

reservations, add new airlines, etc.

  • Database System
  • Airline info, available seats, customer

info, etc.

slide-9
SLIDE 9

9 320302 Databases & Web Services (P. Baumann)

Technologies

HTML Javascript XSLT JSP Servlets Cookies CGI Tables, XML Stored Procedures Database Management System Application Server Client Program (Web Browser) HTML Javascript XSLT Ajax

slide-10
SLIDE 10

10 320302 Databases & Web Services (P. Baumann)

Advantages of the Three-Tier Architecture

  • Heterogeneous systems
  • Tiers can be independently

maintained, modified, and replaced

  • Scalability
  • Replication at middle tier permits

scalability of business logic

  • Thin clients
  • Only presentation layer at clients (web

browsers)

  • Integrated data access
  • Several database systems can be

handled transparently at the middle tier

  • Central management of connections
  • Software development
  • Code for business logic is centralized
  • well-defined APIs between tiers allow

use of standard components

slide-11
SLIDE 11

11 320302 Databases & Web Services (P. Baumann)

Overview of Technologies: Client-side

  • Contents presented by browser (static)
  • Text, HTML/CSS, XML/DTD/XSL, images, movies, audio, ...
  • Contents interpreted by the browser
  • Dynamic HTML; Browser scripting: JavaScript, VBScript, ...
  • Programs executed in browser context
  • Java applets (byte code, virtual machine), ActiveX (native code)
  • Dedicated programs in browser context
  • Plug-ins (flash, ...)
  • External programs launched by browser
  • Helper applications
  • Security always an issue: keeping client machine safe from intruders
slide-12
SLIDE 12

12 320302 Databases & Web Services (P. Baumann)

  • Static contents (eg, HTML) with executable code
  • SSI (Server-Side Includes), XSSI
  • Server-side Scripting (Livewire, ASP, PHP, JSP, ...)
  • Generated contents
  • Separate process per call: CGI
  • Within server context: Fast-CGI, Servlets, ...
  • Server extensions
  • Google APIs, NSAPI, IISAPI, Apache modules, ...
  • Database gateways/frontends
  • Application servers
  • Security always an issue: keeping the server safe from intruders

Overview of Technologies: Server-side

Common requirements:

  • flexibility
  • good string (HTML!)

handling

  • rich functionality
  • DB connectivity
slide-13
SLIDE 13

13 320302 Databases & Web Services (P. Baumann)

Lecture Overview

  • Three-tier architectures
  • Presentation tier
  • Application tier
slide-14
SLIDE 14

14 320302 Databases & Web Services (P. Baumann)

The Presentation Tier

  • Recall: Functionality of the presentation tier
  • Primary interface to the user
  • Needs to adapt to different display devices (PC, PDA, cell phone, voice access?)
  • Simple functionality, such as field validity checking
  • Mechanisms:
  • HTML Forms: How to pass data to the middle tier
  • Dynamic HTML / JavaScript: Simple functionality at the presentation tier
  • Style sheets: Separating data from formatting (see earlier)
slide-15
SLIDE 15

15 320302 Databases & Web Services (P. Baumann)

HTML Forms

  • Common way to communicate data from client to middle tier
  • General format of a form:
  • <form action=“page.jsp” method=“GET” name=“loginForm”>

<input type=… value=… name=…> </form>

  • Components of an HTML form tag:
  • action: URI that handles the content
  • method: HTTP GET or POST method
  • name: Name of the form; can be used in client-side scripts to refer to the form
slide-16
SLIDE 16

16 320302 Databases & Web Services (P. Baumann)

JavaScript

  • Goal: Add functionality to the presentation tier
  • Sample applications:
  • Detect browser type and load browser-specific page
  • Browser control: Open new windows, close existing windows (example: pop-up ads)
  • Client-side interaction (conditional forms elements, validation, …)
  • embedded directly in HTML, or external reference
  • <script language=“JavaScript” src=“validate.js”/>
slide-17
SLIDE 17

17 320302 Databases & Web Services (P. Baumann)

JavaScript: Example

  • HTML Form:
  • Associated JavaScript:

<form method=”GET“ name=“LoginForm” action="TableOfContents.jsp"> Login: <input type="text" name="userid"/> Password: <input type="password“ name="password"/> <input type="submit“ value="Login“ name="submit” onClick=“testEmpty()”/> <input type=“reset” value=“Clear”/> </form> <script language="javascript"> function testEmpty() { loginForm = document.LoginForm if ( (loginForm.userid.value == "") || (loginForm.password.value == "") ) { alert( „Error: Empty userid or password.„ ); return false; } else return true; } </script>

slide-18
SLIDE 18

19 320302 Databases & Web Services (P. Baumann)

  • Consequence:

different code needed for different browsers

  • Remedy: driver level

with browser-specific differentiation

  • Bad: browser sniffing

if (navigator.appName == 'MS IE 6.0') ...

  • Better: capability sniffing

if (document.all && document.all.loginForm) document.all.loginForm = ....

  • Best: build driver layer

hiding specifics through capability sniffing function changeElem( id, newValue )

JavaScript: Browser Support

  • Document Object Model (DOM)

very different across browser types

  • Pertaining standard:

see www.w3c.org/DOM/

  • In particular, non-standard

in MS Internet Explorer

  • However, MS IE predominant (?)
  • Example: access to forms
  • document.loginForm
  • document.all.loginForm
slide-19
SLIDE 19

20 320302 Databases & Web Services (P. Baumann)

Lecture Overview

  • Three-tier architectures
  • Presentation tier
  • Application tier
slide-20
SLIDE 20

21 320302 Databases & Web Services (P. Baumann)

The Middle (Application) Tier

  • Recall: Functionality of the middle tier
  • Encodes business logic
  • Connects to database system(s)
  • Accepts form input from the presentation tier
  • Generates output for the presentation tier
  • Mechanisms:
  • CGI: Protocol for passing arguments to programs running at the middle tier
  • Application servers: Runtime environment at the middle tier
  • Servlets: Java programs at the middle tier
  • PHP: Program parts in schematic documents (see earlier)
  • How to maintain state at the middle tier
slide-21
SLIDE 21

22 320302 Databases & Web Services (P. Baumann)

CGI: Common Gateway Interface

  • Goal: Transmit arguments from HTML forms to application programs

running at the middle tier

  • Details of the actual CGI protocol unimportant
  • libraries implement high-level interfaces
  • Disadvantages:
  • application program invoked in new process at every invocation

(remedy: FastCGI)

  • No resource sharing (database connections!) between application programs

(remedy: application servers)

slide-22
SLIDE 22

23 320302 Databases & Web Services (P. Baumann)

Application Servers

  • Idea: Avoid overhead of CGI
  • Main pool of threads of processes
  • Manage connections
  • Enable access to heterogeneous data sources
  • Other functionality such as APIs for session management
slide-23
SLIDE 23

24 320302 Databases & Web Services (P. Baumann)

Application Server: Process Structure

Web Browser Web Server C++ Application JavaBeans DBMS 1 DBMS 2 Application Server Pool of Servlets HTTP JDBC ODBC

slide-24
SLIDE 24

25 320302 Databases & Web Services (P. Baumann)

Servlets

  • Java Servlets: Java code that runs on the middle tier
  • Platform independent
  • Complete Java API, including JDBC
  • Requires servlet engine (aka application server) such as Tomcat
  • Provides infrastructure to servlet: URL decoding, thread dispatching, std interfaces, …
  • Life of a servlet?
  • Webserver forwards request to servlet container
  • Container creates servlet instance
  • Container calls service() method
slide-25
SLIDE 25

26 320302 Databases & Web Services (P. Baumann)

Servlets vs. PHP

  • Servlets
  • Generate HTML by writing it to the “PrintWriter” object
  • Code first, webpage second
  • PHP
  • Written in HTML, Servlet-like code embedded in the HTML
  • Webpage first, code second
  • also executed by web server
  • Best suited for…?
  • servlets for “heavy-weight” services with high processing share
  • PHP for “light-weight” services with few processing
slide-26
SLIDE 26

27 320302 Databases & Web Services (P. Baumann)

Ex: Java With HTML Inside

Vice versa, ie: HTML with PHP inside? See earlier example & your project!

slide-27
SLIDE 27

28 320302 Databases & Web Services (P. Baumann)

Speed Comparison

  • Where is the overhead with CGI?
  • Fork process
  • Load Perl interpreter
  • Initialize Perl runtime system
  • Load payload script
  • Interpret / precompile&execute script
  • Sample benchmarks [LAMP book]
  • CGI vs. mod_perl

36 : 6 = 6

  • /cgi-bin vs. /perl

200 : 8 = 25

slide-28
SLIDE 28

29 320302 Databases & Web Services (P. Baumann)

  • http is stateless – but there is information that needs to persist
  • Old customer orders
  • “Click trails” of a user‟s movement through a site
  • Permanent choices a user makes
  • Advantages
  • Easy to use: don‟t need anything
  • Great for static-information applications
  • Requires no extra memory space
  • Disadvantage: No record of previous requests means:
  • No shopping baskets, no user logins
  • No custom or dynamic content
  • Security is more difficult to implement

Maintaining Client State

slide-29
SLIDE 29

30 320302 Databases & Web Services (P. Baumann)

Where to Keep Application State?

  • Client-side state
  • Information is stored on the client‟s computer in the form of a cookie
  • Hidden state
  • Information is hidden within dynamically created web pages
  • Server-side state
  • Information is stored in a database, or in the application layer‟s local memory
slide-30
SLIDE 30

31 320302 Databases & Web Services (P. Baumann)

Server-Side State

  • Various types of server-side state, such as:
  • 1. Store information in a database
  • Data will be safe in the database
  • BUT: requires a database access to query or update the information
  • 2. Use application layer‟s local memory
  • Can map the user‟s IP address to some state
  • BUT: this information is volatile and takes up lots of server main memory
slide-31
SLIDE 31

32 320302 Databases & Web Services (P. Baumann)

  • Advantages
  • Easy to use in Java Servlets / PHP
  • simple way to persist non-essential data
  • n client even when browser has closed
  • Disadvantages
  • Limit of 4 kilobytes
  • Users can (and often will) disable them
  • Usage: store interactive state
  • current user‟s login information
  • current shopping basket
  • Any non-permanent choices user has

made

Client-side State: Cookies

  • Cookie = (Name, Value) pair
  • Text stored on client, passed to the

application with every HTTP request

  • Lifetime can be preset (eg, 1 hour)
  • Can be disabled by client
  • wrongfully perceived as "dangerous",

therefore will scare away potential site visitors if asked to enable cookies

slide-32
SLIDE 32

33 320302 Databases & Web Services (P. Baumann)

Hidden State

  • overcome cookie disabling
  • Can “hide” data in two places:
  • Hidden fields within a form
  • path information
  • Requires no client or server “storage” of information
  • state information passed inside of each web page – “on the wire”
slide-33
SLIDE 33

34 320302 Databases & Web Services (P. Baumann)

Hidden State: Hidden Fields

  • Declare hidden fields within a form:
  • <input type=„hidden‟ name=„user‟ value=„username‟/>
  • Advantages
  • Users will not see information unless they view HTML source
  • Disadvantages
  • If used prolifically, it‟s a performance killer

– EVERY page must be contained within a form

  • Works only in presence of forms
slide-34
SLIDE 34

35 320302 Databases & Web Services (P. Baumann)

Hidden State: KVP Information

  • Information stored in URL GET request:
  • http://server.com/index.htm?user=jeffd
  • http://server.com/index.htm?user=jeffd&preference=pepsi
  • Parsing field in Java:
  • javax.servlet.http.HttpUtils.parserQueryString()
  • Advantages
  • Independent from forms
  • Disadvantages
  • Limited to URL size (some kB)
slide-35
SLIDE 35

36 320302 Databases & Web Services (P. Baumann)

Multiple state methods

  • Typically all methods of state maintenance are used:
  • User logs in and this information is stored in a cookie
  • User issues a query which is stored in the URL information
  • User places an item in a shopping basket cookie
  • User purchases items and credit-card information is stored/retrieved from a database
  • User leaves a click-stream which is kept in a log on the web server (which can later be

analyzed)

slide-36
SLIDE 36

37 320302 Databases & Web Services (P. Baumann)

  • Never use anything blindly that comes from client side
  • don't assume that JavaScript code has been executed
  • double check cookies on server
  • don't trust hidden fields contents
  • never assume anything!
  • set defaults (define in a central place!)
  • Clear state after request response
  • as with any API: clean, defensive programming
  • perform standard plausi checks:

admissible number ranges, empty strings, max string lengths!

  • Be paranoid !!!

Some Web Service Security Hints

slide-37
SLIDE 37

38 320302 Databases & Web Services (P. Baumann)

  • User management
  • Models for authentication and privacy management
  • Mobile Identity Management
  • Audit and accountability
  • Security and Privacy issues
  • Security as Quality of Service (QoS)
  • Privacy-preserving techniques
  • Trust Models and Trust Establishment
  • Scientific, business, industrial, legal and social implications
  • Futuristic Scenarios
  • law enforcement, supply chain management, e-Science, e-commerce, …

Identity Management

slide-38
SLIDE 38

39 320302 Databases & Web Services (P. Baumann)

Summary: 3-Tier Architectures

  • Web services commonly architected as having 3 components
  • Presentation / application / data management tier
  • Application tier needs most implementation flexibility
  • Rich choice of platforms (Java servlets, PHP, ...), each with tool support
  • To maintain state, use:
  • Hidden form fields, hidden paths, cookies, server store, …
  • For every aspect & component, security is an issue!