41
Stéphane Frénot INT - 4 1 Internet/Intranet Les architectures

Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Embed Size (px)

Citation preview

Page 1: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 1

Internet/Intranet

Les architectures

Page 2: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 2

Les 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

Page 3: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 3

Les 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 à l’initiatives du serveur ou– Demandées automatiquement par le client

Page 4: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 4

CGI

Poste client Client Web

Serveur Web

.cgi

Page 5: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 5

Approche Simple : Exemple

set heading off

select 'Liste des laboratoires' from dual

/

set heading on

select * from laboratoires

/

exit

#!/usr/bin/kshecho Content-Type: text/htmlechoexport ORACLE_HOME=/oracleexport ORACLE_SID=INSAecho "<PRE>"/oracle/bin/sqlplus -s bcb/bcb @/home/demo/bidon.sqlecho "</PRE>"

Page 6: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 6

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

Page 7: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 7

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";

Page 8: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 8

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>";

Page 9: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 9

Javascript

• 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/

Page 10: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 10

JavaScript Exemples<!--function check(p) { j=0; while (j<p.length) { p.elements[j].checked = true; if (p.elements[j].onclick)

p.elements[j].onclick(); j++; } }

function show(o) { var s = ""; for (i in o) s+=i+"="+o[i]+" "+"\n"; w=window.open( 'about:blank' ); w.document.open( "text/plain" ); w.document.writeln( s ); w.document.close(); }-->

<HTML> <HEAD>

< SCRIPT SRC="jsinfo.js"></SCRIPT>

</HEAD>

<BODY>

<FORM NAME=un>

<INPUT TYPE=CHECKBOX NAME=chk1 onclick='alert("hello")'>

<INPUT TYPE=CHECKBOX NAME=chk2>

<INPUT TYPE=CHECKBOX NAME=chk2>

</FORM>

<A HREF=# onClick='javascript:show(un)'>a</A><A HREF=# OnClick='javascript:show(un.elements[1])'>1</A>

<A HREF=# onClick='javascript:show(un.elements[0])'>0</A>

<A HREF=# onClick='javascript:check(un)'>activer</A>

<IMG NAME=MonImage BORDER=0 SRC="image1.gif"

onMouseOver='MonImage.src="image2.gif"

onMouseOut='MonImage.src="image1.gif">

</BODY></HTML>

Page 11: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 11

HTTP Cookies

• Informations définies par le serveur et stockées sur le client

• Exemple – Set-Cookie: IdSession=123123; path=/annuaire– Set-Cookie: IdUser=steph; path=/

=> GET /annuaire./toutlemonde.html

Cookie: IdSession=123123; IdUser=steph

• Utilisation : ?

Page 12: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 12

Client Pull / Serveur PushLe serveur programme le client pour aller chercher l'information

print ("Content-type: multipart/x-mixed-replace; boundary=FICHIER_SUIVANT\n");

print ("\n--FICHIER_SUIVANT\n");

print ("Cha Marche");

sleep(3);

print ("\n--FICHIER_SUIVANT\n");

print ("Cha Marche");

<html><head><meta http-equiv="Refresh" content="5;

url="http://www.insa-lyon.fr/">

<title>kkdssdkjskjds</title></head>

<body>Ca va partir ! </body></html>

Utilisation ?

Page 13: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 13

HTTP : location

• En-tête http – location: http://www.insa-lyon.fr

• Demande au client d’aller rechercher la ressource ailleurs

• Exemple– #!/bin/sh– echo « location: http://serveur2/ »– exec « /bin/serveur2 »

• Utilisations ?

Page 14: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 14

Architecture globale

Poste c lient

M achine ServeurC lient W eb

Serveur W eb

.shtm l

.cgi

JavaScript

C ookies

C lient Pull

ServerPush

location

Page 15: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 15

Architecture Web

Logiciel

passerelle

Client

Connexion

spécifique

Serveur

WebCGI

HTTP/html

Connexion

virtuelle

1er tronçon

2nd tronçon

Processus d’utilisation

Page 16: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 16

Server Side Include Schéma

Poste client

Machine ServeurClient Web

Serveur Web

1 Le client émet une requête httphttp://www.insa-lyon.fr/recherche.cgi

6 Le client affiche ledocument et interagitavec l'utilisateur

