Module BD et sites WEB Cours 8– Bases de données et Web Anne Doucet [email protected] 1 Architectures Web • Le Web • Architecture – Client/serveur 3-tiers – Serveurs d’applications • Web et BD • Couplage HTML-BD – Scripts CGI – Serveurs de pages 2 Le Web (ou World Wide Web) Système hypermédia distribué fonctionnant sur TCP/IP – simple à utiliser • Navigateurs graphiques, interactifs : Netscape, Explorer – portable – faible coût – Standard • HTTP, HTTPS, URL, HTML, XML • Évolutions contrôlées par le W3C (MIT, Inria, U. de Keisho) – accès aux applications Internet – objets répartis : Java, ActiveX • Permettent de télécharger du code 3 Architecture d’un serveur Web requête Interface HTTP Index répertoire administration Contrôle d’accès traducteur Accès document Document HTML Interface CGI réponse Programme externe 4 Fonctionnement du Web Architecture client-serveur à deux niveaux Le serveur met à disposition des documents HTML Le client accède aux documents HTML via un navigateur Entre les deux, un réseau supportant le protocole TCP/IP page HTML navigateur client documents HTML TCP/IP serveur supportant HTTP 5 Fonctionnement du Web Pour consulter un document (ex: http://serveur/page.html) 1. Le navigateur demande à son DNS (Domain Name Server) de lui renvoyer l’adresse IP du serveur demandé dans l’URL (Uniform Ressource Locator) 2. Le navigateur envoie une requête à l’adresse IP pour demander la page.html précisée dans l’URL. 3. le serveur envoie la page au client. 4. le navigateur interprète la page et l’affiche. HTTP : protocole de transfert permettant de demander un fichier au serveur ainsi qu’une description de types des données associées. IP : Internet Protocol 6 Evolution des architectures PC Besoins : •Ergonomie •Simplicité •intégration Serveurs d’entreprise C/S 2 tiers IHM applications Applications Transactions Bases de données Besoins : •Fiabilité •Passage à l’échelle •Performances Standards : SQL3, CORBA, etc. Standards : Web, Java, XML, etc C/S 3 tiers Serveur d’applications App Internet : E-commerce, Internet, Extranet 7 Architecture client/serveur 3-tiers Applications existantes Serveur d’application Interface utilisateur Serveur d’application Applications et transactions Serveur de données 8 Avantages du 3-tiers • Client universel – Standard, multimédia • Browser Web, client EJB, client COM, client CORBA – Applets – Portabilité • Serveur d’application – Facilite la maintenance et le déploiement d’applications – Facilite le passage à l’échelle (à n serveurs d’applications) – Facilite l’accès à des serveurs de données hétérogènes • Peut être généralisé à n tiers 9 Limites de HTML • Difficile à maintenir (modifications manuelles des pages) • Pas de personnalisation • Impossible de créer une page dynamiquement à partir d’une base de données 10 Serveur d’application • Simple = serveur Web – Petites applications, pas de transactions • Serveur d’entreprise = serveur Web + – Support des grandes applications, distribuées • Standard CORBA, Open Group (XA) – – – – Support des transactions Support des composants Support de XML Outils de développement 11 Applications • • • • • • Intranet Portails d’entreprises Commerce électronique E-business Publication en ligne … 12 BD pour le Web • Commerce électronique : • • • • • présentation de catalogues Édition de rapports Intégrité des données transactions sur Internet (saisie, paiement, suivi de commande) couplage aux BD de l’entreprise • Génération de sites Web • • • • • • Cohérence Maintenance Uniformisation Gestion des métadonnées SQL + indexation Augmentation de la productivité du développeur 13 Web pour BD • • • • Répartition des données Intégration immédiate d’Internet Exploitation directe des BD sur le Web Modélisation souple des données, adaptée à chaque utilisateur (pas de schéma) 14 Données du Web • Données hétérogènes, fortement corrélées, évolutives • Problèmes pour la gestion des données : – Gestion des liens – Gestion de l’évolution (pas d’indépendance logiquephysique) – Performances (index ?) Besoin des fonctionnalités des SGBD 15 Couplage BD et Web • Deux domaines qui se sont développés indépendamment • Nombreux points communs : – Grands volumes de données • • • • Modélisation Stockage Indexation interrogation – Multi-utilisateurs – Performances – Fiabilité 16 Apports des SGBD • Gestion de gros volumes d’information • Bonnes performances d’accès : – index, stockage, gestion du disque • Fiabilité des données : – cohérence, sûreté de fonctionnement, sûreté d’accès • Partage et accès concurrents : – transactions • Productivité : – indépendance physique-logique, réutilisation, outils • Evolutivité : – évolution du schéma • Langage de requêtes et optimisation 17 Comment coupler ? 1. Utilisation de la technologie BD pour les données du Web Transférer les données du Web dans les BD (ou utiliser les BD comme moyen de structuration du Web). – importation des données : • outils de traduction vers les modèles de données (ex. solutions des produits reposant sur Corba) • outils de migration (ex. documents structurés SGML vers ODMG). – nouveaux modèles de données (moins rigides) et langages : • la notion de schéma tend à disparaître, • langage d’interrogation associé, • optimisation. 18 Comment coupler ? 2. Ouvrir les BD au Web Mettre les données des BD sur le Web (passerelles d’accès aux BD) – exportation de données (vers HTML) – BD comme repository d’un intranet 19 Couplage HTML-bases de données • Serveur HTTP dynamique – Basé sur CGI – Serveur Web dédié aux BD • Oracle WebDB, VersantWeb, etc. • Serveur de pages dynamiques – Langages de haut niveau permettant de définir des actions à faire exécuter sur le serveur • ASP (MS Active Server Page) • JSP (Java Server Page) • PHP (Hypertext Preprocessor) 20 Accès base de données Fichiers Html statiques HTML http cgi, nsapi,.. Demande de page Navigateur (client http) données HTML paramètres serveur http odbc,jdbc SQL Programme passerelle SGBD Middleware WEB 21 Accès BD 1. 2. Le client http lance une demande de page Web (URL statique ou dynamique) vers le serveur. URL dynamique : contient un appel au programme applicatif + paramètres. La connexion est fermée dès que le client obtient la réponse. Le serveur http est en attente permanente. En cas de demande dynamique, il lance le programme applicatif avec les paramètres, en suivant un protocole : - CGI : Common Gateway Interface - NSAPI (Netscape), ISAPI (MS) 3. Le programme applicatif : - extrait les données nécessaires du SGBD - produit la page HTML incluant ces données 4. Le SGBD … fait son travail de SGBD (reçoit des requêtes et renvoie les résultats) 22 Scripts serveur • Programme ou script (fichier de commandes) capable de – recevoir des paramètres depuis des clients, – d'accéder à une ou plusieurs sources de données, – de générer des résultats sous forme HTML ou XML. • Langages de scripting ou de programmation – Interprété ou compilé – Perl, JavaScript, VB Script, Python – C, C++, Java, VB, C#, L4G 23 CGI • CGI : Common Gateway Interface – Standard de programmation pour accéder aux données des formulaires HTML côté serveur – Permet de faire communiquer les serveurs Web avec des applications externes – Permet par ex. de se connecter à une BD et d’exécuter des requêtes Select, avec des paramètres (spécifiés lors de l’exécution) – S’exécute sur le serveur – Peut être écrit en Perl, C, JavaScript, VB Script, Java, etc … (tout langage compilé ou interprété) 24 CGI Protocole TCP-IP Envoi des entêtes HTTP requête décode Envoi des entêtes HTTP-réponses Client Serveur Web 25 Scripts CGI • La passerelle invoque les scripts en passant les paramètres sous une forme codée • L'envoi de paramètres à un script CGI se fait par l'intermédiaire d'un formulaire HTML. créé à l'aide de la balise <FORM> contenant des boutons, des champs, des listes et/ou des cases à cocher repérés par les noms de paramètres, et un bouton de soumission du formulaire 26 Exemple <HTML> <HEAD> <TITLE> Exemple de formulaire</TITLE> </HEAD> <BODY> <H1>Exemple de formulaire</H1> <FORM METHOD=POST ACTION="/cgi-bin/invite.exe"> Nom: <INPUT TYPE=TEXT SIZE=30 NAME="nom"><BR/> Adresse e-mail: <INPUT TYPE=TEXT SIZE=20 NAME="email"><BR/> <P>Commentaires:<BR> <TEXTAREA COLS=60 ROWS=15 NAME="comment"></TEXTAREA> <INPUT TYPE=SUBMIT VALUE="OK"> </FORM> …. 27 Bilan CGI • Avantages – utilisable avec n'importe quel navigateur et serveur Web – simple - intégré avec HTML – serveurs dans tous les langages • Inconvénients – supporte mal le multi-utilisateur – pas de gestion de contexte (session) • Extensions : – version« fast CGI » Problème : ne passe pas à l’échelle 28 Serveur de pages dynamique Page HTML avec scripts pour accéder à la base de données – Variables et paramètres avec des tags spéciaux – Templates pour la présentation des résultats en HTML <HTML> <BODY><H1>result of your selection</H1> <%select Q1 = “ select A1,A2 from R where… <TABLE> <%iterate Q1 %> <TR><TD> “A1” </TD><TD> “A2 ” </TD></TR> <TR><TD> “A1” </TD><TD> “A2 ” </TD></TR> <%end-iterate%> </TABLE> </BODY> </HTML> ” %> 29 Exécution de page serveur dynamique HTTP URL+input browser HTML paramètres HTML template HTTP server HTML Template Interpreter Ex: Php SQL BD Plus efficace que le serveur HTTP dynamique Problème : les templates ne peuvent transformer les résultats de requêtes. 30 ASP • Environnement de programmation côté serveur permettant de représenter sous forme d'objets les interactions entre le navigateur du client, le serveur web, ainsi que les connexions à des bases de données via SQL (ADO) – Développement d'applications Web dynamiques – Intégration de scripts serveur au sein d'une page HTML à l'aide de balises spéciales • Combinent HTML, VB Scripts et ActiveX • Efficace avec les ActiveX Data Objects (ADO) • Interface DCOM pour l’accès BD via ODBC ou OLE-DB • Outils de développement intégrés (ex MS Visual interdev) 31 Exemple de ASP <%@ LANGUAGE="VBSCRIPT" %> <HTML> <HEAD> <TITLE>Exemple de script ASP</TITLE> </HEAD> <BODY> <% FOR i = 1 to 10 %> Bienvenue au cours BD et sites Web <% Next %> </BODY> </HTML> 32 Accès aux BD • Intégration indirecte des requêtes – nécessite un script – dialogue avec les formes, boutons, tables, ... – émission des requêtes – récupération des résultats • Accès par objets VBScript – Accès à la base via des ADO – Création d'objets données 33 JSP • Combinent HTML, Java et Java Beans • Accès aux composants EJB (serveurs) • Interface JDBC • Standard, proposé par tous les serveurs d’applications J2EE 34 Exemple de JSP <HTML> <HEAD> <TITLE> Exemple de JSP </TITLE> </HEAD> <BODY> <!-- Fixer les parametres de la page --> <%@ page language = "java" %> <!-- Declarer une variable caracteres --> <% char c = 0; %> <!-- Scriplet - Code Java --> <% for (int i = 0; i < 26; i++) { c = (char) (0x41 + i) ; %> <!-- Afficher c --> <% = c %> <% } %> </BODY> </HTML 35 Bilan pages actives • • • • Mixage HTML + scripts serveur Compilés en code intermédiaire ou interprétés Accès aux BD intégrés Évolution vers XML – Séparation fond et forme – Complément à XSL 36 Limitations du couplage HTML-BD • Solutions propriétaires – Excepté JSP • Pas de protocole pour publier les données – SQL n’est pas conçu pour le Web • Pas de format d’échange de données standard : HTML est un format de présentation – Mélange présentation et contenu – Pas de structure, pas de sémantique, pas de contrainte d’intégrité – Perd la structure (schéma) provenant de la BD 37 La règle d’or Le contenu doit être abstrait et indépendant du stockage et de la présentation – Permet l’intégration uniforme de données hétérogènes • Provenant de différentes sources de données – Permet des applications dynamiques • La présentation peut être différente selon le médium, le temps, la requête ou le profil de l’utilisateur 38 Conclusion • La plupart des éditeurs de SGBD proposent des connexions au Web (Oracle Websystem, Informix (Web Datablade), Sybase, DB2…). • Nécessité de développer des clients dynamiques, nombreuses solutions existantes • XML est une bonne solution pour l’échange de données – Standard du W3C – Décrit le contenu, pas la présentation • Structure, type, schéma, requêtes, etc. – Fournit l’indépendance des données au stockage et à la présentation : supporte la règle d’or 39