Vous êtes sur la page 1sur 29

Architecture Web

1er tronon 2nd tronon


HTTP/ html Client Serveur Web CGI Connexion spcifique Logiciel passerelle
Processus dutilisation

Connexion virtuelle

Accs aux donnes


Dveloppement spcifique Conserver l'architecture classique en y insrant un systme propritaire SapphireWeb, ColdFusion, WebObjects

Adapter le serveur HTTP


ISAPI(ASP), NSAPI (LiceWire), Modules Apache Adapter le serveur de donnes

Oracle Web Server

Approche Simple : CGI

Serveur Web
Poste client

Client Web .cgi

Approche Simple : Exemple


set heading off select 'Liste des laboratoires' from dual / set heading on select * from laboratoires / exit #!/usr/bin/ksh echo Content-Type: text/html echo export ORACLE_HOME=/oracle export ORACLE_SID=INSA echo "<PRE>" /oracle/bin/sqlplus -s bcb/bcb @/home/demo/bidon.sql echo "</PRE>"

Approche Simple Langage

Accs aux bases de donnes et Interrogation


Analyse des rsultats Prsentation sous une forme compatible HTML

Approche par les scripts / langages Compils

Exemple Simple PERL


#!/usr/local/bin/perl # ****************** Accs la Base use DBI; $stat_size_indice = 7; $longueur_nom_medicament = 9; $MaxRecherche=20; my($drh) = DBI->install_driver('Oracle') || die "Can't install driver\n"; $dbh = $drh->connect('INSA', 'wwwapp', 'alix0') || die "Can't connect\n"; my $cursor = $dbh->prepare(<<"REQUETE" select tmed_cip, tmed_libelle, tgal_pluriel from t_medicament, t_forme_galenique where (rownum <= $MaxRecherche and t_medicament.tgal_id=t_forme_galenique.tgal_id) order by tmed_libelle REQUETE ) || die "Can't prepare\n"; $cursor->execute() || die "Can't execute\n";

Exemple suite
#Formatage de la rponse print "Content-type: text/html\n\n" ; print "<HTML><BODY><TABLE BORDER=1 CELLSPACING=1 CELLPADDING=0><TR>"; $nb_medicaments_dans_ligne = 0; while ( ($cip_medicament, $nom_medicament, $forme_galenique) = $cursor->fetchrow()) { $nom_medicament = substr( $nom_medicament, 0, $longueur_nom_medicament); if (($nb_medicaments_dans_ligne)++ == 5) { print "</TR><TR>"; $nb_medicaments_dans_ligne = 1; } print "<TD>"; chop ($forme_galenique); $nom_medicament_avec_plus = $nom_medicament; $nom_medicament_avec_plus =~ s/ /\+/g; print "<A HREF=\"descmedic.cgi?$nom_medicament_avec_plus=$cip_medicament\"</A>"; print "$nom_medicament\n"; print "</TD>"; } print "</TR></TABLE></HTML>";

Approche Oracle
Oracle Web Server (=>OWApplicationS V3) Serveur Standard : Web Listener CGI 'like' : Web Request Broker (WRB) Toolkit : Ensemble de procdures catalogues
HTP : HyperText Procedures HTF : HyperText Functions
htp.print(htf.italic('coucou'));

OWA_UTIL : utilitaires
owa_util.tableprint

OWA : procdures internes3

Architecture OWS
Web Listener

web Dispatcher

Poste client

Client Web

WRBX

WRBX

WRBX

WRB API
cartouche Java cartouche PL/SQL

Procdures stockes

OWS Exemple 1
create or replace procedure afftab(nom_table in varchar2) is x boolean; begin x:=owa_util.tableprint(nom_table, 'BORDER'); end; / <html><body> <form METHOD="POST" ACTION="http://lisiaix0/owa/afftab> Nom de la table <INPUT NAME="nom_table" TYPE="TEXT" VALUE=""> <INPUT TYPE="SUBMIT" VALUE="Afficher"> </form></body></html>

OWS Exemple 2
create or replace procedure listtables is cursor c_tables is select table_name from user_tables; begin htp.htmlopen; htp.headopen; htp.htitle('Liste des tables'); htp.headclose; htp.bodyclose; for enreg in c_tables loop htp.print (enreg.table_name); htp.br; end loop htp.bodyclose; htp.htmlclose; end; /

Approche Microsoft

Poste client

Client Web

IIS ISAPI

Scripts Serveur ActiveX Apps CGI Filtres, etc...

Internet DataBase Connector (IDC)

Microsoft dbWeb

