Title: InternetIntranet
1Internet/Intranet
2Les techniques de développement de SIW
- Développement spécifique propriétaire
- CGI, SSI, Cookies
- Conserver l'architecture classique en y insérant
un système propriétaire - SapphireWeb, ColdFusion, WebObjects
- Adapter le serveur HTTP
- ISAPI(ASP), NSAPI (LiveWire), Modules Apache,
PSP, JSP - Adapter le serveur de données
- Oracle Web Server
3Les approches standards
- Langages
- CGI (Scripts indépendant exécutés par la machine
serveur) - SSI (Scripts exécutés par le serveur Web)
- JavaScripts (Scripts exécutés par le client)
- Protocole http
- Cookies (Identifiants échangés entre client et
serveur) - Relocation (Renvoie le client sur une autre page)
- Push
- Pages Web à linitiatives du serveur ou
- Demandées automatiquement par le client
4CGI
5Approche 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_SIDINSA echo "ltPREgt" /oracle/bin/sqlplus
-s bcb/bcb _at_/home/demo/bidon.sql echo "lt/PREgt"
6Approche 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
7Exemple Simple PERL
!/usr/local/bin/perl Accès
à la Base use DBI stat_size_indice
7 longueur_nom_medicament 9 MaxRecherche20
my(drh) DBI-gtinstall_driver('Oracle') die
"Can't install driver\n" dbh
drh-gtconnect('INSA', 'wwwapp', 'alix0') die
"Can't connect\n" my cursor
dbh-gtprepare(ltlt"REQUETE" select
tmed_cip, tmed_libelle, tgal_pluriel from
t_medicament, t_forme_galenique where
(rownum lt MaxRecherche and t_medicament.tgal_
idt_forme_galenique.tgal_id) order by
tmed_libelle REQUETE ) die "Can't
prepare\n" cursor-gtexecute() die "Can't
execute\n"
8Exemple suite
- Formatage de la réponse
- print "Content-type text/html\n\n"
- print "ltHTMLgtltBODYgtltTABLE BORDER1 CELLSPACING1
CELLPADDING0gtltTRgt" - nb_medicaments_dans_ligne 0
- while ( (cip_medicament, nom_medicament,
forme_galenique) cursor-gtfetchrow()) - nom_medicament substr(
nom_medicament, 0, longueur_nom_medicament) - if ((nb_medicaments_dans_ligne) 5)
- print "lt/TRgtltTRgt"
- nb_medicaments_dans_ligne 1
-
- print "ltTDgt"
- chop (forme_galenique)
- nom_medicament_avec_plus
nom_medicament - nom_medicament_avec_plus s/ /\/g
- print "ltA HREF\"descmedic.cgi?nom_medica
ment_avec_pluscip_medicament\"lt/Agt" - print "nom_medicament\n"
- print "lt/TDgt"
- print "lt/TRgtlt/TABLEgtlt/HTMLgt"
9Javascript
- Interprété sur le client JavaScript (Netscape)
/ Jscript (Microsoft) - Langage événementiel ?
- Arbre de composants documentaires
- Fonction d'accès et de manipulation des
composants de l'arbre - Utilisation ?
- http//Stars.com/Authoring/JavaScript
- http//netscape.developper.com/
10JavaScript Exemples
lt!-- function check(p) j0 while
(jltp.length) p.elementsj.checked
true if (p.elementsj.onclick)
p.elementsj.onclick() j
function show(o) var s "" for
(i in o) si""oi" ""\n"
wwindow.open( 'aboutblank' )
w.document.open( "text/plain" )
w.document.writeln( s ) w.document.close()
--gt
ltHTMLgt ltHEADgt lt SCRIPT SRC"jsinfo.js"gtlt/SCRIPTgt
lt/HEADgt ltBODYgt ltFORM NAMEungt ltINPUT
TYPECHECKBOX NAMEchk1 onclick'alert("hello"
)'gt ltINPUT TYPECHECKBOX NAMEchk2gt ltINPUT
TYPECHECKBOX NAMEchk2gt lt/FORMgt ltA HREF
onClick'javascriptshow(un)'gtalt/Agt ltA HREF
OnClick'javascriptshow(un.elements1)'gt1lt/Agt lt
A HREF onClick'javascriptshow(un.elements0)'
gt0lt/Agt ltA HREF onClick'javascriptcheck(un)'gta
ctiverlt/Agt ltIMG NAMEMonImage BORDER0
SRC"image1.gif" onMouseOver'MonImage.src"imag
e2.gif" onMouseOut'MonImage.src"image1.gif"gt lt
/BODYgtlt/HTMLgt
11HTTP Cookies
- Informations définies par le serveur et stockées
sur le client - Exemple
- Set-Cookie IdSession123123 path/annuaire
- Set-Cookie IdUsersteph path/
- gt GET /annuaire./toutlemonde.html
- Cookie IdSession123123 IdUsersteph
- Utilisation ?
12Client Pull / Serveur Push
Le serveur programme le client pour aller
chercher l'information
lthtmlgtltheadgtltmeta http-equiv"Refresh"
content"5 url"http//www.insa-
lyon.fr/"gt lttitlegtkkdssdkjskjdslt/titlegtlt/he
adgt ltbodygtCa va partir ! lt/bodygtlt/htmlgt
print ("Content-type multipart/x-mixed-replace
boundaryFICHIER_SUIVANT\n") print
("\n--FICHIER_SUIVANT\n") print ("Cha
Marche") sleep(3) print ("\n--FICHIER_SUIVANT\n"
) print ("Cha Marche")
Utilisation ?
13HTTP location
- En-tête http
- location http//www.insa-lyon.fr
- Demande au client daller rechercher la ressource
ailleurs - Exemple
- !/bin/sh
- echo  location http//serveur2/Â
- exec  /bin/serveur2Â
- Utilisations ?
14Architecture globale
15Architecture Web
16Server Side Include Schéma
17SSI
- Server Side Include (.shtml)
- Tag interprété par le serveur
- lt!- commande paramètre(s)"argument"-gt
- Commandes
- lt!- echo var"SERVER_NAME" -gt
- lt!- include file"truc.html" -gt(virtual)
- lt!- exec cmd"/bin/ps" -gt (cgi)
- Extensions
- php3 http//www.php3.net
- Microsoft ASP
- Utilisation ?
18Php exemple
- ... if (userLogin) / If user has provided a
login / - rowdb-gtgetAuth(userLogin, userMachine,
userTel, userBur, userNom, userPrenom) - if (row)?gt
- ltbgtltcentergtEst-ce bien votre connexion
?lt/bgtlt/centergtltBRgt - Login lt?echo row"userLogin"?gtltbrgt
- lthrgt
- Nom lt?echo row"userNom"?gtltbrgt
- Prénom lt?echo row"userPrenom"?gtltbr
gt - Mail lt?echo row"userAdress"?gtltbrgt
- Téléphone lt?echo row"userTel"?gtltbr
gt - Bureau lt?echo row"userBur"?gtltbrgt
- ltFORM ACTION"access.php3"
METHODPOSTgt - ltINPUT TYPEhidden nameuserLogin
value"lt?echo row"userLogin"?gt"gt - ltINPUT TYPEhidden nameuserMachine
value"lt?echo row"userMachine"?gt"gt - ltINPUT TYPEhidden nameuserAdress
value"lt?echo row"userAdress"?gt"gt - ltINPUT TYPEhidden nameuserTel
value"lt?echo row"userTel"?gt"gt - ltINPUT TYPEhidden nameuserBur
value"lt?echo row"userBur"?gt"gt - ltinput typehidden nameuserNom
value"lt?echo row"userNom"?gt"gt...
19Approches propriétaires
- Conserver l'architecture classique en y insérant
un système propriétaire - SapphireWeb, ColdFusion, WebObjects
- Adapter le serveur HTTP
- ISAPI(ASP), NSAPI (LiveWire), Modules Apache
- Adapter le serveur de données
- Oracle Web Server, MIIS
20Cold Fusion
ltHTMLgt ltCFQUERY NAME"Resultats"
DATASOURCE"INSA"gt SELECT
NOM_LABORATOIRE from laboratoires lt/CFQUERYgt
ltCFTABLE QUERY"Resultats"gt ltCFCOLS
WIDTH"30" TEXT"ltLIgt NOM_LABORATOIRE"gt
lt/CFTABLEgt
21Sapphire Web
22Web Objects (Next)
23Netscape LiveWire
ltHTLMgtltBODYgtltSERVERgt if (database.connected())
database.beginTransaction() qs"SELECT
NOM_LABORATOIRE from laboratoires"
resultsdatabase.cursor(qs)
while(result.next())
write("ltLIgtresults.NOM_LABORATOIRE
")gt results.close()
database.commitTransaction() lt/SERVERgtlt/HTMLgt
24Approche Oracle
- Oracle Web Server (gtOWApplicationS 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
25Architecture OWS
26OWS Exemple 1
- create or replace
- procedure afftab(nom_table in varchar2)
- is
- x boolean
- begin
- xowa_util.tableprint(nom_table, 'BORDER')
- end
- /
lthtmlgtltbodygt ltform METHOD"POST"
ACTION"http//lisiaix0/owa/afftabgt Nom de la
table ltINPUT NAME"nom_table" TYPE"TEXT"
VALUE""gt ltINPUT TYPE"SUBMIT"
VALUE"Afficher"gt lt/formgtlt/bodygtlt/htmlgt
27OWS 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 h
tp.bodyclose for enreg in c_tables
loop htp.print (enreg.table_name) htp.br en
d loop htp.bodyclose htp.htmlclose end /
28Approche Microsoft
"Interface entre Web et bases de données sous
Windows NT" A.Homer, Darren Gill, S.JakabEyrolles
1998
29Approche IDC
30Exemple
demo.idc DataSource INSA UserName
wwwapp Passwor d ????? Template
listeLabo.htx SQLStatement SELECT from
laboratoires
listLabo.htx lthtmlgtltbodygt ltBeginDetailgt Le nom
du labo est ltNOM_DU_LABORATOIREgtltBRgt ltEndD
etailgt lt/bodygt
31OLEISAPI
32Exemple
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.Return
Bonjour
33Quelle approche choisir ?
34Architectures Web
- Web de consultation
- Documentation
- Piloté par lutilisateur
- Internet
- Web Applicatif
- Applications
- Piloté par lapplication serveur
- Intranet
35Programmation
- 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
36Exécution de code
Serveur CGI shtml Serveur API Servlets
- Clients
- Plug-ins
- Scripts Documentaires
- Applets
37Sur 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
- gt Compatibilité/Portage
- Write Once, Run Everywhere
38Sur 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
39Architectures 3 tiers
40Serveur Transactionnel
41Transactions sur le Web