Architecture Web
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
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 " " /oracle/bin/sqlplus -s echo " "
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 " "; $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 " "; $nb_medicaments_dans_ligne = 1; } print " "; chop ($forme_galenique); $nom_medicament_avec_plus = $nom_medicament; $nom_medicament_avec_plus =~ s/ /\+/g; print " "; print "$nom_medicament\n"; print " "; } print " ";
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
OWS Exemple 1 create or replace procedure afftab(nom_table in varchar2) is x boolean; begin x:=owa_util.tableprint(nom_table, 'BORDER'); end; / Nom de la table <INPUT NAME="nom_table" TYPE="TEXT" VALUE=""> <INPUT TYPE="SUBMIT" VALUE="Afficher">
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.JakabEyrolles 1998
Approche IDC
Exemple demo.idc DataSource: INSA UserName : wwwapp Passwor d : ????? Template : listeLabo.htx SQLStatement : +SELECT * from laboratoires listLabo.htx Le nom du labo est:
OLEISAPI
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
Netscape LiveWire if (database.connected()) { database.beginTransaction(); qs="SELECT NOM_LABORATOIRE from laboratoires"; results=database.cursor(qs); while(result.next()) { write(" results.NOM_LABORATOIRE")> } results.close(); database.commitTransaction(); }
Cold Fusion SELECT NOM_LABORATOIRE from laboratoires #NOM_LABORATOIRE">
Sapphire Web
Web Objects (Next)
Quelle approche choisir ?
Architectures Web Web de consultation –Documentation –Piloté par lutilisateur –Internet Web Applicatif –Applications –Piloté par lapplication 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
Architectures 3 tiers
Serveur Transactionnel
Transactions sur le Web