Architecture Web
Logiciel passerelle Client
Connexion spécifique Serveur
Web CGI
HTTP/
html
Connexion virtuelle
1er tronçon
2nd tronçon
Processus d’utilisation
Accès aux données
•Développement spécifique
•Conserver l'architecture classique en y insérant un système propriétaire
•SapphireWeb, ColdFusion, WebObjects
•Adapter le serveur HTTP
•ISAPI(ASP), NSAPI (LiceWire), Modules Apache
•Adapter le serveur de données
•Oracle Web Server
Approche Simple : CGI
Poste client
Client Web
Serveur 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
• Accès aux bases de données et Interrogation
• Analyse des résultats
• Présentation sous une forme compatible HTML
• Approche par les scripts / langages Compilés
Exemple Simple PERL
#!/usr/local/bin/perl
# ****************** Accès à 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 réponse
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 procédures cataloguées
– HTP : HyperText Procedures – HTF : HyperText Functions
• htp.print(htf.italic('coucou'));
– OWA_UTIL : utilitaires
• owa_util.tableprint
– OWA : procédures internes3
Architecture OWS
Poste client
Client Web
Web Listener
web Dispatcher
Procédures stockées
WRB API
cartouche PL/SQL cartouche
Java
WRBX WRBX WRBX
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
Apps CGI Filtres, etc...
Poste client
Client Web IIS
ISAPI
Procédures stockées
Internet DataBase
Connector (IDC) Microsoft dbWeb
Pilote ODBC
DLL OLEISAPI
Scripts Serveur ActiveX
Microsoft Index Server
Autres fonctions
"Interface entre Web et bases de données sous Windows NT"
A.Homer, Darren Gill, S.JakabEyrolles 1998
Approche IDC
Requête
ODBC Serveur
IDC SQL
Modèle HTX
URL du modèle et varaibles
Réponse
HTML
Résultats
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
Requête
ODBC Serveur
OLEISAPI.dll
Réponse
HTML
Résultats
DLL Serveur OLE
SQL
Autres fonctions
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
Requête ODBC
Nescape Enterprise Serveur
HTML, HTTP
Résultats
LiveWire Manager
SQL
HTML, JavaScript
<HTLM><BODY><SERVER>
if (database.connected()) { database.beginTransaction();
qs="SELECT NOM_LABORATOIRE from laboratoires";
results=database.cursor(qs);
while(result.next())
{
write("<LI>results.NOM_LABORATOIRE")>
}
results.close();
database.commitTransaction();
}</SERVER></HTML>
Cold Fusion
Requête
Server Web ODBC
HTML, HTTP
Résultats
Server Applicatif Cold Fusion
SQL
HTML, CFML
HTML, ISAPI, NSAPI, CGI
<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
Requête
Server Web
HTML
HTTP Extension
Serveur Web
Template HTML
ISAPI, NSAPI
Executables
Gestionnaire de server
applicatif
Sapphire/Web CGIs
Web Objects (Next)
Requête
Server Web
HTML
HTTP Web Object
Adapteur
Template HTML
ISAPI, NSAPI
WebObjects Application Executables
Fichiers de
déclaration WebScript File
Quelle approche choisir ?
Maintenabilité
Coût
Efficacité
Simplicité Modularité Portabilité Extensibilité Haute
Performance
Architectures Web
• Web de consultation
– Documentation
– Piloté par l’utilisateur – Internet
• Web Applicatif
– Applications
– Piloté par l’application serveur
– Intranet
Programmation
• Langages :
– Compilés : C, C++ ...
– Interprétés : Javascript, Perl, TCL, Python ...
• API et Serveurs Spécialisé
– NS_API, MS_ API, LiveWire, HyperWave
• L angages de balises
– C oldFusion, 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 spécifiques : Javascript, Vbscript, DHML
• Gestion des interaction avec utilisateurs
– + Réduire les échanges sur le réseau (information, contrôle, cache, action sur les éléments du document)
– - Code interprété / Machine Virtuelle – - Vitesse du client
• ==> Compatibilité/Portage
– Write Once, Run Everywhere
Sur le serveur
• Langages standards : C, C++, Java, Tcl, Python, Perl
• Langages spécifiques : LiveWire, WebObject, Cold Fusion
• Gestion des interactions :
– Applications complètes – Traitement de chaînes – Accès au réseau
– Flux de données
• ! gestion des sessions
Données Application
Moniteur transactionel SGBD
Processus d'interaction utilisateur
Processus d'utilisation
Processus de traitement Processus de Données
Serveur d'affichage Client d'affichage
Client de traitement Serveur de traitement
Serveur de données Client de données
1er Tier 2nd Tier 3ème Tier
Poste client
GUI