1 Applications Internet Chapitre 7, Sections 7.1—7.5
2 Survol Concepts Internet Formats des données sur le web HTML, XML, DTDs Introduction à l’architecture à trois niveaux Le niveau de présentation Formulaires HTML; méthodes HTTP Get et POST, encodage des URLs; Javascript; Stylesheets; XSLT Le niveau du milieu CGI, serveurs d’application, Servlets, JavaServerPages, passages d’arguments, maintenance des états (cookies)
3 Survol Concepts Internet Formats des données sur le web HTML, XML, DTDs Introduction à l’architecture à trois niveaux Le niveau de présentation Formulaires HTML; méthodes HTTP Get et POST, encodage des URLs; Javascript; Stylesheets; XSLT Le niveau du milieu CGI, serveurs d’application, Servlets, JavaServerPages, passages d’arguments, maintenance des états (cookies)
4 Identificateurs de Ressource Uniformes (URI) Schéma de dénomination uniforme pour identifier les ressources sur Internet Il y a une variété de ressources: Index.html mysong.mp3 picture.jpg Exemple de URIs:
5 Structure des URIs Un URI a trois parties: Schéma de dénomination (http) Nom de l’ordinateur hote ( Nom de la ressource (~dbbook/index.html) Les URLs sont un sous-ensemble de URIs
6 ‘’Hypertext Transfer Protocol’’ (HTTP) Protocole de communication Ensemble de standards qui définissent la structure de l’échange de messages Exemples: TCP, IP, HTTP Que se passe-t-il lorsque vous cliquez sur Le client (fureteur) envoie une requête HTTP au serveur 2. Le serveur reçoit la requête et répond 3. Le client reçoit la réponse; fait une nouvelle requête
7 HTTP (Suite) Du client au serveur: GET ~/index.html HTTP/1.1 User-agent: Mozilla/4.0 Accept: text/html, image/gif, image/jpeg Le serveur répond: HTTP/ OK Date: Mon, 04 Mar :00:00 GMT Server: Apache/1.3.0 (Linux) Last-Modified: Mon, 01 Mar :23:24 GMT Content-Length: 1024 Content-Type: text/html Barns and Nobble Internet Bookstore Our inventory: Science The Character of Physical Law...
8 Structure du Protocole HTTP Requêtes HTTP Ligne de requête:GET ~/index.html HTTP/1.1 GET: méthode HTTP (valeurs possibles: GET et POST; voir plutard) ~/index.html: URI HTTP/1.1: version du protocole HTTP Type de client:User-agent: Mozilla/4.0 Types de fichiers que le client acceptera: Accept: text/html, image/gif, image/jpeg
9 Structure du Protocole HTTP (Suite) Réponses HTTP Ligne de statut: HTTP/ OK Version HTTP: HTTP/1.1 Code du statut: 200 Message du serveur: OK Combinaisons code/serveur usuelles: 200 OK: Succcès de la requête 400 Bad Request: La requête n’a pas pu être traitée par le serveur 404 Not Found: L’objet requis n’existe pas sur le serveur 505 HTTP Version not Supported Date de creation: Last-Modified: Mon, 01 Mar :23:24 GMT Nombre d’octets envoyés: Content-Length: 1024 Type d’objet envoyé: Content-Type: text/html Autre information telle que le type de serveur, le temps du serveur, etc.
10 Quelques Remarques sur HTTP HTTP n’a pas d’états Pas de “sessions” Chaque message est complètement autonome Aucune interaction antérieure n’est sauvée par le protocole Réalise une balance entre la facilité d’implémentation et la facilité du développement des applications: Les autres fonctionnalités doivent être ajoutées par après Implications pour les applications: Toute information sur l’état doit être encodée dans chaque requête HTTP et dans chaque réponse! Il existe des méthodes populaires pour le maintien des états: Cookies URL uniques générées dynamiquement au niveau du serveur
11 Format des Données sur le Web HTML Le langage de présentation pour l’Internet XML Un modèle de données auto descriptif et hiérarchique DTD Schéma de standardisation pour XML XSLT (non couvert dans le manuel)
12 HTML: Un Exemple Barns and Nobble Internet Bookstore Our inventory: Science The Character of Physical Law Author: Richard Feynman Published 1980 Hardcover Fiction Waiting for the Mahatma Author: R.K. Narayan Published 1981 The English Teacher Author: R.K. Narayan Published 1980 Paperback
13 HTML: Courte Introduction HTML est un langage de balisage Les commands sont des balises (‘’tags’’): Balise de début et balise de fin Exemples: … Beaucoup d’éditeurs génèrent automatiquement des documents HTML directement à partir d’un document de départ (p.ex. Microsoft Word a une facilité “Save as html”)
14 HTML: Exemples de Commandes : : liste non trié : entrée d’une liste : entête le plus large : 2ème entête le plus large;, sont analogues Title : Gras
15 XML: un Exemple Richard Feynman The Character of Physical Law 1980 R.K. Narayan Waiting for the Mahatma 1981 R.K. Narayan The English Teacher 1980
16 XML – “Extensible Markup Language” Langage Un moyen de communiquer l’information « Markup » (balisage) Meta-données décrivant vos données « Extensible » La capacité de définir de nouveaux balisages (et donc de nouveaux langages) est quasiment illimitée.
17 XML – Etat des Lieux Vous pouvez inclure vos données et la description de ce que ces données représentent Utile pour définir vos propres langages et protocoles Exemple: Langage à balisage chimique … Les objectifs du design de XML: XML devrait être compatible avec SGML Il devrait être facile d’écrire des processeurs pour XML Le design devrait être formel et précis
18 XML – Structure XML: Combine des aspects de SGML et HTML XML ressemble à HTML XML est une hiérarchie de balises définies par l’utilisateur et appelées ‘’éléments’’ avec attributs et données Les données sont décrites par les éléments qui, eux, sont décrits par les attributs. … bal. de fin attribut valeur d’attribut donnée bal. de début
19 XML -- Éléments … Les majuscules et les espaces sont significatifs en XML Les noms des éléments de la balise de début et de la balise de fin doivent être identiques Balise de début: “ ” Balise de fin: “ ” Les éléments vides n’ont aucune donnée, ni de balise de fin: Ils commencent avec un “ ” bal. de fin attribut valeur d’attribut donnée bal. de début
20 XML – Attributs … Les attributs fournissent de l’information additionnelle pour les éléments. Il peut y avoir zéro ou plusieurs attributs dans chaque élément; chacun d’eux a la forme suivante: attribut =‘ valeur ’ - Il n’y a pas d’espace entre le nom d’attribut et “=‘” - Les valeurs d’attribut doivent être mises entre guillemets (“ ou ‘) Les attributs multiples sont séparés par des espaces vides. bal. de fin attribut valeur d’attribut donnée bal. de debut
21 XML – Données et Commentaires … Les données XML sont tout ce qui apparaît entre la balise de début et celle de fin Les données XML ne doivent contenir les caractères ‘ ’ Commentaires: bal. de fin attribut valeur d’attribut donnée bal. de début
22 XML – Imbrication et Hiérarchie Les balises XML peuvent être imbriquées les une dans les autres et former un arbre hiérarchique Les documents XML ne peuvent avoir qu’une seule racine Entre une balise de début et une de fin on peut insérer: 1. des données 2. d’autres éléments 3. une combinaison de données et d’éléments Un quelconque Texte Davantage de texte
23 XML – Stockage Un document XML est stocké comme n’importe quel autre arbre n-aire (DOM) Un quelconque Texte Davantage de texte Noeud Type: Nœud élément Valeur: Root Noeud Type: Nœud élément Valeur: tag1 Noeud Type: Nœud texte Valeur: Davantage de Texte Noeud Type: Nœud élément Valeur: tag2 Noeud Type: Nœud texte Valeur: un quelconque Texte
24 DTD – ‘’Document Type Definition’’ Un DTD est un schéma pour les données XML Les protocoles XML et les langages peuvent être standardisés avec des DTDs Un DTD indique quels éléments et attributs sont requis et lesquels sont optionnels Définit la structure formelle du langage
25 DTD – Un Exemple
26 DTD - !ELEMENT !ELEMENT déclare un nom d’élément, ainsi que le contenu de chaque élément enfant imbriqué Types de contenus: Autres éléments #PCDATA (‘’parsed character data’’) EMPTY (aucun contenu) ANY (aucune validation à l’intérieur de cette structure) Une expression régulière Nom enfants
27 DTD - !ELEMENT (Suite) Une expression régulière a la structure suivante: exp 1, exp 2, exp 3, …, exp k : Une liste d’expressions régulières exp*: Une expression optionnelle avec zéro ou plusieurs apparitions d’éléments exp+: Une expression optionnelle avec un ou plusieurs apparitions d’éléments exp 1 | exp 2 | … | exp k : Une disjonction d’expressions
28 DTD - !ATTLIST <!ATTLIST Orange location CDATA #REQUIRED color ‘orange’> !ATTLIST définit une liste d’attributs pour un élément. Les attributs peuvent être de différents types, être requis ou non requis et peuvent avoir des valeurs par défaut. ElementAttributeTypeFlag
29 DTD – Document Bien Formé vs. Valide Bien formé et valide Pas bien formé Bien formé, mais invalid Home
30 XML and DTDs De plus en plus de DTDs standardisés sont développés MathML ‘’Chemical Markup Language’’ Etc. Les DTDs permettent un échange allégé de données ayant la même sémantique Il existe des langages de requête sophistiqués pour XML: Xquery XPath
31 Survol Concepts Internet Formats des données sur le web HTML, XML, DTDs Introduction à l’architecture à trois niveaux Le niveau de présentation Formulaires HTML; méthodes HTTP Get et POST, encodage des URLs; Javascript; Stylesheets; XSLT Le niveau du milieu CGI, serveurs d’application, Servlets, JavaServerPages, passages d’arguments, maintenance des états (cookies)
32 Composantes des Systèmes de Gestion des Données Trois types de fonctionnalité séparés: Gestion des données Logique de l’application Présentation L’architecture du système détermine si ces trois composantes résident sur un même système (“tier’’) ou sur plusieurs systèmes séparés
33 Architecture à Une Etage (‘’Single-Tier’’) Toutes les fonctionnalités sont combinées dans un même système, souvent un ‘’mainframe’’ Accès à travers des terminaux passifs Avantages: Maintenance et administration aisées Désavantages: Actuellement, les utilisateurs s’attendent à des interfaces graphiques Centralisation à outrance (peut excéder la capacité du système)
34 Architectures Client-Serveur Division de travail: Client léger Le client implémente seulement l’interface (graphique) Le serveur implémente la logique de l’application (‘’business logic’’) ainsi que la gestion des données Division de travail: Client lourd Le client implémente à la fois l’interface (graphique) et la logique de l’application Le serveur implémente seulement la gestion des données
35 Architecture Client-Serveur (Suite) Désavantages des clients légers Aucune centralisation des modification de la logique d’application n’est faite Problèmes de sécurité: Le serveur a besoin de faire confiance aux clients Accès et authentification doivent être gérés par le serveur Les clients ont besoin de laisser le serveur dans un état consistent Une possibilité: Encapsuler tous les accès aux bases de données dans des procédures stockées Pas applicable si le nombre de clients va au delà de quelques centaines Large transfert de données entre serveur et client Problème de gestion des connections: avec x clients et y serveurs on a x*y connexions
36 Architecture à Trois Étages (‘’Three-Tier’’) SGBD Serveur d’application Client (‘Web Browser’) Système de présentation Etage intermédiaire Étage de gestion des données
37 Les Trois Étages Étage de présentation Interface première d’utilisateur Doit être adaptée aux différents appareils de présentation existants (PC, PDA, téléphone cellulaire, voix?) Étage intermédiaire Implémente la logique d’application (implémente des actions complexes, maintient l’état du processus d’échange en cours) Accède aux différents SGBDs Étage de gestion des données Un ou plusieurs SGBDs standards
38 Exemple: Système de Réservations pour Lignes Aériennes Comment construire un tel système Qu’est ce qui est fait aux diverses étages? SGBD Info sur les lignes aériennes, sièges disponibles, info sur les clients, etc. Serveur d’application Logique des réservations, annulation des réservations, addition de nouvelles lignes, etc. Programme client Log in de différents utilisateurs, affichage de formulaires et de rapports en format lisible
39 Technologies SGBD (DB2, Oracle, MS SQLServer) Serveur d’application (Tomcat, Apache) Programme Client (Web Browser) HTML Javascript XSLT JSP Servlets Cookies CGI XML Procédures stockées
40 Avantages de l’Architecture à Trois Étages Systèmes hétérogènes Maintien, modification et remplacement indépendants des étages Clients légers Contiennent seulement la couche de présentation (web browsers) Accès intégré aux données Plusieurs SGBDs peuvent être accédés de manière transparente à l’étage intermédiaire Gestion centralisée des connexions Extensibilité Rendu possible par la réplication de la logique d’application à l’étage intermédiaire Développement des logiciels Le code pour la logique d’application est centralisé L’interaction entre les étages est bien définie au travers de divers APIs: Des composantes standard peuvent être réutilisées