Architectures distribuées

6 928 vues

Publié le

Présentation des concepts d'architectures distribuées

Publié dans : Formation
2 commentaires
7 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
6 928
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
321
Commentaires
2
J’aime
7
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Architectures distribuées

  1. 1. Architectures distribuées Objectifs version support : 1.0
  2. 2. Objectifs ● Acquérir une connaissance globale des modèles darchitecture distribuée ● Positionner les principaux langages, API, frameworks dans les architectures distribuées ● Connaître le vocabulaire lié aux architectures distribuées ● Tester divers solutions : GWT, JBoss, ServiceMix, ...antislashn.org Architectures distribuées - Objectifs 0-2/5
  3. 3. Chapitres ● 01 – Introduction ● 02 – Couche Web ● 03 – N tiers ● 04 – XML ● 05 – Java EE ● 06 – Web services ● 07 – Rich Internet Application ● 08 – Service Oriented Application ● 09 – Répartition de charge et haute disponibilité ● 10 – Quelques serveurs Java EEantislashn.org Architectures distribuées - Objectifs 0-3/5
  4. 4. copyleft Support de formation créer par Franck SIMON http://www.franck-simon.comantislashn.org Architectures distribuées - Objectifs 0-4/5
  5. 5. copyleft Cette œuvre est mise à disposition sous licence Attribution Pas dUtilisation Commerciale Partage dans les Mêmes Conditions 3.0 France. Pour voir une copie de cette licence, visitez http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ ou écrivez à Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.antislashn.org Architectures distribuées - Objectifs 0-5/5
  6. 6. Architectures distribuées Introduction
  7. 7. Historique ● Les architectures informatiques suivent un cycle régulier de centralisation / décentralisation ● 1960 : mainframes ● 1990 : architectures client/serveur – protocoles de communication type CORBA ● 1995 : explosion du web ● 2005 : RIAantislashn.org Architectures distribuées - Introduction 01 - 2 / 18
  8. 8. Historique source : Cloud computing et SaaS - Dunodantislashn.org Architectures distribuées - Introduction 01 - 3 / 18
  9. 9. Évolution des architectures ● Classiquement une application peut être divisée en trois niveaux ● la couche de présentation – IHM, GUI ● la couche applicative – les traitements ● laccès aux données ● Ce principe nest quun découpage abstrait ● les trois couches peuvent être imbriquées ou répartiesantislashn.org Architectures distribuées - Introduction 01 - 4 / 18
  10. 10. Évolution des architectures Gestion de la présentation Présentation Logique de présentation Noyau de lapplication Logique des traitements Traitements Gestion des traitements Logique des données Données Gestion des donnéesantislashn.org Architectures distribuées - Introduction 01 - 5 / 18
  11. 11. Modèles de répartition ● Gartner Group classifie les différents modèles de répartition Présentation Présentation Gestion distante Traitements Données Données et distribuée distante des données distribués distribués traitements distribués Données Données Données Données Données Données serveur Traitements Traitements Traitements Traitements Présentation réseau Données Données client Traitements Traitements Traitements Traitements Présentation Présentation Présentation Présentation Présentation Présentationantislashn.org Architectures distribuées - Introduction 01 - 6 / 18
  12. 12. Modèles de répartition ● Le client serveur est un modèle 2 tiers ● Le découpage précédent illustre sous forme simplifiée la structure possible dune application ● la réalité est plus complexe – architectures multi-niveaux ● le serveur peut-être client dun autre serveur – prise en compte des applications existantes ● legacyantislashn.org Architectures distribuées - Introduction 01 - 7 / 18
  13. 13. Architecture trois-tiers ● Les limites de larchitecture deux-tiers ● frontal complexe et non standard – généralement sous Windows – à déployer ● middleware non standard ● La solution serait ● utilisation dun poste client très simple ● communication avec le serveur via un protocole standardantislashn.org Architectures distribuées - Introduction 01 - 8 / 18
  14. 14. Architecture trois-tiers ● Principes de base ● les données sont gérées de manière centralisée ● la présentation est gérée par le poste client ● la logique applicative est gérée par un serveur intermédiaire ● Premières tentatives ● introduction dun serveur dapplication centralisé – dialogue avec les clients par un protocole propriétaireantislashn.org Architectures distribuées - Introduction 01 - 9 / 18
  15. 15. Serveur transactionnel ● Issu des technologies IBM des années 1970 ● mise à disposition à grande échelle dapplications en mode texte ● plusieurs écrans se succèdent avant quune modification soit réellement effectuée ● Le serveur héberge un moteur transactionnel ● met en relation le client avec un ensemble de serveurs de donnéesantislashn.org Architectures distribuées - Introduction 01 - 10 / 18
  16. 16. Serveur transactionnel ● permet de garantir la règle ACID ● Atomicité – la transaction ne peut pas être partiellement effectuée ● Cohérence – la transaction fait passer la base dun état cohérent à un autre état cohérent ● Isolation – un transaction nest pas affectée par le résultat des autres transactions ● Durée – les modifications de la transaction sont durablement garantieantislashn.org Architectures distribuées - Introduction 01 - 11 / 18
  17. 17. Serveur transactionnel client Service 1 IHM API moniteur API 1 transactionnel protocole 1 Serveur Service 2 API moniteur transactionnel API 2 API 1 API 2 protocole 2antislashn.org Architectures distribuées - Introduction 01 - 12 / 18
  18. 18. Architecture trois tiers ● Répartition des traitements ● 1er tiers : affichage et traitement locaux – contrôles de surface, mises en forme des données, … ● 2ème tiers : traitements applicatifs globaux pris en charge par le serveur dapplication ● 3ème tiers : base de données 1er tiers 2éme tiers 3éme tiers présentation traitements traitements données globaux locauxantislashn.org Architectures distribuées - Introduction 01 - 13 / 18
  19. 19. Architecture trois tiers ● Internet révolutionne l’architecture ● corrige les excès du client lourd – la partie applicative est centralisée sur le serveur ● Le serveur HTTP devient central ● problème de dimensionnement de serveur ● gestion de la montée en charge ● complexité de la maintenance des applications ● gestion des sessions ● le serveur est fortement sollicitéantislashn.org Architectures distribuées - Introduction 01 - 14 / 18
  20. 20. Architecture trois tiers ● Du mainframe en mode texte au mainframe en mode graphique : retour à la case départ source : Serveurs dapplications - Eyrollesantislashn.org Architectures distribuées - Introduction 01 - 15 / 18
  21. 21. Architectures N-tiers ● Permet de pallier aux limitations du 3 tiers ● distribution plus libre de la logique applicative ● répartissions de la charge ● N tiers pour la distribution de lapplication entre de multiples services ● et non pas la multiplication des niveaux de service ● Utilise des composants ● chaque composant rend un service clairement identifié ● concepts orientés objetsantislashn.org Architectures distribuées - Introduction 01 - 16 / 18
  22. 22. Architectures N-tiers ● Complexité de réutilisation source : Serveurs dapplications - Eyrollesantislashn.org Architectures distribuées - Introduction 01 - 17 / 18
  23. 23. Architecture N-tiers ● Solution Oracle / Sun ● EJB : Enterprise Java Bean – sexécutent côté serveur ● JavaBean (POJO) – objets métiers ● Solution Microsoft ● modèle de communication COM ● DCOM étend COM pour les architectures distribuéesantislashn.org Architectures distribuées - Introduction 01 - 18 / 18
  24. 24. Architectures distribuées Couche Web
  25. 25. Internet et le web ● Internet ● inter net – liens entre des réseaux hétérogènes – réseau de réseaux ● les réseaux sont reliés entre-eux par le protocole TCP/IP ● il nexiste pas dadministration internet – comme pour un réseau téléphoniqueantislashn.org Architectures distribuées – couche web 02 - 2 / 62
  26. 26. TCP/IP ● Couches réseau modèle OSI Pile TCP/IP 7 Application HTTP 6 Présentation FTP 5 Session DNS 4 Transport TCP, UDP, SCTP 3 Présentation Réseau IP 2 Liaison Ethernet, Token Ring, ... 1 Physique ADSL, RTC, ...antislashn.org Architectures distribuées – couche web 02 - 3 / 62
  27. 27. Protocole IP ● IP – Internet Protocol ● protocole non fiable – assure lacheminement au mieux ● ne se préoccupe pas du contenu envoyé ● fournit une méthode pour délivrer le contenu à destination – pas de garantie sur les paquets envoyés ● corruption de données, ordre darrivée ● Ladresse IP est un numéro attribué à chaque équipement connectéantislashn.org Architectures distribuées – couche web 02 - 4 / 62
  28. 28. Protocole IP ● IP v4 ● adresse sur 32 bits * image provenant de Wikipedia Commonsantislashn.org Architectures distribuées – couche web 02 - 5 / 62
  29. 29. Protocole IP ● IP v6 ● adresse sur 128 bits * image provenant de Wikipedia Commonsantislashn.org Architectures distribuées – couche web 02 - 6 / 62
  30. 30. Protocole TCP ● TCP - Transmission Control Protocol ● protocole de transport fiable ● orienté connexion ● délivre toutes les données correctement et en séquence ● TCP (comme UDP) utilise le concept de port pour identifier lapplication ● à chaque extrémité (client / serveur) est associé un numéro de port sur 16 bitsantislashn.org Architectures distribuées – couche web 02 - 7 / 62
  31. 31. Protocole TCP ● Structure dun segment TCPantislashn.org Architectures distribuées – couche web 02 - 8 / 62
  32. 32. Protocole TCP ● Fonctionnement en 3 phases ● établissement de la connexion ● transfert des données ● fermeture de la connexion ● La perte dun segment est gérée par TCP ● mécanisme de temporisation et retransmissionantislashn.org Architectures distribuées – couche web 02 - 9 / 62
  33. 33. Protocole UDP ● UDP – User Datagram Protocol ● en-tête plus simple que TCP ● permet de transférer les données très rapidement ● perte occasionnelle de données tolérable ● exemples dutilisation : – DNS – Domain Name System – TFTP – Trivial File Transfert Protocolantislashn.org Architectures distribuées – couche web 02 - 10 / 62
  34. 34. Le protocole HTTP ● HTTP – HyperText Transfert Protocol ● protocole client-serveur inventé par Tim Berners-Lee – avec le langage HTML et les adresses Web ● port 80 par défaut ● HTTPS – variante sécurisée (port 443) ● actuellement HTTP 1.1 – depuis janvier 1997 – RFC 2068 et 2616antislashn.org Architectures distribuées – couche web 02 - 11 / 62
  35. 35. Protocole HTTP ● Protocole sans état ● le client envoie une requête – qui comporte une commande : méthode HTTP ● le serveur lui répondantislashn.org Architectures distribuées – couche web 02 - 12 / 62
  36. 36. Le protocole HTTP ● Les méthodes HTTP ● GET : demande de ressource ● POST : soumission de données au serveur en vue dun traitement – formulaire HTLM ● OPTIONS : permet d’obtenir les méthodes supportées par le serveur ● CONNECT : utilisation dun proxy comme tunnel de communication ● TRACE : demande au serveur de retourner ce quil a reçu ● PUT : demande de remplacer ou dajouter une ressource ● DELETE : demande la suppression dune ressourceantislashn.org Architectures distribuées – couche web 02 - 13 / 62
  37. 37. Protocole HTTP ● HTTP permet lidentification ● BASIC – mot de passe passé en claire (base 64) ● DIGEST – souvent utilisé avec un hash MD5 ● Utilisation possible du mode CLIENT-CERT ● authentification mutuelle par échange de certificatantislashn.org Architectures distribuées – couche web 02 - 14 / 62
  38. 38. Technologies web ● Pour créer une application web il est nécessaire de mettre en œuvre un ensemble de technologies ● HTTP et TCP/IP ● HTML – différentes versions – représentation par le navigateur sous forme de DOM ● CSS ● JavaScript ● et autres langages – XML, XSL, XUL, Java, Flex, ...antislashn.org Architectures distribuées – couche web 02 - 15 / 62
  39. 39. Technologies web ● Difficultés des applications web ● créer une application homogène avec des technologies hétérogènes ● tenir compte des différentes versions de navigateur ● évolution rapide des demandes des utilisateurs – en fonctionnalités supplémentaires – en fréquentation du site => montée en charge – en fluidité dutilisation ● IHM limitée ● nécessité dun frameworkantislashn.org Architectures distribuées – couche web 02 - 16 / 62
  40. 40. HTML ● Utilisé dans les navigateurs HTML est un langage de description des pages web ● HTML pour Hyper Text Markup Language ● nest pas un langage de programmation ● basé sur un ensemble fini déléments ● Le navigateur interprète le document HTML et laffiche comme une page web ● Les extensions standards pour les documents HTML sont htm et html ● index.html ou index.html sont souvent les pages par défaut dun site webantislashn.org Architectures distribuées – couche web 02 - 17 / 62
  41. 41. HTML ● Un tag élément HTML est constitué ● dune balise douverture (start tag) – qui peut contenir des attributs ● dun corps délément – qui peut être vide, contenir du texte et/ou dautre éléments ● dune balise de fermeture (end tag) ● Une balise est entourée par les caractères < et > ● Normalement toute balise ouverte devrait-être fermée ● il existe une écriture simplifiée pour les balises sans corps – <p />antislashn.org Architectures distribuées – couche web 02 - 18 / 62
  42. 42. HTML attribut avec sa valeur entre " ou <a href="autre_page.html"> balise douverture Lien vers autre page </a> corps de lélément balise de fermetureantislashn.org Architectures distribuées – couche web 02 - 19 / 62
  43. 43. HTML ● Structure dun document HTML <html> <head> <title>Page minimaliste</title> </head> <body> <h2>Hello, world</h2> </body> </html> ● <html>…</html> décrit la page web ● <head>…</head> contient des informations pour le document ● <bopdy>…</body> est le contenu visible de la pageantislashn.org Architectures distribuées – couche web 02 - 20 / 62
  44. 44. HTML ● Évolution de HTML ● 1989 -> 1992 – description HTML informelle ● 1993 – HTML 1.0 non officiel – langage en pleine évolution – NCSA MOSAIC invente la balise IMG et FORM ● 1994 – apports de Netscape Navigator en terme de présentation – début de CSS (Cascading Style Sheet)antislashn.org Architectures distribuées – couche web 02 - 21 / 62
  45. 45. HTML ● Évolution de HTML ● 1995 -> 1996 – le W3C propose un brouillon de spécification HTML – RFC 1866 décrivant HTML 2.0 est finalisée fin 1995 ● 1997 – la spécification HTML 3.2 est publié le 3 Janvier 1997 – la spécification HTML 4.0 est publiée le 18 Décembre 1997 ● variante stricte (strict) qui exclut les éléments et attributs de présentation devant être remplacés par des styles CSS ● variante transitoire (transitional) étend la variante stricte en reprenant les éléments et attributs de présentation ● variante frameset qui normalise les jeux de cadresantislashn.org Architectures distribuées – couche web 02 - 22 / 62
  46. 46. HTML ● Évolution de HTML ● 2000 - 2006 – le développement de HTML est officiellement abandonné par le W3C au profit de XHTML – création du WHATWG (Web Hypertext Application Technology Working Group) pour relancer le développement HTML face à la proposition du W3C ● 2007 à 2012 – le W3C relance HTML pour ● faire évoluer HTML pour décrire la sémantique des documents ● parvenir à un langage extensible via XML ● enrichir les IHM : menus, champs associés à des types, … – les travaux du WHATWG sont adoptés par le W3C comme point de départ de la spécification HTML 5antislashn.org Architectures distribuées – couche web 02 - 23 / 62
  47. 47. HTML ● Juillet 2012 ● Ian Hickson (fondateur du WHATWG) prend ses distances avec le W3C – désaccord sur la décision du W3C de découper HTML 5 en sous -spécifications ● API 2D canvas, gestion des événements, … ● le WHATWG fait évoluer sa branche de HTML 5 – baptisée "Living Standard" – veut imposer une évolution de la spécification en phase avec le marché ● en moyenne il y a une mise à jour toutes les 6 semaines de Chrome et Firefoxantislashn.org Architectures distribuées – couche web 02 - 24 / 62
  48. 48. HTML ● HTML 4.01 strict <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> ● HTML 4.01 transitional <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> ● HTML 4.01 frameset <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html>antislashn.org Architectures distribuées – couche web 02 - 25 / 62
  49. 49. HTML ● XHTML 1.0 strict <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> ● XHTML 1.0 transitional <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> ● XHTML 1.0 frameset <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- frameset.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> ● XHTML 1.1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">antislashn.org Architectures distribuées – couche web 02 - 26 / 62
  50. 50. HTML ● HTML 5 ● Simplification de la syntaxe <!DOCTYPE html> <html lang="fr">antislashn.org Architectures distribuées – couche web 02 - 27 / 62
  51. 51. HTML ● De base les interactions avec le serveur sont très pauvres – par rapport aux IHM classiques ● clic sur une lien – balise <a href="..."> ● envoi dun formulaire – balise <form … >antislashn.org Architectures distribuées – couche web 02 - 28 / 62
  52. 52. HTML ● Ancres ● élément <a> (anchor) – hyper lien avec lattribut href ● appel dune autre page ● appel dun index dans une autre page, ou la même page ● lattribut target peut indiquer une autre fenêtre ou onglet ● index avec lattribut name – accessible par un hyperlien précisant lindex par #antislashn.org Architectures distribuées – couche web 02 - 29 / 62
  53. 53. HTML ● Ancres <a href="autre_page.html">Autre page</a><br /> <a href="autre_page.html" target="_blank">Autre page dans un autre fenêtre</a><br /> <a href="#label" target="_blank">Même page, sur un label</a><br /> ... <br /> <a name="label">label</a> <br />antislashn.org Architectures distribuées – couche web 02 - 30 / 62
  54. 54. HTML ● Les formulaires <form> contiennent des champs <input> ● Les champs permettent à lutilisateur dentrer des valeurs ● toutes considérées comme des champs texte ● pas de vérification de validité ● chaque champ peut être accompagné par une balise <label>antislashn.org Architectures distribuées – couche web 02 - 31 / 62
  55. 55. HTML <form> <label for="nom">Nom</label><input name="nom" id="nom" /><br /> <label for="prenom">Prénom</label><input name="prenom" id="prenom" /><br /> <input type="submit" value="Envoyer" /> </form> ● lattribut name correspond au nom du champ tel quil pourra être récupéré côté serveur ● lattribut id permettra de récupérer lélément en JavaScript ● vrai pour tous les éléments ● unique dans la page ● lattribut value correspond à la valeur affichée et/ou saisie dans le champ ● manipulable en JavaScript ● passée en association avec le nom du champ au serveur lorsque le formulaire est envoyéantislashn.org Architectures distribuées – couche web 02 - 32 / 62
  56. 56. HTML ● Attributs de lélément <form> ● action : url vers laquelle le formulaire sera envoyé ● method : méthode denvoi des champs du formulaire – GET : passage par lURL http://localhost:8080/formulaires/traitement.jsp?nom=LAGAFFE&prenom=Gaston – POST : envoie dans le corps HTTP http://localhost:8080/formulaires/traitement.jsp ● enctype : définit la méthode dencodage du formulaire – application/x-www-form-urlencoded par défaut – pour les envoie de fichier doit être multipart/form-dataantislashn.org Architectures distribuées – couche web 02 - 33 / 62
  57. 57. HTML ● Types de lélément <input> ● déterminé par lattribut type – button : bouton cliquable pour le support JavaScript – checkbox : cases à cocher – file : permet la saisie dun fichier à envoyer vers le serveur – hidden : champ caché – image : bouton de soumission avec image – password : champ caché à la saisie – radio : boutons de sélection exclusifs (doivent avoir la même valeur dattribut name) – reset : bouton de remise à zéro des champs du formulaire – submit : bouton denvoi du formulaire – text (par défaut) : champ texteantislashn.org Architectures distribuées – couche web 02 - 34 / 62
  58. 58. HTML ● Un formulaire peut aussi contenir les éléments ● <select> – liste déroulante à choix simple – ou liste à choix multiple ● <textarea> champ texte multi-lignes ● Dautres types sont introduits par HTML 5 ● date, time, ...antislashn.org Architectures distribuées – couche web 02 - 35 / 62
  59. 59. HTML ● Champ <select> ● les sélections multiples seront généralement accessibles côtés serveur sous forme dun tableau – en Java : request.getParameterValues("langages"); Civilité <select name="civilite"> <option value="M">M</option> <option value="Mme" selected="selected">Mme</option> <option value="Mlle">Mlle</option> </select> <br /> Langages <br /> <select name="langage" multiple="multiple"> <option value="C">C</option> <option value="Cplus">C++</option> <option value="Csharp">C #</option> <option value="java">Java</option> </select>antislashn.org Architectures distribuées – couche web 02 - 36 / 62
  60. 60. HTML ● HTML 5 comporte de nouveaux éléments ● canvas : zone dans laquelle il est possible de dessiner – syntaxe et fonctions proche de Java – dispose des figures de base : rectangle, courbes de Bézier, arc, etc. ● audio et video: support des flux audio et vidéo – avec attributs comme start, stop, autoplay, … ● section : permet de diviser un document en parties sémantiques ● implémentation de XForms – avec des types date, time, number, … ● HTML 5 est différemment supporté par les navigateurs ● continuelle évolution ● cf. sites comme http://www.findmebyip.com/litmus/antislashn.org Architectures distribuées – couche web 02 - 37 / 62
  61. 61. CSS ● Les styles CSS (Cascading Style Sheet) permettent de séparer la forme et le contenu ● avant lutilisation des styles CSS la mise en forme des pages HTML était effectuée grâce aux balises HTML de présentation ● Les intérêts sont nombreux : ● mutualisation des style de lensemble dun site ● chargement unique des feuilles de style par mise en cache par le navigateur ● adaptation au médiaantislashn.org Architectures distribuées – couche web 02 - 38 / 62
  62. 62. CSS ● Syntaxe de base ● sélecteur {propriété:valeur; propriété:valeur} – exemple : H2{color:blue; font: 18px } ● Mise ne place des styles en interne <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <style type="text/css"> déclaration du style dans p{ len-tête color: blue; text-decoration: underline; font-size: 16pt; } </style> </head> le sélecteur correspond à <body> la balise p <p>Style paragraphe</p> </body> le navigateur applique le </html> styleantislashn.org Architectures distribuées – couche web 02 - 39 / 62
  63. 63. CSS ● Feuille de style externe <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859- 1"> <link rel="StyleSheet" type="text/css" href="styles.css"> </head> <body> <p class="toto">Bonjour</p> </body> </html> styles.css .toto{ color: red; font-weight: bold; } ● Style intra-ligne <p style="color: blue;font-style: italic">Autre style</p>antislashn.org Architectures distribuées – couche web 02 - 40 / 62
  64. 64. CSS - règles ● Une règle est composé dun sélecteur et dun bloc de déclaration sélecteur {propriété:valeur; propriété:valeur} ● Le sélecteur identifie le style ● presque tous les éléments HTML sont des sélecteurs potentiels ● des noms de sélecteurs peuvent être créés – le nom est précédé par un point ● Des commentaires peuvent être insérés ● entre /* et */antislashn.org Architectures distribuées – couche web 02 - 41 / 62
  65. 65. CSS - règles ● Sélecteur classe ● il est possible dajouter une classe à un sélecteur ● il est aussi possible dutiliser # pour spécifier lid dun élément <html> <head> <style type="text/css"> p.cadre { border: 1px; border-style: solid; border-color: blue; } </style> </head> <body> <p>Texte non encadré</p> <p class="cadre">Texte encadré</p> </body> </html>antislashn.org Architectures distribuées – couche web 02 - 42 / 62
  66. 66. CSS - règles ● Les pseudo-classes sont des classes spécifiques permettant dobtenir des effets sur des éléments sans passer par lattribut class ● :first-child :link, :visited <html> ● <head> <style type="text/css"> a:VISITED {color: blue;} ● :hover, :active, :focus a:LINK { color:blue;} a:ACTIVE { color:blue;} a:HOVER { color:red;} ● :lang </style> </head> <body> <a href="#">Lien</a> </body> </html>antislashn.org Architectures distribuées – couche web 02 - 43 / 62
  67. 67. CSS - règles ● Les pseudo-éléments permettent dagir sur du contenu impossible à identifier en HTML ● :first-line ● :first-letter ● :afer, :before ● Règles spéciales ● @import ● @media ● @pageantislashn.org Architectures distribuées – couche web 02 - 44 / 62
  68. 68. CSS – blocs et lignes ● On distingue deux types déléments ● les éléments blocs comme <h1>, <div>, <li>, … – après la création dun bloc il y a un retour à la ligne ● les éléments en ligne : <a>, <img>, <span> – après la création de lélément il ny a pas de retour à la ligne ● Certaines propriétés de style ne sont applicables que sur un type délément ● vertical-align sapplique sur les éléments en ligneantislashn.org Architectures distribuées – couche web 02 - 45 / 62
  69. 69. CSS - blocs ● Un bloc(box) permet de définir la surface sur laquelle sont appliquées des propriétés ● le contenu des éléments dun document est inséré dans un bloc – les blocs peuvent être imbriquées ● Chaque bloc est composée de plusieurs rectangles ayant des noms et des rôles spécifiques ● les marges (margin) ● les bordures (border) ● la boîte de remplissage (padding) ● la boîte de contenu (content)antislashn.org Architectures distribuées – couche web 02 - 46 / 62
  70. 70. CSS - blocs top (haut) marge (margin) bordure (border) remplissage (padding) left (gauche) contenu (content) limite de la boîte limite de la boîte limite des marges de remplissage de contenu limite des borduresantislashn.org Architectures distribuées – couche web 02 - 47 / 62
  71. 71. CSS – unités de mesure ● Une unité de mesure est composée dun nombre suivi dune abréviation indiquant lunité ● Unités de longueurs relatives ● em : relatif à la taille de caractère employé dans lélément parent (1.2em vaut 120%) ● ex : relatif à la hauteur du caractère employé dans lélément parent ● px : relatif à la résolution du support visuelantislashn.org Architectures distribuées – couche web 02 - 48 / 62
  72. 72. CSS – unités de mesure ● Unités de longueurs absolues ● in : pouce (inch) ● cm : centimètre ● mm : millimètre ● pt : point (1pt = 1/72in) ● pc : pica (1pc = 12pt) ● Les pourcentages (%) sont relatifs à dautre valeursantislashn.org Architectures distribuées – couche web 02 - 49 / 62
  73. 73. CSS ● Une couleur peut être définie par ● un nom : aqua, black, fuschia, gray, green, lime, … ● un code couleur RGB : #RRGGBB – RR, GG, BB sont exprimés en hexa de 0 à FF ● une fonction rgb – rgb(r,g,b) où r, g et b sont un nombre entre 0 et 255 – rgb(r%,g%,b%) où r%, g% et b% sont le pourcentage de chaque couleurantislashn.org Architectures distribuées – couche web 02 - 50 / 62
  74. 74. JavaScript ● JavaScript est un langage de programmation ● interprété ● norme ECMA 262 – utilisable dans de nombreux environnements – système d’exploitation – navigateur – serveur – etc. ● Nous nous intéresserons ici à l ’utilisation de JavaScript dans le navigateurantislashn.org Architectures distribuées – couche web 02 - 51 / 62
  75. 75. JavaScript Intégration de JavaScript au langage HTML ● par la balise <script> ● <script type="text/javascript">…</script> ● pour inclure directement les instruction JavaScript ● <script type="text/javascript" src="fichier.js"></script> ● pour l ’inclusion de fichier contenant du code JavaScript ● inclusion dans un attribut d ’événement d ’un élément HTML ● <a href=" … " onclick ="alert(‘ toto ’) ;">…</a>antislashn.org Architectures distribuées – couche web 02 - 52 / 62
  76. 76. JavaScript JavaScript n ’est pas un langage Objet ● le langage possède des fonctions ● JavaScript peut manipuler des instances de classe ● il est possible de créer des classes JavaScript possède des classes intrinsèques ● Date, String, Array, Math, ... JavaScript utilise des objets liés à l’environnement dans lequel il est exécuté ● window, navigator, document, ...antislashn.org Architectures distribuées – couche web 02 - 53 / 62
  77. 77. JavaScript La syntaxe de base de JavaScript se rapproche de celle de Java ● même construction des instructions ● même opérateurs de base ● même construction de boucles, tests, gestion des exception ● ATTENTION : les classes ne se construisent pas de la même manièreantislashn.org Architectures distribuées – couche web 02 - 54 / 62
  78. 78. JavaScript JavaScript interagit avec le DOM du navigateur La tendance actuelle est de créer du JavaScript "non intrusif" ● la partie HTML ne comporte que du HTML ● la mise en place de la gestion des événements par JavaScript est codée en JavaScript ● pas d ’affectation aux attributs d ’événement (onxxx)antislashn.org Architectures distribuées – couche web 02 - 55 / 62
  79. 79. JavaScript Un événement est un changement détat de lenvironnement qui peut être intercepté par JavaScript ● click sur un élément, clavier, souris, … Un objet Event est créé par le navigateur et mis à disposition du code JavaScript ● cette mise à disposition est différente en fonction des navigateurs Des informations sur lobjet Event peuvent être récupérés via les propriétés de cet objetantislashn.org Architectures distribuées – couche web 02 - 56 / 62
  80. 80. Les plugins ● Tout ce qui nest pas nativement évaluer par le navigateur fait appel à des plugins ● en fonction du type MIME du document – pdf, video, audio, ...antislashn.org Architectures distribuées – couche web 02 - 57 / 62
  81. 81. Serveur web ● Le serveur web doit restituer la réponse ● ressource statique – fichier html, image, pdf , etc. – un serveur http suffit ● apache, IIS ● ressources dynamiques – la ressource doit être générée dynamiquement côté serveur ● interrogation de base de données pour restituer la page – un langage de programmation est associé ● PHP, Java, VB, C#, JavaScript, ...antislashn.org Architectures distribuées – couche web 02 - 58 / 62
  82. 82. Serveur web SERVEUR moteur de WEB script INTERNET apache IIS ... scripts SI ressources statiquesantislashn.org Architectures distribuées – couche web 02 - 59 / 62
  83. 83. PHP ● Exemple PHP <html> <head> <title>Exemple</title> </head> <body> Date courante : <?php print(Date("l F d, Y")); ?> </body> </html>antislashn.org Architectures distribuées – couche web 02 - 60 / 62
  84. 84. Java ● Exemple JSP <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <html> <head> <title>Exemple</title> </head> <body> <% date = new Date() %> Date courante : <%=date%> </body> </html>antislashn.org Architectures distribuées – couche web 02 - 61 / 62
  85. 85. ASP ● Exemple VB <html> <head><title>Exemple</title></head> <body> Date courante : <%=Date()%> </body> </html>antislashn.org Architectures distribuées – couche web 02 - 62 / 62
  86. 86. Architectures distribuées Architectures N tiers
  87. 87. Serveur dapplications ● Logiciel qui offre un contexte dexécution pour des composants applicatifs ● les composants sont hébergés sur le serveur ● les composants sont conformes à une spécification – EJB, COM ● Le serveur gère des problématiques transversales aux applications ● accès concurrents, sécurité, transactions, … ● permet au développeur de se concentrer sur le code métierantislashn.org Architectures distribuées – N tiers 03 - 2 / 29
  88. 88. Serveur dapplications ● Les clients des serveurs dapplications peuvent être ● dautres serveurs ● des clients lourds ● des clients légers ● ...antislashn.org Architectures distribuées – N tiers 03 - 3 / 29
  89. 89. Serveur dapplications ● Exemple : Excel Service source : Microsoftantislashn.org Architectures distribuées – N tiers 03 - 4 / 29
  90. 90. Serveur dapplications ● Exemple : Java EE source : Oracleantislashn.org Architectures distribuées – N tiers 03 - 5 / 29
  91. 91. Serveur dapplications ● Exemple : WebDev source : PC Softantislashn.org Architectures distribuées – N tiers 03 - 6 / 29
  92. 92. Serveur dapplications ● Exemple : Zope source : www.zope.organtislashn.org Architectures distribuées – N tiers 03 - 7 / 29
  93. 93. Serveur dapplications ● Quelques solutions libres ● JBoss, JOnAS, GlassFish, Apache Geronimo ● Zope ● Quelques solutions propriétaires ● Oracle WebLogic, IBM WebSphere ● Borland Application Server ● Microsoft .NET ● Sysbase EAServer ● PC Soft WebDevantislashn.org Architectures distribuées – N tiers 03 - 8 / 29
  94. 94. Serveur dapplications ● Le serveur dapplication fournit un environnement dexécution et un ensemble de services ● gestion des ressources – connexion aux bases de données, pooling – connexion aux application tiers : MOM, connecteurs – ... ● sécurité – authentification, gestion des droits ● disponibilité – redirection transparente vers un autre serveur en cas de plantageantislashn.org Architectures distribuées – N tiers 03 - 9 / 29
  95. 95. Serveur dapplications ● Outils complémentaires ● console dadministration – facilitant le paramétrage du serveur – gestion des applications ● atelier de développement – offre au développeur le moyen de réaliser simplement les application, de les testerantislashn.org Architectures distribuées – N tiers 03 - 10 / 29
  96. 96. EAI ● Enterprise Application Integration ● Architecture permettant à des applications hétérogènes déchanger des messages ● EAI va gérer les flux inter-applicatifs – notion de workflow ● le middleware ne fait que véhiculer les flux entre les applications – prend en charge la traduction des données entre les applicationsantislashn.org Architectures distribuées – N tiers 03 - 11 / 29
  97. 97. SOA ● Service Oriented Architecture ● Architecture de médiation ● les services sont des composants logiciels ● Popularisé avec lutilisation des web services ● commerce électronique, B2B, B2C, … ● souvent basé sur les plateformes .Net ou Java EE ● Consiste en une collection de services qui interagissent et communiques entre euxantislashn.org Architectures distribuées – N tiers 03 - 12 / 29
  98. 98. SOA source : Wikipedia Commonsantislashn.org Architectures distribuées – N tiers 03 - 13 / 29
  99. 99. SOA et ESB ● Enterprise Service Bus ● Limplémentation de SOA est basée sur un bus de services ● ESB est une évolution des EAI (Enterprise Application Integration ● ESB propose une intégration distribuée via lutilisation de conteneurs de services – interfaces normalisées : SOAP, JMS, ...antislashn.org Architectures distribuées – N tiers 03 - 14 / 29
  100. 100. Web services ● Service exposé sur le web ● plusieurs technologies possibles – REST (Representational State Transfert) – SOAP (Simple Object Access Protocol) ● Concepts de base ● basé sur HTTP ● fournit une interopérabilité entre des applications hétérogènes ● utilise des standards et protocoles ouvertsantislashn.org Architectures distribuées – N tiers 03 - 15 / 29
  101. 101. WOA ● Web Oriented Architecture ● Implémentation SOA qui utilise le web comme support de service ● Tous les services doivent être exposés sur le web ● problème potentiel de performanceantislashn.org Architectures distribuées – N tiers 03 - 16 / 29
  102. 102. Cloud computing ● Déport vers des serveurs distants les stockages et traitements qui traditionnellement sont localisés sur les serveurs locaux ou poste de lutilisateur ● forme dinfogérance – lemplacement des données nest pas connu des clients ● Trois formes de cloud computing ● cloud privé interne ● cloud privé externe – la gestion est externalisé chez un prestataire ● cloud publiqueantislashn.org Architectures distribuées – N tiers 03 - 17 / 29
  103. 103. ORB ● Object Request Broker ● appartient à la famille des middlewares ● Bibliothèques de fonctions implémentant un bus logiciel ● les objets communiquent de manière transparente sur le réseau – invocation à distance de la méthode dun objet ● Deux ORB peuvent communiquer via IIOP ● Internet Inter-ORB Protocolantislashn.org Architectures distribuées – N tiers 03 - 18 / 29
  104. 104. CORBA ● Common Object Request Broker Architecture ● standard maintenu par lOMG ● CORBA est une spécification basée sur la technologie objet ● indépendant des langages ● Exposition des services par IDL ● Interface Definition Language ● compilation vers le langage cibleantislashn.org Architectures distribuées – N tiers 03 - 19 / 29
  105. 105. CORBA source : Wikipedia Commonsantislashn.org Architectures distribuées – N tiers 03 - 20 / 29
  106. 106. RMI ● Remote Method Invocation ● technologie Java ● sur le principe des ORB ● concurrence avec CORBA ● API Java dinvocation des méthodes distantes ● mécanisme dappel des méthodes dobjets Java sexécutant sur des JVM différentes ● repose sur des classe Serializable ● couche de transport propriétaire JRMP – Java Remote Method Invocation basé sur TCP/IPantislashn.org Architectures distribuées – N tiers 03 - 21 / 29
  107. 107. RMI Client Serveur 3 - interroger Serveur 2 - publier de noms remiregistry appli 4 - récupérer 1 - exposer objet cliente 5 – appel de méthode distant 7 – appel de la méthode 10 - retour Serveur 6 – sérialisation des dobjets paramètres Stub Skeleton 9 – sérialisation 8 – valeur de retour du résultatantislashn.org Architectures distribuées – N tiers 03 - 22 / 29
  108. 108. DCOM ● Distributed Component Object Model ● technologie Microsoft ● complété par .Net remoting, puis WCF (Windows Communication Foundation) ● Permet la communication entre des composants logiciels distribués sur le réseauantislashn.org Architectures distribuées – N tiers 03 - 23 / 29
  109. 109. MOM ● Message Oriented Middleware ● Architecture permettant léchange de message entre applications via le réseau ● permet un couplage faible entre applications ● Deux modes de focntionnement ● point à point ● par abonnementantislashn.org Architectures distribuées – N tiers 03 - 24 / 29
  110. 110. MOM ● Fonctionnement point à point – un producteur de message envoie un message – le message est lu par un consommateur – une fois lu le message est retiré de la file dattente A Queue A A Consommateur A Producteur B Queue B B Consommateur Bantislashn.org Architectures distribuées – N tiers 03 - 25 / 29
  111. 111. MOM ● Fonctionnement par abonnement ● Publish Subscrite ● les applications consommatrices de message sabonnent à un sujet (topic) ● les messages restent dans la file dattente jusquà ce que tous les abonnés aient lu le message abonnement A Topic A A Consommateur abonnement Producteur B B Topic B B Consommateurantislashn.org Architectures distribuées – N tiers 03 - 26 / 29
  112. 112. MOM ● Caractéristiques ● transport des messages – un message est constitué dune en-tête et dun corps qui contient les données ● communication asynchrone – gestion des messages par file dattente ● routage des messages entre MOM ● transformation des données pour adaptation aux applications réceptrice ● persistance des messages ● fiabilité : envoi dun accusé de réception du messageantislashn.org Architectures distribuées – N tiers 03 - 27 / 29
  113. 113. Google Protocol Buffer ● projet protobuf ● projet Google – développé pour des besoins RPC internes – cf. : http://code.google.com/p/protobuf/ ● Protocole de sérialisation léger ● pas de XML, binaire ou texte ● Basé sur lexposition des structures par des fichiers proto ● puis compilation vers C++, Java ou Pythonantislashn.org Architectures distribuées – N tiers 03 - 28 / 29
  114. 114. En résumé EAI middleware Application WOA B ORB SOA ESB MOM Application A EAI : Enterprise Application Integration SOA : Service Oriented Architecture WOA : Web Oriented Architecture ESB : Entreprise Service Bus ORB : Object Request Broker MOM : Message Oriented Midddlewareantislashn.org Architectures distribuées – N tiers 03 - 29 / 29
  115. 115. Architectures distribuées XML
  116. 116. XML - introduction ● XML : eXtensible Markup Language ● langage à balises – dérivé de SGML (Standard Generalized Markup Language) ● prévu pour structurer les données – HTML est aussi un langage à balises, mais utilisé pour laffichage des pages Web ● les balises ne sont pas définies – contrairement à HTML où le nom des balises et des attributs est défini ● spécification du consortium W3Cantislashn.org Architectures distribuées – XML 04 - 2 / 44
  117. 117. XML - introduction ● La spécification XML est très simple ● une multitude dautres spécifications viennent compléter cette spécification de base ● Des API simplifient la manipulation par programme des documents XML ● SAX : Simple API for XML ● DOM : Document Object Model ● Des outils permettent de vérifier la syntaxe XML ● les parsersantislashn.org Architectures distribuées – XML 04 - 3 / 44
  118. 118. XML - introduction ● XML est lisible ● juste du texte structuré par les balises ● XML ne fait rien, mais il sest imposé comme un standard ● fichiers de configuration ● échange de données ● description de protocole ● structuration de données ● sérialisation ● etc.antislashn.org Architectures distribuées – XML 04 - 4 / 44
  119. 119. XML - introduction ● Exemples de fichiers XML <carnet-adresse> <societe> <nom>Toto and co</nom> <adresse>rue de Paris</adresse> </societe> <personne> <nom>Dupond</nom> <societe>Toto and co</societe> <carnet-adresse> </personne> <societe> <personne> <nom>Toto and co</nom> <nom>Lagaffe</nom> <adresse>rue de Paris</adresse> <societe>Toto and co</societe> <personne> </personne> <nom>Dupond</nom> </carnet-adresse> </personne> <personne> <nom>Lagaffe</nom> </personne> </societe> </carnet-adresse>antislashn.org Architectures distribuées – XML 04 - 5 / 44
  120. 120. XML - introduction ● Le document XML forme un arbre ● dans les exemples précédents la racine de cet arbre est lélément <carnet-adresse> ● Chaque élément peut avoir des attributs et un contenu ● le contenu peut-être du texte et/ou dautres élémentsantislashn.org Architectures distribuées – XML 04 - 6 / 44
  121. 121. XML - syntaxe ● Un document XML est constitué ● dun prologue (optionnel) <?xml version="1.0" encoding="UTF-8"?> ● de linstance du document – au minimum une racine ● élément qui encapsule tout le reste ● un document XML vide nest pas un fichier videantislashn.org Architectures distribuées – XML 04 - 7 / 44
  122. 122. XML - syntaxe ● Constitution dun élément ● balise douverture <message type="email"> – qui contient les éventuels attributs ● corps de lélément – qui contient du texte et/ou dautres éléments ● balise de fermeture </message> ● un élément qui ne contient rien peut être fermé aussitôt <br></br> <br />antislashn.org Architectures distribuées – XML 04 - 8 / 44
  123. 123. XML - syntaxe ● Les éléments doivent être inclus les uns dans les autres ● sans chevauchement des balises douverture et fermeture ● seule la racine nest pas incluse dans un autre élément <a> <a> <b> <b> </b> </a> </a> </b>antislashn.org Architectures distribuées – XML 04 - 9 / 44
  124. 124. ● XML est "case sensitive" ● Les valeurs des attributs doivent être entre guillemets ou apostrophes ● Les espaces sont préservés en XML ● Commentaire XML ● débute par <!-- ● fini par --> ● les commentaires ne peuvent pas être imbriqués <!-- ceci est un commentaire XML -->antislashn.org Architectures distribuées – XML 04 - 10 / 44
  125. 125. XML - syntaxe ● Certains caractères ont un usage spécial : les entités ● 5 entités prédéfinies &lt ; > &gt ; < &amp ; & &apos ; (apostrophe) &quot ; " (guillemets) ● une entité peut aussi correspondre à un caractère particulier, un fichier, une suite de caractères – correspond à une "unité de stockage"antislashn.org Architectures distribuées – XML 04 - 11 / 44
  126. 126. XML - syntaxe ● Le nom dun élément ou attribut ● peut contenir des lettres, des chiffres, et les caractères – tiret bas _ – tiret - – point . – deux points : ● doit débuter par une lettre ou le tiret bas _ ● ne doit pas débuter par le mot xml – que ce soit en minuscule ou majuscule ● ne peut pas contenir despaceantislashn.org Architectures distribuées – XML 04 - 12 / 44
  127. 127. XML – les parsers ● Les parsers sont des applications qui analysent les documents XML ● vérifient si le document est bien formé (well formed) – le document respect alors la syntaxe de base XML ● peuvent vérifié si le document est valide (valid) – le document est bien formé et valide par rapport à son schéma ● DTD ou XML Schema ● remplacent les entités par leur contenuantislashn.org Architectures distribuées – XML 04 - 13 / 44
  128. 128. XML – les parsers ● Certaines parties du document ne doivent pas être analysés par les parsers ● JavaScript dun document XHTML par exemple ● les sections sont alors maquées comme CDATA – commence par <![CDATA[ – fini par ]]> <script> <![CDATA[ function minimum(a,b){ if(a<b) return a ; else return b ;} ]]> </script>antislashn.org Architectures distribuées – XML 04 - 14 / 44
  129. 129. XML – espaces de nommage ● Des éléments de même noms peuvent se trouver dans même document XML, mais avec des significations différentes <societe><nom>Dupond and co</nom></societe> <salarie><nom num="123">Gaston LAGAFFE</nom></salarie> ● les éléments <nom> ont des structures et une signification différente ● on associe alors les éléments à un espace de nom – cette association est effectuée dans la racine – mot clé xmlns : suivi par le nom de lespace de nommage et une URI (Uniform Resource Identifier)antislashn.org Architectures distribuées – XML 04 - 15 / 44
  130. 130. XML – espaces de nommage ● Exemple <soc :carnet-adresses xmlns:soc="http://www.antislahsn.org/catalogue/societe" xmlns:ctc="http://www.antislahsn.org/catalogue/contact"> <societe> <nom>Dupond and co</nom> </societe> <salarie> <ctc:nom num="123">Gaston LAGAFFE</ctc:nom> </salarie> </soc:carnet_adresses>antislashn.org Architectures distribuées – XML 04 - 16 / 44
  131. 131. XML – espaces de nommage ● La racine peut avoir un espace de nommage par défaut ● xmlns nest pas suivi dun nom pour lespace de nommage <carnet-adresses xmlns="http://www.antislahsn.org/catalogue/societe" xmlns:ctc="http://www.antislahsn.org/catalogue/contact"> <societe> <nom>Dupond and co</nom> </societe> <salarie> <ctc:nom num="123">Gaston LAGAFFE</ctc:nom> </salarie> </carnet_adresses>antislashn.org Architectures distribuées – XML 04 - 17 / 44
  132. 132. XML – espaces de nommage ● Les espaces de nommage jouent un rôle important dans les schémas ● les spécifications des fichiers de configuration des serveurs sont formés de plusieurs schémas provenant despaces de nommage différents <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> … </web-app>antislashn.org Architectures distribuées – XML 04 - 18 / 44
  133. 133. XML – les schémas ● Dans les faits, les noms des éléments et attributs dun fichier XML sont fixés ● de manière informelle ● ou de manière formelle par les schémas ● Plusieurs spécifications existent ● XML Schema – la plus utilisée maintenant, spécification du W3C ● DTD : Document Type Definition – historiquement première spécification – de moins en moins utilisé, sauf pour des schémas très simples ● Relax NG – alternative à XML Schema, utilisé par OpenDocumentantislashn.org Architectures distribuées – XML 04 - 19 / 44
  134. 134. DTD ● La DTD permet de définir la structure du document XML, en déclarant les éléments et les attributs ● la DTD peut aussi contenir – des déclarations dentités – des déclarations de notations ● spécifie le format de données non XML, binaire ou texte – des commentairesantislashn.org Architectures distribuées – XML 04 - 20 / 44
  135. 135. DTD ● La DTD est liée au document XML par la directive SGML <!DOCTYPE > ● elle peut être interne au document XML <!DOCTYPE racine [declarations DTD] > ● elle peut être externe au document XML <!DOCTYPE racine SYSTEM "file.dtd" > <!DOCTYPE racine PUBLIC "fpi" "url" > ● peut être un mixte des deux <!DOCTYPE racine SYSTEM "file.dtd" [autres declarations DTD] >antislashn.org Architectures distribuées – XML 04 - 21 / 44
  136. 136. DTD ● Généralement les DTD sont externes au document XML ● peut être SYSTEM – DTD privée à une entreprise, disponible via un chemin fichier ● ou PUBLIC – DTD publique disponible via internet – définie par un FPI (Format Public Identifier) qui est associée à une URL ● Les diapositives suivantes présentent la structure de base des DTD ● cf. la spécification pour plus de détailsantislashn.org Architectures distribuées – XML 04 - 22 / 44
  137. 137. DTD ● Exemple de DTD externe (extraits) <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT carnet-adresses (contact*,entreprise*)> <!ELEMENT contact (civilite,nom,prenom,telephones?,emails?,adresse?)> <!ELEMENT telephones (telephone)*> ... <!ELEMENT ville (#PCDATA)> <!ELEMENT pays (#PCDATA)> ... <!ATTLIST adresse type (prive|pro) #REQUIRED> ● et déclaration dans le fichier XML <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE carnet-adresses SYSTEM "carnet-adresses.dtd"> <carnet-adresses> ...antislashn.org Architectures distribuées – XML 04 - 23 / 44
  138. 138. DTD ● Déclaration des éléments ● lélément racine est déclaré dans < !DOCTYPE … > ● chaque élément est ensuite déclaré dans <!ELEMENT ...> ● Un élément défini son contenu ● liste déléments fils ● vide : EMPTY ● chaîne de caractère : #PCDATA ● nimporte quel contenu : ANYantislashn.org Architectures distribuées – XML 04 - 24 / 44
  139. 139. DTD ● Liste ordonnée délément fils <!ELEMENT carnet-adresses (entreprise,contact) > ● Choix dun élément <!ELEMENT carnet-adresses (entreprise | contact) > ● Nombre d’occurrences ● par défaut : 1 occurrence ● + : 1 à n fois ● * : 0 à n fois <!ELEMENT carnet-adresses (entreprise*,contact*) > ● ? : 0 ou 1 foisantislashn.org Architectures distribuées – XML 04 - 25 / 44
  140. 140. DTD ● Les attributs sont déclarés dans <!ATTLIST ...> ● on y retrouve – le nom de lattribut – lélément auquel il appartient – son type – sa déclaration par défaut <!ATTLIST contact entreprise IDREF #IMPLIED> <!ATTLIST entreprise id ID #REQUIRED> <!ATTLIST telephone type (fixe_prive|portable_prive|fixe_pro|portable_pro|fax_prive|fax_pro) #REQUIRED> <!ATTLIST email type (prive|pro) #REQUIRED> <!ATTLIST adresse type (prive|pro) #REQUIRED>antislashn.org Architectures distribuées – XML 04 - 26 / 44
  141. 141. DTD ● Principaux types dattributs ● CDATA : chaîne de caractères ● ID : identifiant unique dans le document XML ● IDREF : référence à un attribut de type ID ● IDREFS : référence à une liste dattributs de type ID – séparateur : espace ● autres types possibles : énumération, ENTITY, ENTITIES, NMTOKEN, NMTOKENS, NOTATION – cf. la spécification pour plus de précisionantislashn.org Architectures distribuées – XML 04 - 27 / 44
  142. 142. DTD ● La DTD est très simple à lire ● Mais ● non XML ● peu modularisable ● peu typée ● XML Schema remédie aux défauts des DTD ● mais plus complexe à lire, et à écrireantislashn.org Architectures distribuées – XML 04 - 28 / 44
  143. 143. XML Schema ● Recommandation du W3C ● Définit la structure dun document XML de manière plus complète quune DTD ● typage des données ● espaces de nommage ● syntaxe XML ● création de types personnalisés ● Plus complexe à écrire dune DTD ● un outil constitue une aide appréciable – XMLSpy, Oxygen, EditiX, éditeurs des EDIantislashn.org Architectures distribuées – XML 04 - 29 / 44
  144. 144. XML Schema ● Exemple (extrait) <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="carnet-adresses"> <xs:complexType> <xs:sequence> <xs:element ref="contact" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="entreprise" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> … </xs:schema> <?xml version="1.0" encoding="ISO-8859-1"?> <carnet-adresses xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="carnet-adresses.xsd"> … </carnet-adresses>antislashn.org Architectures distribuées – XML 04 - 30 / 44
  145. 145. XML Schema ● Lécriture dun XML Schema est plus complexe quune DTD ● les outils permettent un développement du schema de manière graphiqueantislashn.org Architectures distribuées – XML 04 - 31 / 44
  146. 146. XML Schema ● Élément racine du XML Schema <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> ● décrit la version utilisée ● peut décrire des espaces de nommage ● Un élément peur être ● un élément simple – sans élément fils, sans attribut ● un élément complexe – avec un (des) élément(s) fils – et/ou un (des) attribut(s)antislashn.org Architectures distribuées – XML 04 - 32 / 44
  147. 147. XML Schema ● Définition dun élément simple ● contient un contenu typé – pas délément fils – pas dattribut – xs:string par défaut <xs:element name="nom" type="xs:string"/>antislashn.org Architectures distribuées – XML 04 - 33 / 44
  148. 148. XML Schema ● Définition dun élément complexe ● définition des éléments fils – sequence : liste ordonnée – choice : un seul des éléments fils doit être présent – all : liste non ordonnée <xs:element name="carnet-adresses"> <xs:complexType> <xs:sequence> <xs:element ref="contact" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="entreprise" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element>antislashn.org Architectures distribuées – XML 04 - 34 / 44
  149. 149. XML Schema ● Définition des attributs dun élément complexe ● définition après les éléments fils élément fils définit dans lélément père <xs:element name="entreprise"> <xs:complexType> <xs:sequence> <xs:element name="raison_sociale" type="xs:string"/> <xs:element ref="adresse"/> <xs:element name="web"/> lélément fils référencie un élément définit </xs:sequence> ailleurs dans le fichier <xs:attribute name="id" type="xs:ID" use="required"/> </xs:complexType> </xs:element>antislashn.org Architectures distribuées – XML 04 - 35 / 44
  150. 150. XML Schema ● XML Schema dispose dun ensemble de types simples ● cf. page suivante ● est utilisé par certains web services ● possibilité de créer ses propre types – par restriction sur des valeurs dun type simple ● avec les facettes : valeurs mini, maxi, tailles mini, maxi, … ● des expressions régulières ● des énumérations – par extension dun type existantantislashn.org Architectures distribuées – XML 04 - 36 / 44
  151. 151. XML Schemaantislashn.org Architectures distribuées – XML 04 - 37 / 44
  152. 152. XML Schema ● Définition dun type personnalisé ● sappuie sur un type existant <xs:simpleType name="type_numero_telephone"> <xs:restriction base="xs:string"> <xs:pattern value="([0-9]{2}[ -]?){4}[0-9]{2}"/> </xs:restriction> </xs:simpleType>antislashn.org Architectures distribuées – XML 04 - 38 / 44
  153. 153. XML Schéma ● Utilisation des espaces de nom ● attributs définis dans lélément <Schema ...> – elementFormDefault="qualified" ● les éléments sont situé dans lespace de nommage cité, ou par défaut – attributeFormDefault="unqualified" ● les attributs sont dans lespace de nom de lélémentantislashn.org Architectures distribuées – XML 04 - 39 / 44
  154. 154. XML Schema ● Un schema peut être constitué de plusieurs documents ● insertion simple – tous les éléments sont inclus dans le même espace de nommage que le schema récepteur <xs:include schemaLocation="autreSchema.xsd"/> ● insertion avec espace de nommage – les éléments inclus possède un espace de nommage différent du schema récepteur <xs:include nameSpace="autre.namespace" schemaLocation="autreSchema.xsd"/>antislashn.org Architectures distribuées – XML 04 - 40 / 44
  155. 155. XML Schema <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="n1" elementFormDefault="qualified" attributeFormDefault="qualified"> targetNamespace="n2"> <xs:element name="personne"> <xs:element name="personne"> <xs:complexType> <xs:complexType> <xs:sequence> <xs:sequence> <xs:element name="civilite"/> <xs:element name="nom"/> <xs:element name="nom"/> <xs:element name="prenom"/> <xs:element name="prenom"/> <xs:element name="age" type="xs:int"/> </xs:sequence> </xs:sequence> </xs:complexType> </xs:complexType> </xs:element> </xs:element> </xs:schema> </xs:schema> <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:na1="n1" xmlns:na2="n2" elementFormDefault="qualified"> <xs:import namespace="n1" schemaLocation="name1.xsd"/> <xs:import namespace="n2" schemaLocation="name2.xsd"/> <xs:element name="contacts"> <xs:complexType> <xs:sequence> <xs:element ref="na1:personne"></xs:element> <xs:element ref="na2:personne"></xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>antislashn.org Architectures distribuées – XML 04 - 41 / 44

×