Date post: | 26-Dec-2015 |
Category: |
Documents |
Upload: | emery-hampton |
View: | 219 times |
Download: | 2 times |
2
Outline
• Common Gateway Interface (CGI)• Java Applets• Server Extensions• PHP• Active Server Pages/ Java Server
Pages• What else is out there?• Architectures• Extended PHP example
6
• Some files on server are interpreted as programsdepending on either ext., flag or special directory
• Program is invoked and generates MIME header and HTML on stdout
Web-Server
Common Gateway Interface (CGI)
HTTP-Request
HTML-File
Web-Server
File-SystemLoad File
FileHTML?
HTML
Execute Program
Program?Output
I/O, Network, DB
7
Advantages:
- Standardized: works for every web-server, browser
- Flexible: Any language (C++, Perl, Java, …) can be used
Disadvantages:
- Statelessness: query-by-query approach
- Inefficient: new process forked for every request
- Security: CGI programmer is responsible for security
- Updates: To update layout, one has to be a programmer
CGI: Discussion
8
Java Applets
Web-ServerHTTP-Request
HTML-File
Web-Server
File-System
Load File
FileLoad Applet...
Java-Class Requests
Java-Classes
Execute Applet...
Java Virtual Machine (JVM)
Server-Process
9
Advantages:- Platform independent: works for every web-server and
browser supporting Java
Disadvantages:- Standalone Character:
· Entire session runs inside applet· HTML forms are not used
- Inefficient: loading can take a long time ...- Resource intensive: Client needs to be state of the art- Restrictive: can only connect to server where applet was
loaded from (Java VM but … can be configured)Note: Server-Process can be written in any language
Java Applets: Discussion
10
Java-Server-Process
DB Access in Java
Sybase
Java Applet
TCP/UDP
IP
Oracle ...
JDBC-Driver
JDBC-Driver
JDBC-Driver
JDBC Driver manager
11
Previous Approaches
- Platform independent and standardized
- Simple interface
- Lots of programming necessary
- Inefficient
Server Extensions
- Server is extended with handler/module
- One handler for all incoming requests
- Much more efficient
Server Extensions
12
Server Extensions: The Basic Idea
File-SystemWeb-Server
HTTP-Request
HTML-File
Web-Server
Load File
FileHTML?
HTML
I/O, Network, DB
Script?Output
Server Extension
13
• API depends on Server vendor:- Apache Foundation Apache Server: Apache API- Microsoft Internet Information Server: ISAPI- Netscape Enterprise Server: NSAPI
• One can define it’s own server extension, e.g.- Authentication module- Counter module
Server Extensions
14
• Active Server Pages (ASPs)- Available in Personal Web Server- Based on VBScript, Jscript- Modular Object Model- Active Server Components- Active Data Objects
(ADO) for Databaseaccess
- In MS .NET ASP+, ADO+ …
Active Server Pages
File-SystemWeb-Server
HTTP-Request
HTML-File
Load File
ASP-File
HTML
ASP-ScriptOutput
I/O, Network, DBActive Server Page
Scripting Engine
Active Server Components
15
ColdFusion
File-SystemWeb-Server
HTTP-Request
HTML-File
Web-Server
Load File
FileHTML?
HTML
CF Script?HTML
Cold Fusion Server Extension
Cold Fusion Application Server
ODBC-Driver Native
DB DB
Directories
COM/CORBA
16
ColdFusion: Simple Query
• Proprietary Scripting Language CFML - similar to other scripting languages<CFQUERY NAME=“PersonList”
DATASOURCE=“PersonDB”>SELECT * FROM Persons
</CFQUERY><HTML><BODY><H1> Person List </H1><CFOUTPUT QUERY=“PersonList”>
<B>Name:</B> #Name#<B>Age:</B> #Age# <B>Salary:</B> $#Sal# <BR>
</CFOUTPUT></BODY></HTML>
<HTML><BODY><H1> Person List </H1><B>Name:</B> Tom <B>Age:</B> 45<B>Salary:</B> $45000 <BR><B>Name:</B> Jim <B>Age:</B> 38<B>Salary:</B> $40000 <BR><B>Name:</B> Karen <B>Age:</B> 26<B>Salary:</B> $32000 <BR></BODY></HTML>
17
ColdFusion: Form Handling
<HTML><BODY><FORM ACTION="http://www.abc.com/cf/pf.cfm"><H1> Find Person </H1>Person Name <INPUT NAME="PNAME"> <p><INPUT TYPE="submit" VALUE="Find"></FORM></BODY></HTML>
<HTML><BODY><H1> Tom </H1><UL> <LI><B>Age:</B> 45 <LI><B>Salary:</B> $45000 <LI><A HREF=“www.tom.com” <B>Homepage</B></A></UL></BODY></HTML>
<CFQUERY NAME=“PersonInfo” DATASOURCE=“PersonDB”>SELECT * FROM Persons WHERE Name=#Form.PName#
</CFQUERY><HTML><BODY><CFOUTPUT QUERY=“PersonInfo”><H1> #Name# </H1><UL> <LI><B>Age=</B> #Age# <LI><B>Salary=</B> $#Sal# <LI><A href=“#URL#”><B>Homepage</B> </A></UL></CFOUTPUT></BODY></HTML>
18
ColdFusion: Misc. Issues
• Site admin sets up data sources very similar to the handling of ODBC data sources in MS Windows
• In fact ColdFusion combines techniques to access databases:- Generation of HTML code- Java Applets embedded via <CFGRID></CFGRID>
access the database through the application server
• Application server is also gateway to database for the ColdFusion IDE (ColdFusion Studio)
19
PHP
How does PHP differ from ASP and CF?
• Free, open source• Many client libraries
integrated• Runs on any web
server supporting CGIs (MS Windows or Unix)
• Module version for Apache
File-SystemWeb-Server
HTTP-Request
HTML-File
Load File
PHP-File
HTML
PHP-ScriptOutput
Database APIs,
other APIs SNMP,
IMAP, POP3,
LDAP, ...
PHP
Module
Web-Server
20
PHP: A Simple Example
<HTML> <BODY>
<?PHP $db = mysql_connect("localhost", "dbuser"); mysql_select_db("mydb",$db); $result = mysql_query("SELECT * FROM employees",$db);?>
<TABLE BORDER=1> <TR><TD>NAME</TD><TD>POSITION</TR>
<?PHP while ($myrow = mysql_fetch_row($result)) { printf("<tr><td>%s %s</td><td>%s</td></tr>\n", $myrow[1], $myrow[2], $myrow[3]); } ?>
</TABLE></BODY></HTML>
21
PHP: Misc Issues
• Syntax Perl/C like• Form fields are available as variables in
following page• has e.g. image and PDF generation on the fly• some OO features (e.g. classes)• The number of functions is steadily increasing
23
JSP Example—Hello.jsp
<html> <head> <title>My first JSP page </title> </head> <body> <%@ page language=”java” %> <% System.out.println(“Hello World”); %> </body> </html>
24
And the Output IS
<html> <head> <title>My first JSP page </title> </head> <body> Hello World</body> </html>
25
What Else Is Out There?
• Java Server Pages (JSP)- similar to PHP
• Java Servlets - very similar to CGIs
• A couple of solutions from Oracle- PENN ExpressApp is based on OWS
• various web shop applications- all of them use a more or less sophisticated
scripting language
• and a lot more ...
26
Databases Usually Used
• ASP- MS Jet Engine (DB engine behind MS Access)
- MS SQL Server
- Oracle (ODBC)
• ColdFusion- Oracle (native driver support)
- Informix (native driver support)
- Sybase (native driver support)
• PHP- MySQL (linked in client library)
- mSQL (linked in client library)
- Postgres (linked in client library)
- Oracle (linked in client library)
27
Architectures
• The architecture type depends on kind and number of servers involved
• Different archictures different advantages and disadvantages
• Generally we can distinguish between different types:- 2-tier architecture- 3-tier architecture- n-tier architecture
• What matters: SPEED
28
Web-Server
2-tier Architecture
• Web server plus module connecting to database, LDAP, IMAP, ...
HTTP-Request
HTML-File
Module
DB Directory
Mail Server
SNMP
1
2
29
2-tier Architecture
• Advantages:- easy and fast to setup- easy to administrate
• Disadvantages:- not fail safe (single point of failure)- scales badly on high loads
30
3-tier Architecture
• Web server plus application server connecting to database, IMAP, ...
DB DB Mail Server
SNMP
1
3
2
Web Server [Cluster]
Application Server [Cluster]
Other Servers [Cluster]
DBRepl.
31
3-tier Architecture
• Advantages:- better scalabilty- more reliable through failover mechanisms- offers better load balancing
• Disadvantages:- complicated to set up an maintain
32
Architectures: Usage
• 2-tier- Apache-PHP plus Database etc.
• 3-tier- ColdFusion 4.x, BEA Weblogic- Oracle Web Application Server?
• n-tier- big sites with custom systems
like Yahoo, Amazon.com, eBay
Classification not always 100%
33
Technology Choices
• PHP/{Oracle|mySQL}• ASP/Access/ODBC -- Need MS IIS• JSP/{Oracle|mySQL}/JDBC -- Need Tomcat
or Apache+JServ• Any Other Choices?
36
Plain HTML
<HTML><TITLE>Simple SQL Web Interface for Movie Table</TITLE><BODY><H1>Simple SQL Web Interface for Movie Table</H1>[PHP code here]<FORM ACTION="query.php3" METHOD=GET ENCTYPE="TEXT/PLAIN"><INPUT SIZE=100 MAXLENGTH=250 NAME="query" VALUE="select title, year, mid from movies"> </FORM>
</BODY></HTML>
37
Table Generation (Part 1)
<?php/* check for query, if empty describe movies */if (!isset($query)) {
$query = "describe movies";} else {
$query = stripslashes($query);print "<B>Your query: </B>\"" . $query . "\"\n";
}
$result = mysql_query($query, $conID)or die ("Invalid query");
// disable error reporting$eLevel = error_reporting(0);
?>
38
Table Generation (Part 2)
<?php/* generate table header or catch INSERT, DELETE and UPDATE statements */if (mysql_affected_rows($conID) > 0)
print "<B>affected " . mysql_affected_rows($conID) . " row(s)!</B><P>\n";if (mysql_num_rows($result) > 0) {
$noFields = mysql_num_fields($result);print "<table border=\"1\">\n<tr>\n";for ($i = 0; $i < $noFields; $i++)
print "<th><b>" . mysql_field_name($result, $i) . "</b></th>\n";print "</tr>\n";while ($row = mysql_fetch_array ($result)) {
print "<tr>\n";for ($i = 0; $i < $noFields; $i++)
print "<td> " . $row[$i] . " </td>\n";print "</tr>\n";
} print "</table>\n";
}?>
39
Links
• Software:- Apache: http://www.apache.org/- ASP: http://msdn.microsoft.com/workshop/server/default.asp- ColdFusion: http://www.allaire.com/coldfusion/- MySQL: http://www.mysql.com/ - Oracle: http://www.oracle.com/- Oracle Technet: http://technet.oracle.com/- PHP: http://www.php.net/, http://www.zend.com/
• Others:- c|net: http://www.builder.com/- DevShed: http://www.devshed.com/Server_Side/- Webmonkey: http://www.webmonkey.com/