Architecture Web. Accès aux données Développement spécifique Conserver l'architecture...

Preview:

Citation preview

Architecture Web

Logiciel

passerelle

Client

Connexion

spécifique

Serveur

WebCGI

HTTP/html

Connexion

virtuelle

1er tronçon

2nd tronçon

Processus d’utilisation

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

Poste client Client Web

Serveur Web

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

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

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

Poste client Client Web

Web Listenerweb

Dispatcher

Procéduresstockées

WRB API

cartouchePL/SQL

cartoucheJava

WRBX WRBX WRBX

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>

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

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

Approche IDC

Requête

ODBC

Serveur

IDCSQL

ModèleHTX

URL du modèleet varaibles

Réponse

HTML

Résultats

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>

OLEISAPI

Requête

ODBC

Serveur

OLEISAPI.dll

Réponse

HTML

Résultats

DLL ServeurOLE

SQL

Autresfonctions

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

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>

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>

Sapphire Web

Requête

Server WebHTMLHTTP Extension

Serveur Web

TemplateHTML

ISAPI,NSAPI

Executables

Gestionnairede serverapplicatif

Sapphire/WebCGIs

Web Objects (Next)

Requête

Server WebHTMLHTTP Web Object

Adapteur

TemplateHTML

ISAPI,NSAPI

WebObjectsApplication

Executables

Fichiers dedéclaration

WebScript File

Quelle approche choisir ?

Maintenabilité

Coût

Efficacité

Simplicité Modularité Portabilité ExtensibilitéHaute

Performance

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, LiveWire, HyperWave

• Langages de balises– ColdFusion, 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

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

Serveur Transactionnel

Transactions sur le Web

Recommended