2. Objectifs
● Acquérir une connaissance globale des modèles
d'architecture 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. 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 EE
antislashn.org Architectures distribuées - Objectifs 0-3/5
4. copyleft
Support de formation créer par
Franck SIMON
http://www.franck-simon.com
antislashn.org Architectures distribuées - Objectifs 0-4/5
5. copyleft
Cette œuvre est mise à disposition sous licence
Attribution
Pas d'Utilisation 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
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
● l'accès aux données
● Ce principe n'est qu'un découpage abstrait
● les trois couches peuvent être imbriquées ou réparties
antislashn.org Architectures distribuées - Introduction 01 - 4 / 18
10. Évolution des architectures
Gestion de la présentation
Présentation
Logique de présentation
Noyau de l'application
Logique des traitements
Traitements
Gestion des traitements
Logique des données
Données
Gestion des données
antislashn.org Architectures distribuées - Introduction 01 - 5 / 18
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 d'une application
● la réalité est plus complexe
– architectures multi-niveaux
● le serveur peut-être client d'un autre serveur
– prise en compte des applications existantes
● legacy
antislashn.org Architectures distribuées - Introduction 01 - 7 / 18
13. Architecture trois-tiers
● Les limites de l'architecture deux-tiers
● frontal complexe et non standard
– généralement sous Windows
– à déployer
● middleware non standard
● La solution serait
● utilisation d'un poste client très simple
● communication avec le serveur via un protocole
standard
antislashn.org Architectures distribuées - Introduction 01 - 8 / 18
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 d'un serveur d'application centralisé
– dialogue avec les clients par un protocole propriétaire
antislashn.org Architectures distribuées - Introduction 01 - 9 / 18
15. Serveur transactionnel
● Issu des technologies IBM des années 1970
● mise à disposition à grande échelle d'applications en
mode texte
● plusieurs écrans se succèdent avant qu'une
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ées
antislashn.org Architectures distribuées - Introduction 01 - 10 / 18
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 d'un état cohérent à un
autre état cohérent
● Isolation
– un transaction n'est pas affectée par le résultat des autres
transactions
● Durée
– les modifications de la transaction sont durablement garantie
antislashn.org Architectures distribuées - Introduction 01 - 11 / 18
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 2
antislashn.org Architectures distribuées - Introduction 01 - 12 / 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 d'application
●
3ème tiers : base de données
1er tiers 2éme tiers 3éme tiers
présentation
traitements
traitements données
globaux
locaux
antislashn.org Architectures distribuées - Introduction 01 - 13 / 18
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. Architecture trois tiers
● Du mainframe en mode texte au mainframe en
mode graphique : retour à la case départ
source : Serveurs d'applications - Eyrolles
antislashn.org Architectures distribuées - Introduction 01 - 15 / 18
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 l'application 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 objets
antislashn.org Architectures distribuées - Introduction 01 - 16 / 18
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 n'existe pas d'administration internet
– comme pour un réseau téléphonique
antislashn.org Architectures distribuées – couche web 02 - 2 / 62
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. Protocole IP
● IP – Internet Protocol
● protocole non fiable
– assure l'acheminement 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 d'arrivée
● L'adresse IP est un numéro attribué à chaque
équipement connecté
antislashn.org Architectures distribuées – couche web 02 - 4 / 62
28. Protocole IP
● IP v4
● adresse sur 32 bits
* image provenant de Wikipedia Commons
antislashn.org Architectures distribuées – couche web 02 - 5 / 62
29. Protocole IP
● IP v6
● adresse sur 128 bits
* image provenant de Wikipedia Commons
antislashn.org Architectures distribuées – couche web 02 - 6 / 62
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 l'application
● à chaque extrémité (client / serveur) est associé un
numéro de port sur 16 bits
antislashn.org Architectures distribuées – couche web 02 - 7 / 62
31. Protocole TCP
● Structure d'un segment TCP
antislashn.org Architectures distribuées – couche web 02 - 8 / 62
32. Protocole TCP
● Fonctionnement en 3 phases
● établissement de la connexion
● transfert des données
● fermeture de la connexion
● La perte d'un segment est gérée par TCP
● mécanisme de temporisation et retransmission
antislashn.org Architectures distribuées – couche web 02 - 9 / 62
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 d'utilisation :
– DNS – Domain Name System
– TFTP – Trivial File Transfert Protocol
antislashn.org Architectures distribuées – couche web 02 - 10 / 62
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 2616
antislashn.org Architectures distribuées – couche web 02 - 11 / 62
35. Protocole HTTP
● Protocole sans état
● le client envoie une requête
– qui comporte une commande : méthode HTTP
● le serveur lui répond
antislashn.org Architectures distribuées – couche web 02 - 12 / 62
36. Le protocole HTTP
● Les méthodes HTTP
● GET : demande de ressource
● POST : soumission de données au serveur en vue d'un
traitement
– formulaire HTLM
● OPTIONS : permet d’obtenir les méthodes supportées par le
serveur
● CONNECT : utilisation d'un proxy comme tunnel de
communication
● TRACE : demande au serveur de retourner ce qu'il a reçu
● PUT : demande de remplacer ou d'ajouter une ressource
● DELETE : demande la suppression d'une ressource
antislashn.org Architectures distribuées – couche web 02 - 13 / 62
37. Protocole HTTP
● HTTP permet l'identification
● 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 certificat
antislashn.org Architectures distribuées – couche web 02 - 14 / 62
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. 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é d'utilisation
● IHM limitée
● nécessité d'un framework
antislashn.org Architectures distribuées – couche web 02 - 16 / 62
40. HTML
● Utilisé dans les navigateurs HTML est un langage de
description des pages web
● HTML pour Hyper Text Markup Language
● n'est pas un langage de programmation
● basé sur un ensemble fini d'éléments
● Le navigateur interprète le document HTML et
l'affiche 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
d'un site web
antislashn.org Architectures distribuées – couche web 02 - 17 / 62
41. HTML
● Un tag élément HTML est constitué
● d'une balise d'ouverture (start tag)
– qui peut contenir des attributs
● d'un corps d'élément
– qui peut être vide, contenir du texte et/ou d'autre éléments
● d'une 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. HTML
attribut avec sa valeur
entre " ou '
<a href="autre_page.html"> balise d'ouverture
Lien vers autre page
</a>
corps de l'élément
balise de fermeture
antislashn.org Architectures distribuées – couche web 02 - 19 / 62
43. HTML
● Structure d'un 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 page
antislashn.org Architectures distribuées – couche web 02 - 20 / 62
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. 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 cadres
antislashn.org Architectures distribuées – couche web 02 - 22 / 62
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 5
antislashn.org Architectures distribuées – couche web 02 - 23 / 62
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 Firefox
antislashn.org Architectures distribuées – couche web 02 - 24 / 62
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. 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. HTML
● HTML 5
● Simplification de la syntaxe
<!DOCTYPE html>
<html lang="fr">
antislashn.org Architectures distribuées – couche web 02 - 27 / 62
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 d'un formulaire
– balise <form … >
antislashn.org Architectures distribuées – couche web 02 - 28 / 62
52. HTML
● Ancres
● élément <a> (anchor)
– hyper lien avec l'attribut href
● appel d'une autre page
● appel d'un index dans une autre page, ou la même page
● l'attribut target peut indiquer une autre fenêtre ou onglet
● index avec l'attribut name
– accessible par un hyperlien précisant l'index par #
antislashn.org Architectures distribuées – couche web 02 - 29 / 62
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. HTML
● Les formulaires <form> contiennent des champs
<input>
● Les champs permettent à l'utilisateur d'entrer 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. 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>
● l'attribut name correspond au nom du champ tel
qu'il pourra être récupéré côté serveur
● l'attribut id permettra de récupérer l'élément en
JavaScript
● vrai pour tous les éléments
● unique dans la page
● l'attribut 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. HTML
● Attributs de l'élément <form>
●
action : url vers laquelle le formulaire sera envoyé
●
method : méthode d'envoi des champs du formulaire
– GET : passage par l'URL
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 d'encodage du formulaire
– application/x-www-form-urlencoded par défaut
– pour les envoie de fichier doit être multipart/form-data
antislashn.org Architectures distribuées – couche web 02 - 33 / 62
57. HTML
● Types de l'élément <input>
● déterminé par l'attribut type
– button : bouton cliquable pour le support JavaScript
– checkbox : cases à cocher
– file : permet la saisie d'un 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 d'attribut name)
– reset : bouton de remise à zéro des champs du formulaire
– submit : bouton d'envoi du formulaire
– text (par défaut) : champ texte
antislashn.org Architectures distribuées – couche web 02 - 34 / 62
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
● D'autres types sont introduits par HTML 5
● date, time, ...
antislashn.org Architectures distribuées – couche web 02 - 35 / 62
59. HTML
● Champ <select>
● les sélections multiples seront généralement
accessibles côtés serveur sous forme d'un 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. 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. CSS
● Les styles CSS (Cascading Style Sheet)
permettent de séparer la forme et le contenu
● avant l'utilisation 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 l'ensemble d'un site
● chargement unique des feuilles de style par mise en
cache par le navigateur
● adaptation au média
antislashn.org Architectures distribuées – couche web 02 - 38 / 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{
l'en-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> style
antislashn.org Architectures distribuées – couche web 02 - 39 / 62
64. CSS - règles
● Une règle est composé d'un sélecteur et d'un 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. CSS - règles
● Sélecteur classe
● il est possible d'ajouter une classe à un sélecteur
● il est aussi possible d'utiliser # pour spécifier l'id d'un
é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. CSS - règles
● Les pseudo-classes sont des classes spécifiques
permettant d'obtenir des effets sur des éléments
sans passer par l'attribut 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. CSS - règles
● Les pseudo-éléments permettent d'agir sur du
contenu impossible à identifier en HTML
● :first-line
● :first-letter
●
:afer, :before
● Règles spéciales
● @import
● @media
● @page
antislashn.org Architectures distribuées – couche web 02 - 44 / 62
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 d'un 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 n'y a pas de retour à la ligne
● Certaines propriétés de style ne sont applicables
que sur un type d'élément
●
vertical-align s'applique sur les éléments en ligne
antislashn.org Architectures distribuées – couche web 02 - 45 / 62
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 d'un 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. 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 bordures
antislashn.org Architectures distribuées – couche web 02 - 47 / 62
71. CSS – unités de mesure
● Une unité de mesure est composée d'un nombre
suivi d'une abréviation indiquant l'unité
● 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 visuel
antislashn.org Architectures distribuées – couche web 02 - 48 / 62
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 à d'autre
valeurs
antislashn.org Architectures distribuées – couche web 02 - 49 / 62
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 couleur
antislashn.org Architectures distribuées – couche web 02 - 50 / 62
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 navigateur
antislashn.org Architectures distribuées – couche web 02 - 51 / 62
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. 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. 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ère
antislashn.org Architectures distribuées – couche web 02 - 54 / 62
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. JavaScript
Un événement est un changement d'état de
l'environnement 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 l'objet Event peuvent être
récupérés via les propriétés de cet objet
antislashn.org Architectures distribuées – couche web 02 - 56 / 62
80. Les plugins
● Tout ce qui n'est 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. 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. Serveur web
SERVEUR moteur de
WEB script
INTERNET apache
IIS
...
scripts
SI
ressources
statiques
antislashn.org Architectures distribuées – couche web 02 - 59 / 62
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. 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. 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
87. Serveur d'applications
● Logiciel qui offre un contexte d'exé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étier
antislashn.org Architectures distribuées – N tiers 03 - 2 / 29
88. Serveur d'applications
● Les clients des serveurs d'applications peuvent
être
● d'autres serveurs
● des clients lourds
● des clients légers
● ...
antislashn.org Architectures distribuées – N tiers 03 - 3 / 29
89. Serveur d'applications
● Exemple : Excel Service
source : Microsoft
antislashn.org Architectures distribuées – N tiers 03 - 4 / 29
90. Serveur d'applications
● Exemple : Java EE
source : Oracle
antislashn.org Architectures distribuées – N tiers 03 - 5 / 29
91. Serveur d'applications
● Exemple : WebDev
source : PC Soft
antislashn.org Architectures distribuées – N tiers 03 - 6 / 29
93. Serveur d'applications
● 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 WebDev
antislashn.org Architectures distribuées – N tiers 03 - 8 / 29
94. Serveur d'applications
● Le serveur d'application fournit un environnement
d'exé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
plantage
antislashn.org Architectures distribuées – N tiers 03 - 9 / 29
95. Serveur d'applications
● Outils complémentaires
● console d'administration
– 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 tester
antislashn.org Architectures distribuées – N tiers 03 - 10 / 29
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
applications
antislashn.org Architectures distribuées – N tiers 03 - 11 / 29
97. SOA
● Service Oriented Architecture
● Architecture de médiation
● les services sont des composants logiciels
● Popularisé avec l'utilisation 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 eux
antislashn.org Architectures distribuées – N tiers 03 - 12 / 29
98. SOA
source : Wikipedia Commons
antislashn.org Architectures distribuées – N tiers 03 - 13 / 29
99. SOA et ESB
● Enterprise Service Bus
● L'implé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 l'utilisation
de conteneurs de services
– interfaces normalisées : SOAP, JMS, ...
antislashn.org Architectures distribuées – N tiers 03 - 14 / 29
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 ouverts
antislashn.org Architectures distribuées – N tiers 03 - 15 / 29
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 performance
antislashn.org Architectures distribuées – N tiers 03 - 16 / 29
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 l'utilisateur
● forme d'infogérance
– l'emplacement des données n'est pas connu des clients
● Trois formes de cloud computing
● cloud privé interne
● cloud privé externe
– la gestion est externalisé chez un prestataire
● cloud publique
antislashn.org Architectures distribuées – N tiers 03 - 17 / 29
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 d'un objet
● Deux ORB peuvent communiquer via IIOP
● Internet Inter-ORB Protocol
antislashn.org Architectures distribuées – N tiers 03 - 18 / 29
104. CORBA
● Common Object Request Broker Architecture
● standard maintenu par l'OMG
● 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 cible
antislashn.org Architectures distribuées – N tiers 03 - 19 / 29
105. CORBA
source : Wikipedia Commons
antislashn.org Architectures distribuées – N tiers 03 - 20 / 29
106. RMI
● Remote Method Invocation
● technologie Java
● sur le principe des ORB
● concurrence avec CORBA
● API Java d'invocation des méthodes distantes
● mécanisme d'appel des méthodes d'objets Java
s'exécutant sur des JVM différentes
● repose sur des classe Serializable
● couche de transport propriétaire JRMP
– Java Remote Method Invocation basé sur TCP/IP
antislashn.org Architectures distribuées – N tiers 03 - 21 / 29
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 d'objets
paramètres
Stub Skeleton
9 – sérialisation 8 – valeur de retour
du résultat
antislashn.org Architectures distribuées – N tiers 03 - 22 / 29
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éseau
antislashn.org Architectures distribuées – N tiers 03 - 23 / 29
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 abonnement
antislashn.org Architectures distribuées – N tiers 03 - 24 / 29
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 d'attente
A Queue A A Consommateur A
Producteur
B
Queue B B Consommateur B
antislashn.org Architectures distribuées – N tiers 03 - 25 / 29
111. MOM
● Fonctionnement par abonnement
● Publish Subscrite
● les applications consommatrices de message s'abonnent à un sujet
(topic)
● les messages restent dans la file d'attente jusqu'à ce que tous les
abonnés aient lu le message
abonnement
A Topic A A Consommateur
abonnement
Producteur B
B
Topic B B Consommateur
antislashn.org Architectures distribuées – N tiers 03 - 26 / 29
112. MOM
● Caractéristiques
● transport des messages
– un message est constitué d'une en-tête et d'un corps qui contient
les données
● communication asynchrone
– gestion des messages par file d'attente
● routage des messages entre MOM
● transformation des données pour adaptation aux
applications réceptrice
● persistance des messages
● fiabilité : envoi d'un accusé de réception du message
antislashn.org Architectures distribuées – N tiers 03 - 27 / 29
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 l'exposition des structures par des
fichiers proto
● puis compilation vers C++, Java ou Python
antislashn.org Architectures distribuées – N tiers 03 - 28 / 29
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 Midddleware
antislashn.org Architectures distribuées – N tiers 03 - 29 / 29
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
l'affichage 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 W3C
antislashn.org Architectures distribuées – XML 04 - 2 / 44
117. XML - introduction
● La spécification XML est très simple
● une multitude d'autres 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 parsers
antislashn.org Architectures distribuées – XML 04 - 3 / 44
118. XML - introduction
● XML est lisible
● juste du texte structuré par les balises
● XML ne fait rien, mais il s'est 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. 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. 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 d'autres éléments
antislashn.org Architectures distribuées – XML 04 - 6 / 44
121. XML - syntaxe
● Un document XML est constitué
● d'un prologue (optionnel)
<?xml version="1.0" encoding="UTF-8"?>
● de l'instance du document
– au minimum une racine
● élément qui encapsule tout le reste
● un document XML vide n'est pas un fichier vide
antislashn.org Architectures distribuées – XML 04 - 7 / 44
122. XML - syntaxe
● Constitution d'un élément
● balise d'ouverture <message type="email">
– qui contient les éventuels attributs
● corps de l'élément
– qui contient du texte et/ou d'autres é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. XML - syntaxe
● Les éléments doivent être inclus les uns dans les
autres
● sans chevauchement des balises d'ouverture et
fermeture
● seule la racine n'est 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. ● 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. XML - syntaxe
● Certains caractères ont un usage spécial : les
entités
● 5 entités prédéfinies
< ; >
> ; <
& ; &
&apos ; ' (apostrophe)
" ; " (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. XML - syntaxe
● Le nom d'un é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 d'espace
antislashn.org Architectures distribuées – XML 04 - 12 / 44
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 contenu
antislashn.org Architectures distribuées – XML 04 - 13 / 44
128. XML – les parsers
● Certaines parties du document ne doivent pas être
analysés par les parsers
● JavaScript d'un 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. 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 l'espace de nommage
et une URI (Uniform Resource Identifier)
antislashn.org Architectures distribuées – XML 04 - 15 / 44
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. XML – espaces de nommage
● La racine peut avoir un espace de nommage par
défaut
● xmlns n'est pas suivi d'un nom pour l'espace 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. 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
d'espaces 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. XML – les schémas
● Dans les faits, les noms des éléments et attributs d'un 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 OpenDocument
antislashn.org Architectures distribuées – XML 04 - 19 / 44
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 d'entités
– des déclarations de notations
● spécifie le format de données non XML, binaire ou texte
– des commentaires
antislashn.org Architectures distribuées – XML 04 - 20 / 44
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. 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étails
antislashn.org Architectures distribuées – XML 04 - 22 / 44
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. 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
● n'importe quel contenu : ANY
antislashn.org Architectures distribuées – XML 04 - 24 / 44
139. DTD
● Liste ordonnée d'élément fils
<!ELEMENT carnet-adresses (entreprise,contact) >
● Choix d'un é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 fois
antislashn.org Architectures distribuées – XML 04 - 25 / 44
140. DTD
● Les attributs sont déclarés dans <!ATTLIST ...>
● on y retrouve
– le nom de l'attribut
– 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. DTD
● Principaux types d'attributs
● 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 d'attributs de type ID
– séparateur : espace
● autres types possibles : énumération, ENTITY,
ENTITIES, NMTOKEN, NMTOKENS, NOTATION
– cf. la spécification pour plus de précision
antislashn.org Architectures distribuées – XML 04 - 27 / 44
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 à écrire
antislashn.org Architectures distribuées – XML 04 - 28 / 44
143. XML Schema
● Recommandation du W3C
● Définit la structure d'un document XML de
manière plus complète qu'une DTD
● typage des données
● espaces de nommage
● syntaxe XML
● création de types personnalisés
● Plus complexe à écrire d'une DTD
● un outil constitue une aide appréciable
– XMLSpy, Oxygen, EditiX, éditeurs des EDI
antislashn.org Architectures distribuées – XML 04 - 29 / 44
145. XML Schema
● L'écriture d'un XML Schema est plus complexe
qu'une DTD
● les outils permettent un développement du schema de
manière graphique
antislashn.org Architectures distribuées – XML 04 - 31 / 44
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. XML Schema
● Définition d'un élément simple
● contient un contenu typé
– pas d'élément fils
– pas d'attribut
– xs:string par défaut
<xs:element name="nom" type="xs:string"/>
antislashn.org Architectures distribuées – XML 04 - 33 / 44
148. XML Schema
● Définition d'un é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. XML Schema
● Définition des attributs d'un é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. XML Schema
● XML Schema dispose d'un 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 d'un type simple
● avec les facettes : valeurs mini, maxi, tailles mini, maxi, …
● des expressions régulières
● des énumérations
– par extension d'un type existant
antislashn.org Architectures distribuées – XML 04 - 36 / 44
152. XML Schema
● Définition d'un type personnalisé
● s'appuie 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. XML Schéma
● Utilisation des espaces de nom
● attributs définis dans l'élément <Schema ...>
– elementFormDefault="qualified"
● les éléments sont situé dans l'espace de nommage cité, ou par
défaut
– attributeFormDefault="unqualified"
● les attributs sont dans l'espace de nom de l'élément
antislashn.org Architectures distribuées – XML 04 - 39 / 44
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
156. XML – quelques spécifications
● XPath
● langage de sélection de portions de document XML
● XSL – eXtensible Stylesheet Language
● langage de description de feuille de style
● utilisé avec un processeur XSLT pour transformer un
document XML en au autre document en lui appliquant
le style décrit dans la feuille de style
● XQuery
● langage de requête sur des documents XML
antislashn.org Architectures distribuées – XML 04 - 42 / 44
157. XML – quelques spécifications
● SVG – Scalable Vector Graphic
● format de données de description de graphiques
vectoriels
● SMIL – Synchronized Multimedia Integration
Language
● langage de création de présentation multimédia
● MathML
● langage permettant l'affichage des symboles
mathématiques
antislashn.org Architectures distribuées – XML 04 - 43 / 44
160. Introduction
● Le développement d'applications doit répondre à
de nombreuses problématiques
● rapidité du développement
● prise en compte de l'évolution de l'application
● montée en charge des connexions
● sécurisation
● Java EE – Java Enterprise Edition
● réponse Sun – Oracle au développement d'applications
distribuées en entreprise
antislashn.org Architectures distribuées – Java EE 05 - 2 / 117
161. Introduction
● Java EE
● ensemble d'API
– facilite la réutilisation
– réduction du temps de développement
– "automatisation" des facettes techniques des l'application
distribuées
● sous le contrôle du JCP (Java Community Process)
– maintient la cohérence de l'ensemble des spécifications Java
– via les JSR (Java Specification Request)
antislashn.org Architectures distribuées – Java EE 05 - 3 / 117