DLL OLEISAPI

Pilote ODBC Microsoft Index Server

Autres fonctions

Procdures stockes

"Interface entre Web et bases de donnes sous Windows NT" A.Homer, Darren Gill, S.JakabEyrolles 1998

Approche IDC

Serveur SQL IDC ODBC


Rsultats

Requte

URL du modle et varaibles

Modle HTX
HTML

Rponse

Exemple

demo.idc DataSource: INSA UserName : wwwapp Passwor d : ????? Template : listeLabo.htx SQLStatement : +SELECT * from laboratoires

listLabo.htx <html><body> <%BeginDetail%> Le nom du labo est: <%NOM_DU_LABORATOIRE%><BR>

<%EndDetail%>
</body>

OLEISAPI
Serveur OLEISAPI.dll DLL Serveur OLE Autres fonctions SQL ODBC
Rsultats

HTML

Requte

Rponse

Exemple
Serveur OLE : toto.dll Public Sub ReturnBonjour (strValuePairsIn As String, strHTMLResponse As String)

strHTMLResponse ="Content-Type: text/html" & vbCrLF & "Bonjour";


End Sub Public Sub main() End Sub http://serveurNT/utilisat/OLEISAPI.dll/toto.ReturnBonjour

Netscape LiveWire
Nescape Enterprise Serveur
HTML, HTTP

Requte

LiveWire Manager

SQL ODBC
Rsultats

HTML, JavaScript

<HTLM><BODY><SERVER> if (database.connected()) { database.beginTransaction();

{ write("<LI>results.NOM_LABORATOIRE")> } results.close(); database.commitTransaction(); }</SERVER></HTML>

qs="SELECT NOM_LABORATOIRE from laboratoires";


results=database.cursor(qs); while(result.next())

Cold Fusion
SQL ODBC
Rsultats

HTML, HTTP

Server Web
HTML, ISAPI, NSAPI, CGI

Server Applicatif Cold Fusion

Requte

HTML, CFML

<HTML> <CFQUERY NAME="Resultats" DATASOURCE="INSA"> SELECT NOM_LABORATOIRE from laboratoires

</CFQUERY>
<CFTABLE QUERY="Resultats"> <CFCOLS WIDTH="30" TEXT="<LI> #NOM_LABORATOIRE"> </CFTABLE>

Sapphire Web

HTML HTTP

Server Web
ISAPI, NSAPI

Extension Serveur Web

Executables

Requte
Gestionnaire de server applicatif Template HTML

Sapphire/Web CGIs

Web Objects (Next)

HTML HTTP

Server Web
ISAPI, NSAPI

Web Object Adapteur

WebObjects Application Executables

Requte

Template HTML

Fichiers de dclaration

WebScript File

Quelle approche choisir ?

Cot

Maintenabilit

Efficacit

Simplicit

Modularit

Portabilit

Extensibilit

Haute Performance

Architectures Web
Web de consultation
Documentation Pilot par lutilisateur Internet

Web Applicatif
Applications Pilot par lapplication serveur Intranet

Programmation
Langages :
Compils : C, C++ ... Interprts : Javascript, Perl, TCL, Python ...

API et Serveurs Spcialis


NS_API, MS_ API, LiveWire, HyperWave

Langages de balises

ColdFusion, WebObject
PHP/FI

Outils
Sapphire Web LiveWire

Execution de code

Serveur
CGI shtml Serveur API Servlets

Clients
Plug-ins

Scripts Documentaires
Applets

Sur le client
Langages standards : Java, Python, Tcl Langages spcifiques : Javascript, Vbscript, DHML Gestion des interaction avec utilisateurs
+ Rduire les changes sur le rseau (information, contrle, cache,

action sur les lments du document)


- Code interprt / Machine Virtuelle - Vitesse du client

==> Compatibilit/Portage
Write Once, Run Everywhere

Sur le serveur
Langages standards : C, C++, Java, Tcl, Python, Perl Langages spcifiques : LiveWire, WebObject, Cold Fusion Gestion des interactions :
Applications compltes

Traitement de chanes
Accs au rseau Flux de donnes

! gestion des sessions

Architectures 3 tiers
Processus d'interaction utilisateur Processus d'utilisation Processus de traitement Processus de Donnes

Poste client Application GUI

Moniteur transactionel

SGBD

Donnes

1er Tier
Serveur d'affichage

2nd Tier
Serveur de traitement

3me Tier

Client d'affichage Client de traitement

Client de donnes Serveur de donnes

Serveur Transactionnel

Transactions sur le Web