4 Le fichier estréanalysé par leserveur

2 Le serveur contrôleles droits d'accès

.shtml

3 Le serveurrecherche le fichier

shtml

5 le fichier htmlest renvoyé auclient

Page 17: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 17

SSI• Server Side Include (.shtml)

– Tag interprété par le serveur : – <!- #commande paramètre(s)="argument"->

– Commandes : – <!- #echo var="SERVER_NAME" ->

– <!- #include file="truc.html" ->(virtual)

– <!- #exec cmd="/bin/ps" -> (cgi)

– Extensions :– php3 : http://www.php3.net

– Microsoft : ASP …

– Utilisation : ?

Page 18: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 18

Php exemple... if ($userLogin) { /* If user has provided a login */

$row=$db->getAuth($userLogin, $userMachine, $userTel, $userBur, $userNom, $userPrenom);

if ($row){?>

<b><center>Est-ce bien votre connexion ?</b></center><BR>

Login : <?echo $row["userLogin"]?><br>

<hr>

Nom : <?echo $row["userNom"]?><br>

Prénom : <?echo $row["userPrenom"]?><br>

Mail : <?echo $row["userAdress"]?><br>

Téléphone : <?echo $row["userTel"]?><br>

Bureau : <?echo $row["userBur"]?><br>

<FORM ACTION="access.php3" METHOD=POST>

<INPUT TYPE=hidden name=userLogin value="<?echo $row["userLogin"]?>">

<INPUT TYPE=hidden name=userMachine value="<?echo $row["userMachine"]?>">

<INPUT TYPE=hidden name=userAdress value="<?echo $row["userAdress"]?>">

<INPUT TYPE=hidden name=userTel value="<?echo $row["userTel"]?>">

<INPUT TYPE=hidden name=userBur value="<?echo $row["userBur"]?>">

<input type=hidden name=userNom value="<?echo $row["userNom"]?>">...

Page 19: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 19

Approches 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

Page 20: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 20

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>

Page 21: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 21

Sapphire Web

Requête

Server WebHTMLHTTP Extension

Serveur Web

TemplateHTML

ISAPI,NSAPI

Executables

Gestionnairede serverapplicatif

Sapphire/WebCGIs

Page 22: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 22

Web Objects (Next)

Requête

Server WebHTMLHTTP Web Object

Adapteur

TemplateHTML

ISAPI,NSAPI

WebObjectsApplication

Executables

Fichiers dedéclaration

WebScript File

Page 23: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 23

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>

Page 24: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 24

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

Page 25: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 25

Architecture OWS

Poste client Client Web

Web Listenerweb

Dispatcher

Procéduresstockées

WRB API

cartouchePL/SQL

cartoucheJava

WRBX WRBX WRBX

Page 26: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 26

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>

Page 27: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 27

OWS Exemple 2

create or replace procedure listtables iscursor 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 loophtp.bodyclose;htp.htmlclose;

end;/

Page 28: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 28

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

Page 29: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 29

Approche IDC

Requête

ODBC

Serveur

IDCSQL

ModèleHTX

URL du modèleet varaibles

Réponse

HTML

Résultats

Page 30: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 30

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>

Page 31: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 31

OLEISAPI

Requête

ODBC

Serveur

OLEISAPI.dll

Réponse

HTML

Résultats

DLL ServeurOLE

SQL

Autresfonctions

Page 32: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 32

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

Page 33: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 33

Quelle approche choisir ?

Maintenabilité

Coût

Efficacité

Simplicité Modularité Portabilité ExtensibilitéHaute

Performance

Page 34: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 34

Architectures Web

• Web de consultation– Documentation

– Piloté par l’utilisateur

– Internet

• Web Applicatif– Applications

– Piloté par l’application serveur

– Intranet

Page 35: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 35

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

Page 36: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 36

Serveur

CGI

shtml

Serveur API

Servlets

• Clients

– Plug-ins

– Scripts Documentaires

– Applets

Exécution de code

Page 37: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 37

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

Page 38: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 38

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

Page 39: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 39

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

Page 40: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 40

Serveur Transactionnel

Page 41: Stéphane Frénot1INT - 4 Internet/Intranet Les architectures

Stéphane FrénotINT - 4 41

Transactions sur le Web