Architecture Web Accs aux donnes Dveloppement spcifique Conserver
Architecture Web
Accès aux données • Développement spécifique • Conserver l'architecture classique en y insérant un système propriétaire • Sapphire. Web, Cold. Fusion, Web. Objects • Adapter le serveur HTTP • ISAPI(ASP), NSAPI (Lice. Wire), Modules Apache • Adapter le serveur de données • Oracle Web Server
Approche Simple : 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; $Max. Recherche=20; my($drh) = DBI->install_driver('Oracle') || die "Can't install drivern"; $dbh = $drh->connect('INSA', 'wwwapp', 'alix 0') || die "Can't connectn"; my $cursor = $dbh->prepare(<<"REQUETE" select tmed_cip, tmed_libelle, tgal_pluriel from t_medicament, t_forme_galenique where (rownum <= $Max. Recherche and t_medicament. tgal_id=t_forme_galenique. tgal_id) order by tmed_libelle REQUETE ) || die "Can't preparen"; $cursor->execute() || die "Can't executen";
Exemple suite #Formatage de la réponse print "Content-type: text/htmlnn" ; 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_medicamentn"; print "</TD>"; } print "</TR></TABLE></HTML>";
Approche Oracle • • Oracle Web Server (=>OWApplication. S V 3) Serveur Standard : Web Listener CGI 'like' : Web Request Broker (WRB) Toolkit : Ensemble de procédures cataloguées – HTP : Hyper. Text Procedures – HTF : Hyper. Text Functions • htp. print(htf. italic('coucou')); – OWA_UTIL : utilitaires • owa_util. tableprint – OWA : procédures internes 3
Architecture OWS
OWS Exemple 1 create or replace procedure afftab(nom_table in varchar 2) is x boolean; begin x: =owa_util. tableprint(nom_table, 'BORDER'); end; / <html><body> <form METHOD="POST" ACTION="http: //lisiaix 0/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 "Interface entre Web et bases de données sous Windows NT" A. Homer, Darren Gill, S. Jakab. Eyrolles 1998
Approche IDC
Exemple demo. idc list. Labo. htx Data. Source: INSA <html><body> User. Name : wwwapp <%Begin. Detail%> Passwor d : ? ? ? Le nom du labo est: <%NOM_DU_LABORATOIRE%><BR> Template : liste. Labo. htx SQLStatement : +SELECT * from laboratoires <%End. Detail%> </body>
OLEISAPI
Exemple Serveur OLE : toto. dll Public Sub Return. Bonjour (str. Value. Pairs. In As String, str. HTMLResponse As String) str. HTMLResponse ="Content-Type: text/html" & vb. Cr. LF & "Bonjour"; End Sub Public Sub main() End Sub http: //serveur. NT/utilisat/OLEISAPI. dll/toto. Return. Bonjour
Netscape Live. Wire <HTLM><BODY><SERVER> if (database. connected()) { database. begin. Transaction(); qs="SELECT NOM_LABORATOIRE from laboratoires"; results=database. cursor(qs); while(result. next()) { write("<LI>results. NOM_LABORATOIRE")> } results. close(); database. commit. Transaction(); }</SERVER></HTML>
Cold Fusion <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
Web Objects (Next)
Quelle approche choisir ?
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, Live. Wire, Hyper. Wave • Langages de balises – Cold. Fusion, Web. Object – PHP/FI • Outils – Sapphire Web – Live. Wire
Execution de code • Serveur – CGI – shtml • Clients – Plug-ins – Scripts Documentaires – Serveur API – Servlets – 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 : Live. Wire, Web. Object, Cold Fusion • Gestion des interactions : – Applications complètes – Traitement de chaînes – Accès au réseau – Flux de données • ! gestion des sessions
Architectures 3 tiers
Serveur Transactionnel
Transactions sur le Web
- Slides: 29