Web Architecture, 3-Tier Apps PDBM 15.1, 15.6 Dr. Chris Mayfield - - PowerPoint PPT Presentation

web architecture 3 tier apps
SMART_READER_LITE
LIVE PREVIEW

Web Architecture, 3-Tier Apps PDBM 15.1, 15.6 Dr. Chris Mayfield - - PowerPoint PPT Presentation

Web Architecture, 3-Tier Apps PDBM 15.1, 15.6 Dr. Chris Mayfield Department of Computer Science James Madison University Mar 24, 2020 Definitions What is The Internet? A global system of interconnected computer networks that use the Internet


slide-1
SLIDE 1

Web Architecture, 3-Tier Apps

PDBM 15.1, 15.6

  • Dr. Chris Mayfield

Department of Computer Science James Madison University

Mar 24, 2020

slide-2
SLIDE 2

Definitions

What is The Internet? A global system of interconnected computer networks that use the Internet protocol suite (TCP/IP) to link billions of devices worldwide.

https://en.wikipedia.org/wiki/Internet

What is the World Wide Web? An open source information space where documents and

  • ther web resources are identified by URLs, interlinked by

hypertext links, . . .

https://en.wikipedia.org/wiki/World Wide Web

Mar 24, 2020 Web Architecture, 3-Tier Apps 2 of 14

slide-3
SLIDE 3

How the web works

In short: ◮ Web servers “store” documents/etc ◮ Web clients (browsers) request them ◮ The Internet provides the file transfer

https://en.wikipedia.org/wiki/Hypertext Transfer Protocol

GET /index.html HTTP/1.1 Host: www.example.com ... HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 ... Request: Response:

Mar 24, 2020 Web Architecture, 3-Tier Apps 3 of 14

slide-4
SLIDE 4

How addresses work

See https://en.wikipedia.org/wiki/Uniform resource locator https://www.google.com/search?q=hello&ie=UTF-8 protocol host path query Notes about the query string: ◮ Key=value pairs ◮ Begins with ? ◮ Separated by & ◮ URL encoding

Mar 24, 2020 Web Architecture, 3-Tier Apps 4 of 14

slide-5
SLIDE 5

HTTP is stateless

When you browse the web: ◮ Client asks for URL ◮ Server returns a file ◮ Otherwise disconnected How to simulate an application? ◮ URL parameters (via GET/POST) ◮ Server-side sessions (via cookies) (we will mainly focus on parameters)

Mar 24, 2020 Web Architecture, 3-Tier Apps 5 of 14

slide-6
SLIDE 6

HTML forms

<form action="query.jsp" method="get"> <input type="text" name="title"> <input type="submit" name="ins" value="Insert" /> <br> <a href="query.jsp?del =%7 BGo+Dukes !%7D">Delete </a> </form >

Action ◮ Where to submit the form Method ◮ GET = parameters visible in URL query string ◮ POST = parameters in HTTP request headers

Mar 24, 2020 Web Architecture, 3-Tier Apps 6 of 14

slide-7
SLIDE 7

Demo: Chrome DevTools

https://developers.google.com/web/tools/chrome-devtools

Mar 24, 2020 Web Architecture, 3-Tier Apps 7 of 14

slide-8
SLIDE 8

Three-tier architecture

Source: https://en.wikipedia.org/wiki/Multitier architecture

Mar 24, 2020 Web Architecture, 3-Tier Apps 8 of 14

slide-9
SLIDE 9

Languages and software

Design principles ◮ Separation of concerns (data, logic, gui) ◮ Development: all tiers run on same machine ◮ Deployment: multiple machines for each tier

Mar 24, 2020 Web Architecture, 3-Tier Apps 9 of 14

slide-10
SLIDE 10

Example: Java

JSP = template for Java servlet ◮ See https://en.wikipedia.org/wiki/Java Servlet ◮ Goal: generate dynamic HTML response

<html > <body > Hello! The time is now <%= new java.util.Date () %> <% // this block of code is called a scriptlet

  • ut.print("<br >Your

machine ✬s address is ");

  • ut.println(request. getRemoteHost ());

%> </body > </html >

Mar 24, 2020 Web Architecture, 3-Tier Apps 10 of 14

slide-11
SLIDE 11

Example: PHP

PHP stands for “PHP Hyptertext Preprocessor” ◮ https://en.wikipedia.org/wiki/Recursive acronym Scripting language for generating HTML pages

<html > <body > Hello , today is <?php print(Date("l F d, Y")); ?>. </body > </html >

Language Reference: ◮ https://www.php.net/manual/en/langref.php

Mar 24, 2020 Web Architecture, 3-Tier Apps 11 of 14

slide-12
SLIDE 12

Example: Python

Hello world application:

from flask import Flask app = Flask(__name__) @app.route(✬/✬) def hello_world (): return ✬Hello , World!✬

Mar 24, 2020 Web Architecture, 3-Tier Apps 12 of 14

slide-13
SLIDE 13

Rendering Templates

Hello with a name:

from flask import render_template @app.route(✬/hello/✬) @app.route(✬/hello/<name >✬) def hello(name=None ): return render_template (✬hello.html ✬, name=name)

hello.html template:

<!doctype html > <title >Hello from Flask </title > {% if name %} <h1>Hello {{ name }}!</h1> {% else %} <h1>Hello , World!</h1> {% endif %}

Mar 24, 2020 Web Architecture, 3-Tier Apps 13 of 14

slide-14
SLIDE 14

Other frameworks

https://www.djangoproject.com https://nodejs.org http://rubyonrails.org

Mar 24, 2020 Web Architecture, 3-Tier Apps 14 of 14