presentation3 - University Of Worcester
Download
Report
Transcript presentation3 - University Of Worcester
COMP3241
E-Business Technologies
Richard Henson
University of Worcester
October 2014
Week 3 – Evolution of Web Apps,
and Database connectivity
Objectives:
Contrast between client-end applications and
client-server applications
Explain the architecture of web-based database
connection with server-scripting
Create a presentable, updateable shopping page
using product data linked to a database
Flatfiles and Databases
Many so-called databases are just lists of data
organised according to “fields”
retrieval of search strings or numerical data can
take a looonnnggg time
Database proper logically links the data:
hierarchically
relationally
object-oriented
Relational still popular mainly because of SQL
Relational Databases
Tight data structure
saved data can be rapidly located…
Real advantage of a true relational
database is that SQL can be used for
read/write & query database operations
BUT… has to be properly designed
Database Design (1)
Same principles apply as with any other
relational database management
system (RDBMS)…
identify entities & attributes
produce entity relationship
define logic relationships between
entities
Database Design (2)
Any RDBMS…
make sure data is fully normalised
create tables & links
SQL statements need to communicate with the
data to:
» extract data from specific fields in particular tables
» put data into specific fields in particular tables
Some “self-taught” dynamic web developers
are unaware of all this...
build the data round the processing
often get it wrong
Evolution of Application
- RDBMS connectivity
Early days of web development …
connection between application and relational
database
hard coded
made available as an API (application program
interface)
client application then written to use the proprietary API
If more than one RDBMS needed?
several different APIs
each needed their own client application…
added further to the complexity of the task!
Linking server script code with
any data source: goal
Linking Server Script code
with a data source
Stage 1: 2-way link needed with a
relational database:
need relevant remote data access
components for web server
» components for IIS-based scripts downloaded from
Microsoft (as MDAC)
“datasets” defined using a programming
language & embedded SQL
connectivity link needed to remote
database, including path to/on web server
ActiveX
Next stage in evolution towards UDA...
made up of…
» OLE
Object Linking and Embedding…
» Combined with COM (VB source code)
Common Object Model
ActiveX Data Objects make up a series of
modular components called ADO
used for “run-time” web applications
basis of .net controls
The Success of ActiveX®?
V. successful Microsoft client-side invention…
(first move away from VB)
Run-time code (became known as “controls”)
NO source code so can’t be embedded in HTML,
but can be called from a HTML file
» runs on any Browser (not interpreted…)
allows compiled (i.e. executable) code to talk to
host applications
difficult to “hack” the code if source code not
available
Scripts compiled into executable versions so
source language is irrelevant
More about VB ActiveX
Data Objects (ADO)
Applied client-side ActiveX principles to
server-side
Simplified writing client applications to access
data sources through OLE DB providers
Data sources could now include:
spreadsheets
graphics
web pages…
Microsoft Solution (2) OLE DB
Application of OLE/ActiveX principles to
connectivity between applications and
databases
to be more precise, relational database
management systems!
Interface specification that provides a
layer of abstraction between:
a data provider e.g. relational DBMS
a data consumer e.g. business object or
client application
Universal Data Access achieved!
System Connection
to the Database using OLE DB
Provided by Microsoft Data Access
Components (MDAC)
easily downloaded:
» http://www.microsoft.com/enus/download/details.aspx?id=5793
covers wide range of databases
need most up-to-date version of MDAC (2.8
SP1) to work with latest database versions…
Use of MDAC with “path”
Once the correct component(s) have been
chosen…
logical 'connection' can be set up with the database
– wherever it is on the Internet!
BUT… if OLE DB connection isn’t correct, scripts on
web server can’t even link with, let alone interact
with, a relational database
“Database Path” must include:
a definition of where the database is
a few simple rules on how the database should be
treated
Making a connection to a
database on the web server
Two systems still used:
ODBC – “legacy” .asp scripting (VB source code)
OLE DB – .aspx connectivity (usually C# code behind)
Essential to get connectivity working correctly
» RAD tools like Visual Studio very helpful in achieving this…
Once connectivity achieved, server-script can
use embedded SQL commands to link to and
communicate smoothly with database tables
Local databases and
Local web pages (why not?)
Some Problems:
database took a long while to download
could be tampered with!
if database ran locally how could data be
updated… prices changed? new products
added?... without changing the
programming?
not possible!
massive security risk in any case!
Early online shopping
example : Shop@ssistant
Came out of the early “wow, Java” revolution in
web development
http://staffweb.worc.ac.uk/hensonr/shop@ssistant
Whole system (30kb) written in Java Script, runs
on the client machine (!)
stores & presents product data
shows all the components and functionality expected
of a shopping cart system
interfaces with merchant systems that can be used to
handle online payment
TAKE A LOOK!!! Or download and run it yourself
Critical Look at
Client-end “apps”
Absolutely
fantastic!
Even better on a mobile…
BUT usually for entertainment only…
only small data sources, or infrequently
changed data sources are used
usually “single user”
Whatever happened to
“client only” web shopping?
In an ideal (Internet) world everything would be
able to run via the browser on the client
machine. Result:
faster
all data local
app more controlled
The “Java+client-end HTML” model is fine…
until you need to store and change data… securely!!
Applications requiring
multi-client use & shared data
Specific multi-use requirement:
– large, regularly updated centralised data store that
needs to be accessed through many connections
– database downloaded every time the application is to
be used!
Conclusion:
» client not powerful enough?
» or enough storage capacity?
» not sufficient bandwidth?
» anyway, downloading databases can compromise
security
Secure remote database
used with local web page...
Accepted solution for client-server web
applications…
data held in a secure place
product data easily updated
database processing can happen at a
powerful server
Demands of Applications based
on centralised data storage!
Typically… the database must be :
secure
readily accessible from all clients
queried remotely
alterable only by specific persons
Only achievable through a
client-server model
Server Scripts
Run only on the web server
Very different from client-side
embedded code...
Only interact with client & HTML
browser through a client-server
model
How Server Scripts can
Interact with Databases
Contain
embedded
SQL code that
can extract
data from or
send data to a
database
How Server Scripts can
Interact with Databases
Whenever a
database is
updated…
» updated data
picked up by
server-script when
it runs
» updated data
displayed on client
How Server Scripts can
Interact with Databases
Whenever a
browser form
captures data…
» data transferred
directly to relevant
server
» then stored in
specified database
field(s)
How Server Scripts
Interact with Databases
Whenever database
information needs to
be presented:
database fields and
records taken into
server memory
data sent to local
machine to be
displayed within a
HTML format
Popular Types of Server Script
Embedded code with HTML:
.asp
.php
Java Server Pages
PERL
Separated programming code:
.cgi
.aspx
ASP.NET Environment
Principles of ActiveX applied to server
side
Controls contain “run-time” code
include OLEDB connectivity
work very quickly
very difficult to hack (assembly
language code)
Parameter Passing
between Programs
Essential to programming
Coding can rapidly get quite complex…
Essential in e-commerce for
product selection
passing data into a remote SQL query
sound horrendous?
» you’ll be eased into this gently
Mechanism for variable passing
between Dynamic Web Pages
Use HTML “forms” <form>..... </form>
with “GET” or “POST”
HTML “GET” function:
parameter/s tagged on to the URL e.g.
» GET www.address
/thetest.jsp?firstname=richard&password=holiday
s&lastname=henson&action=transferbankfunds
Can result in v. long URLs…
Variable Passing between
Dynamic Web Pages
Alternative: “POST”
within form definition...
e.g. POST /thetest.jsp
firstname=richard&password=holiday
s&lastname=henson&action=transfer
bankfunds
And now for the practical…
Thanks for listening!
And for next week:
http://csharpdotnetfreak.blogspot.com/2009/05/as
pnet-creating-shopping-cart-example.html