• Aucun résultat trouvé

Architecture Web

N/A
N/A
Protected

Academic year: 2022

Partager "Architecture Web"

Copied!
29
0
0

Texte intégral

(1)

Architecture Web

Logiciel passerelle Client

Connexion spécifique Serveur

Web CGI

HTTP/

html

Connexion virtuelle

1er tronçon

2nd tronçon

Processus d’utilisation

(2)

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

(3)

Approche Simple : CGI

Poste client

Client Web

Serveur Web

.cgi

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

Architecture OWS

Poste client

Client Web

Web Listener

web Dispatcher

Procédures stockées

WRB API

cartouche PL/SQL cartouche

Java

WRBX WRBX WRBX

(10)

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>

(11)

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;

/

(12)

Approche Microsoft

Apps CGI Filtres, etc...

Poste client

Client Web IIS

ISAPI

Procédures stockées

Internet DataBase

Connector (IDC) Microsoft dbWeb

Pilote ODBC

DLL OLEISAPI

Scripts Serveur ActiveX

Microsoft Index Server

Autres fonctions

"Interface entre Web et bases de données sous Windows NT"

A.Homer, Darren Gill, S.JakabEyrolles 1998

(13)

Approche IDC

Requête

ODBC Serveur

IDC SQL

Modèle HTX

URL du modèle et varaibles

Réponse

HTML

Résultats

(14)

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>

(15)

OLEISAPI

Requête

ODBC Serveur

OLEISAPI.dll

Réponse

HTML

Résultats

DLL Serveur OLE

SQL

Autres fonctions

(16)

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

(17)

Netscape LiveWire

Requête ODBC

Nescape Enterprise Serveur

HTML, HTTP

Résultats

LiveWire Manager

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>

(18)

Cold Fusion

Requête

Server Web ODBC

HTML, HTTP

Résultats

Server Applicatif 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>

(19)

Sapphire Web

Requête

Server Web

HTML

HTTP Extension

Serveur Web

Template HTML

ISAPI, NSAPI

Executables

Gestionnaire de server

applicatif

Sapphire/Web CGIs

(20)

Web Objects (Next)

Requête

Server Web

HTML

HTTP Web Object

Adapteur

Template HTML

ISAPI, NSAPI

WebObjects Application Executables

Fichiers de

déclaration WebScript File

(21)

Quelle approche choisir ?

Maintenabilité

Coût

Efficacité

Simplicité Modularité Portabilité Extensibilité Haute

Performance

(22)

Architectures Web

• Web de consultation

– Documentation

– Piloté par l’utilisateur – Internet

• Web Applicatif

– Applications

– Piloté par l’application serveur

– Intranet

(23)

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

(24)

Execution de code

• Serveur

– CGI – shtml

– Serveur API – Servlets

• Clients

– Plug-ins

– Scripts Documentaires

– Applets

(25)

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

(26)

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

(27)

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

(28)

Serveur Transactionnel

(29)

Transactions sur le Web

Références

Documents relatifs

Un SGBDR (Système de Gestion de Bases de Données Relationnel) est un logiciel qui permet de :. - stocker, - consulter, - modifier,

– SCHEMA est un param`etre optionnel pour identifier le sch´ema de la base de donn´ee dans laquelle cette table doit ˆetre plac´ee.. Par d´efaut, c’est celui

c Une commande SQLPLUS peut être tapée sur plusieurs lignes, chaque ligne intermédiaire étant terminée par -. SQLPLUS commence la ligne suivante par

Pour cr´eer une table Oracle en SQL, il existe l’instruction CREATE TABLE dans laquelle sont pr´ecis´es pour chaque colonne de la table : son intitul´e, son type de donn´ee et une

Notes de cours sur l'exercice chat Installer node dans votre compte.. tar

[r]

When information is needed by the database, for example, to check whether a table column specified in a query exists, the dictionary tables are read and the data returned is stored

Contient les données et les informations de contrôle pour le serveur Oracle.. Est allouée de la mémoire virtuelle de l'ordinateur où réside le