* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download ITY276 presentation 3
Survey
Document related concepts
Expense and cost recovery system (ECRS) wikipedia , lookup
Data analysis wikipedia , lookup
Microsoft Access wikipedia , lookup
Semantic Web wikipedia , lookup
Entity–attribute–value model wikipedia , lookup
Information privacy law wikipedia , lookup
Web analytics wikipedia , lookup
Microsoft SQL Server wikipedia , lookup
Concurrency control wikipedia , lookup
Data vault modeling wikipedia , lookup
Business intelligence wikipedia , lookup
Open data in the United Kingdom wikipedia , lookup
Versant Object Database wikipedia , lookup
Open Database Connectivity wikipedia , lookup
Relational model wikipedia , lookup
Transcript
COMP3241 E-Business Technologies Richard Henson University of Worcester October 2013 Week 3 – Early Web Applications, ActiveX, 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 shopping page using data from 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 means existing data can be more rapidly located… Real advantage of a true relational database is that SQL can be used for read/write & query database operations Linking Server Script code with a relational database To make a two-way link with a relational database: need relevant remote data access components for web server » components for IIS-based scripts downloaded from Microsoft (as MDAC) “datasets” need to be defined using a programming language & embedded SQL connectivity link needed to remote database, including path to/on web server 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) Same principles... 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 this... build the data round the processing… and often get it wrong Evolution of Application - RDBMS connectivity In the early web development days… the connection of an application to a particular relational database would be hard coded and made available as an API (application program interface) a client application then had to be written to use the proprietary API Even then, there was a problem: If more than one RDBMS needed to be used? several different APIs would be used each needed a client application… added greatly to the complexity of the task! Microsoft Solutions: (1) ODBC API Ideal: the “Universal Data Access” (UDA) model all data consumers interact with all data providers… response to the “API for each application” problem First stage: ODBC = Open Database Connectivity developed in early 1990s: » common API for writing applications to access ANY relational DBMS for which an ODBC driver had been written Once the APIs had all been written, tried, and tested… » any relational database with an ODBC compliant interface could use them » easy database path connectivity string management Limitations of ODBC Still far from the “Universal Data Access” (UDA) model only relational databases can work with ODBC model Other types of data needs to be displayed on web pages: Spreadsheets Graphics EDI data Other web data... ActiveX Next stage in evolution towards UDA... sexy name for OLE v2.0 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 What is 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 replacement of ODBC with OLE DB providers more flexible than DSN strings used with ODBC Data sources could indeed 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… a logical 'connection' can be set up with the database – wherever it is on the Internet! 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 – some still use “legacy” .asp scripting OLE DB – .aspx connectivity Whichever is used… 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 RAD tool can save a lot of time… Databases interacting with web pages Some early e-commerce applications used embedded local code (JavaScript) and a small local database 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? 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 (re client app): » » » » 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 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=holidays&la stname=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