View
106
Download
0
Category
Preview:
Citation preview
Architecture Web
Logiciel
passerelle
Client
Connexion
spécifique
Serveur
WebCGI
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 Baseuse 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_libelleREQUETE ) || 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 Listenerweb
Dispatcher
Procéduresstockées
WRB API
cartouchePL/SQL
cartoucheJava
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 CGIFiltres, etc...
Poste client Client Web IISISAPI
Procéduresstockées
Internet DataBaseConnector (IDC) Microsoft dbWeb
Pilote ODBC
DLL OLEISAPI
Scripts ServeurActiveX
Microsoft IndexServer
Autresfonctions
"Interface entre Web et bases de données sous Windows NT" A.Homer, Darren Gill, S.JakabEyrolles 1998
Approche IDC
Requête
ODBC
Serveur
IDCSQL
ModèleHTX
URL du modèleet 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 ServeurOLE
SQL
Autresfonctions
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êteODBC
Nescape Enterprise Serveur
HTML, HTTP
Résultats
LiveWireManager
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
ODBCServer WebHTML, HTTP
Résultats
ServerApplicatif 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 WebHTMLHTTP Extension
Serveur Web
TemplateHTML
ISAPI,NSAPI
Executables
Gestionnairede serverapplicatif
Sapphire/WebCGIs
Web Objects (Next)
Requête
Server WebHTMLHTTP Web Object
Adapteur
TemplateHTML
ISAPI,NSAPI
WebObjectsApplication
Executables
Fichiers dedé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
• 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 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
Architectures 3 tiers
Serveur Transactionnel
Transactions sur le Web
Recommended