29
Architecture Web Logiciel passerelle Client Connexion spécifique Serveur Web CGI HTTP/ html Connexion virtuelle 1er tronçon 2nd tronçon Processus d’utilisation

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,

Embed Size (px)

Citation preview

Page 1: 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,

Architecture Web

Logiciel

passerelle

Client

Connexion

spécifique

Serveur

WebCGI

HTTP/html

Connexion

virtuelle

1er tronçon

2nd tronçon

Processus d’utilisation

Page 2: 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,

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

Page 3: 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,

Approche Simple : CGI

Poste client Client Web

Serveur Web

.cgi

Page 4: 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,

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

Page 5: 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,

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 6: 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,

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 7: 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,

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 8: 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,

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 9: 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,

Architecture OWS

Poste client Client Web

Web Listenerweb

Dispatcher

Procéduresstockées

WRB API

cartouchePL/SQL

cartoucheJava

WRBX WRBX WRBX

Page 10: 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,

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 11: 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,

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;

/

Page 12: 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,

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 13: 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,

Approche IDC

Requête

ODBC

Serveur

IDCSQL

ModèleHTX

URL du modèleet varaibles

Réponse

HTML

Résultats

Page 14: 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,

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 15: 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,

OLEISAPI

Requête

ODBC

Serveur

OLEISAPI.dll

Réponse

HTML

Résultats

DLL ServeurOLE

SQL

Autresfonctions

Page 16: 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,

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 17: 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,

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 18: 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,

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 19: 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,

Sapphire Web

Requête

Server WebHTMLHTTP Extension

Serveur Web

TemplateHTML

ISAPI,NSAPI

Executables

Gestionnairede serverapplicatif

Sapphire/WebCGIs

Page 20: 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,

Web Objects (Next)

Requête

Server WebHTMLHTTP Web Object

Adapteur

TemplateHTML

ISAPI,NSAPI

WebObjectsApplication

Executables

Fichiers dedéclaration

WebScript File

Page 21: 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,

Quelle approche choisir ?

Maintenabilité

Coût

Efficacité

Simplicité Modularité Portabilité ExtensibilitéHaute

Performance

Page 22: 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,

Architectures Web

• Web de consultation– Documentation– Piloté par l’utilisateur– Internet

• Web Applicatif– Applications– Piloté par l’application serveur– Intranet

Page 23: 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,

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 24: 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,

Execution de code

• Serveur

– CGI

– shtml

– Serveur API

– Servlets

• Clients

– Plug-ins

– Scripts Documentaires

– Applets

Page 25: 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,

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 26: 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,

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 27: 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,

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 28: 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,

Serveur Transactionnel

Page 29: 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,

Transactions sur le Web