SlideShare une entreprise Scribd logo
1  sur  417
Télécharger pour lire hors ligne
Architectures distribuées
        Objectifs




                            version support : 1.0
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
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
copyleft
                 Support de formation créer par
                        Franck SIMON
                 http://www.franck-simon.com




antislashn.org           Architectures distribuées - Objectifs   0-4/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
Architectures distribuées
       Introduction
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 : RIA




antislashn.org                    Architectures distribuées - Introduction   01 - 2 / 18
Historique




                                                            source : Cloud computing et SaaS - Dunod


antislashn.org   Architectures distribuées - Introduction                            01 - 3 / 18
É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
É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
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ésentation

antislashn.org                  Architectures distribuées - Introduction                      01 - 6 / 18
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
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
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
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
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
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
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
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
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
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
Architectures N-tiers
  ●    Complexité de réutilisation




                                                                  source : Serveurs d'applications - Eyrolles


antislashn.org         Architectures distribuées - Introduction                            01 - 17 / 18
Architecture N-tiers
  ●    Solution Oracle / Sun
        ●    EJB : Enterprise Java Bean
                 –   s'exécutent côté serveur
        ●    JavaBean (POJO)
                 –   objets métiers
  ●    Solution Microsoft
        ●    modèle de communication COM
        ●    DCOM étend COM pour les architectures distribuées



antislashn.org                        Architectures distribuées - Introduction   01 - 18 / 18
Architectures distribuées
      Couche Web
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
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
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
Protocole IP
  ●    IP v4
        ●    adresse sur 32 bits




                                                                     * image provenant de Wikipedia Commons


antislashn.org              Architectures distribuées – couche web                            02 - 5 / 62
Protocole IP
  ●    IP v6
        ●    adresse sur 128 bits




                                                                     * image provenant de Wikipedia Commons

antislashn.org              Architectures distribuées – couche web                         02 - 6 / 62
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
Protocole TCP
  ●    Structure d'un segment TCP




antislashn.org       Architectures distribuées – couche web   02 - 8 / 62
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
HTML
  ●    HTML 5
        ●    Simplification de la syntaxe
                    <!DOCTYPE html>
                    <html lang="fr">




antislashn.org                         Architectures distribuées – couche web   02 - 27 / 62
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Serveur web


                                                    SERVEUR             moteur de
                                                      WEB                script
                 INTERNET                             apache
                                                        IIS
                                                         ...
                                                                  scripts




                                                                                    SI


                                                     ressources
                                                      statiques
antislashn.org       Architectures distribuées – couche web                 02 - 59 / 62
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
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
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
Architectures distribuées
  Architectures N tiers
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
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
Serveur d'applications
  ●    Exemple : Excel Service




                                                             source : Microsoft

antislashn.org         Architectures distribuées – N tiers       03 - 4 / 29
Serveur d'applications
  ●    Exemple : Java EE




                                                            source : Oracle

antislashn.org        Architectures distribuées – N tiers    03 - 5 / 29
Serveur d'applications
  ●    Exemple : WebDev




                                                           source : PC Soft

antislashn.org       Architectures distribuées – N tiers      03 - 6 / 29
Serveur d'applications
  ●    Exemple : Zope




                                                              source : www.zope.org

antislashn.org          Architectures distribuées – N tiers           03 - 7 / 29
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
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
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
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
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
SOA




                                                       source : Wikipedia Commons

antislashn.org   Architectures distribuées – N tiers                03 - 13 / 29
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
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
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
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
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
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
CORBA




                                                       source : Wikipedia Commons

antislashn.org   Architectures distribuées – N tiers                03 - 20 / 29
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
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
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
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
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
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
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
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
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
Architectures distribuées
          XML
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
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
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
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
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
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
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
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
●    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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
XML Schema




antislashn.org   Architectures distribuées – XML   04 - 37 / 44
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
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
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
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
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
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
XML - ressources
  ●    Sites webs
        ●    http://www.w3.org/
        ●    http://www.w3schools.com/
        ●    http://www.quackit.com/xml/




antislashn.org               Architectures distribuées – XML   04 - 44 / 44
Architectures distribuées
        Java EE
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
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
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées
Architectures distribuées

Contenu connexe

Tendances

Les architectures client serveur
Les architectures client serveurLes architectures client serveur
Les architectures client serveurAmeni Ouertani
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...ENSET, Université Hassan II Casablanca
 
Déploiement d’applications
Déploiement d’applicationsDéploiement d’applications
Déploiement d’applicationsMohammed Jaafar
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesLilia Sfaxi
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Heithem Abbes
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
SOA - Architecture Orientée Service : Démystification
SOA - Architecture Orientée Service : DémystificationSOA - Architecture Orientée Service : Démystification
SOA - Architecture Orientée Service : DémystificationKhaled Ben Driss
 
Chp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceChp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceLilia Sfaxi
 
Comment integrer les applications de votre Systeme Information entre elles ?
Comment integrer les applications de votre Systeme Information entre elles ?Comment integrer les applications de votre Systeme Information entre elles ?
Comment integrer les applications de votre Systeme Information entre elles ?Stéphane Traumat
 
Chp4 - Composition, Orchestration et Choregraphie de services
Chp4 - Composition, Orchestration et Choregraphie de servicesChp4 - Composition, Orchestration et Choregraphie de services
Chp4 - Composition, Orchestration et Choregraphie de servicesLilia Sfaxi
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées servicesDonia Hammami
 
Microservices avec Spring Cloud
Microservices avec Spring CloudMicroservices avec Spring Cloud
Microservices avec Spring CloudFlorian Beaufumé
 

Tendances (20)

Chp3 - ESB
Chp3 - ESBChp3 - ESB
Chp3 - ESB
 
Les architectures client serveur
Les architectures client serveurLes architectures client serveur
Les architectures client serveur
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Déploiement d’applications
Déploiement d’applicationsDéploiement d’applications
Déploiement d’applications
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Cours architecture
Cours architectureCours architecture
Cours architecture
 
SOA - Architecture Orientée Service : Démystification
SOA - Architecture Orientée Service : DémystificationSOA - Architecture Orientée Service : Démystification
SOA - Architecture Orientée Service : Démystification
 
Chp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceChp4 - Diagramme de Séquence
Chp4 - Diagramme de Séquence
 
Comment integrer les applications de votre Systeme Information entre elles ?
Comment integrer les applications de votre Systeme Information entre elles ?Comment integrer les applications de votre Systeme Information entre elles ?
Comment integrer les applications de votre Systeme Information entre elles ?
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Talend
TalendTalend
Talend
 
Chp4 - Composition, Orchestration et Choregraphie de services
Chp4 - Composition, Orchestration et Choregraphie de servicesChp4 - Composition, Orchestration et Choregraphie de services
Chp4 - Composition, Orchestration et Choregraphie de services
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées services
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
Microservices avec Spring Cloud
Microservices avec Spring CloudMicroservices avec Spring Cloud
Microservices avec Spring Cloud
 

En vedette

Java - programmation concurrente
Java - programmation concurrenteJava - programmation concurrente
Java - programmation concurrenteFranck SIMON
 
Description d'un fichier de prélèvements SEPA minimum
Description d'un fichier de prélèvements SEPA minimumDescription d'un fichier de prélèvements SEPA minimum
Description d'un fichier de prélèvements SEPA minimumFranck SIMON
 
Développement Android
Développement AndroidDéveloppement Android
Développement AndroidFranck SIMON
 
ASFWS 2011 - L’importance du protocole HTTP dans la menace APT
ASFWS 2011 - L’importance du protocole HTTP dans la menace APTASFWS 2011 - L’importance du protocole HTTP dans la menace APT
ASFWS 2011 - L’importance du protocole HTTP dans la menace APTCyber Security Alliance
 
Gwt jetty et sources de données
Gwt   jetty et sources de donnéesGwt   jetty et sources de données
Gwt jetty et sources de donnéesFranck SIMON
 
JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤Yuichi Sakuraba
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Saber LAJILI
 
Autumn collection JavaOne 2014
Autumn collection JavaOne 2014Autumn collection JavaOne 2014
Autumn collection JavaOne 2014José Paumard
 
50 new things you can do with java 8
50 new things you can do with java 850 new things you can do with java 8
50 new things you can do with java 8José Paumard
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJosé Paumard
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidHoussem Lahiani
 
50 nouvelles choses que l'on peut faire avec Java 8
50 nouvelles choses que l'on peut faire avec Java 850 nouvelles choses que l'on peut faire avec Java 8
50 nouvelles choses que l'on peut faire avec Java 8José Paumard
 
Introduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationIntroduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationTomcat Expert
 
In01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introductionIn01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introductionYann Caron
 
[22/03/2016] Conférence : Blockchain, disruption & révolution
[22/03/2016] Conférence : Blockchain, disruption & révolution[22/03/2016] Conférence : Blockchain, disruption & révolution
[22/03/2016] Conférence : Blockchain, disruption & révolutionSilicon Comté
 

En vedette (20)

Java - programmation concurrente
Java - programmation concurrenteJava - programmation concurrente
Java - programmation concurrente
 
Description d'un fichier de prélèvements SEPA minimum
Description d'un fichier de prélèvements SEPA minimumDescription d'un fichier de prélèvements SEPA minimum
Description d'un fichier de prélèvements SEPA minimum
 
Développement Android
Développement AndroidDéveloppement Android
Développement Android
 
ASFWS 2011 - L’importance du protocole HTTP dans la menace APT
ASFWS 2011 - L’importance du protocole HTTP dans la menace APTASFWS 2011 - L’importance du protocole HTTP dans la menace APT
ASFWS 2011 - L’importance du protocole HTTP dans la menace APT
 
Gwt jetty et sources de données
Gwt   jetty et sources de donnéesGwt   jetty et sources de données
Gwt jetty et sources de données
 
JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Hacking Tomcat
Hacking TomcatHacking Tomcat
Hacking Tomcat
 
Introduction aux-sockets
Introduction aux-socketsIntroduction aux-sockets
Introduction aux-sockets
 
Formation1 sockets
Formation1 socketsFormation1 sockets
Formation1 sockets
 
Autumn collection JavaOne 2014
Autumn collection JavaOne 2014Autumn collection JavaOne 2014
Autumn collection JavaOne 2014
 
Le Réseau et Java
Le Réseau et JavaLe Réseau et Java
Le Réseau et Java
 
50 new things you can do with java 8
50 new things you can do with java 850 new things you can do with java 8
50 new things you can do with java 8
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'Android
 
50 nouvelles choses que l'on peut faire avec Java 8
50 nouvelles choses que l'on peut faire avec Java 850 nouvelles choses que l'on peut faire avec Java 8
50 nouvelles choses que l'on peut faire avec Java 8
 
Introduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationIntroduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 Presentation
 
In01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introductionIn01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introduction
 
APACHE TOMCAT
APACHE TOMCATAPACHE TOMCAT
APACHE TOMCAT
 
[22/03/2016] Conférence : Blockchain, disruption & révolution
[22/03/2016] Conférence : Blockchain, disruption & révolution[22/03/2016] Conférence : Blockchain, disruption & révolution
[22/03/2016] Conférence : Blockchain, disruption & révolution
 

Similaire à Architectures distribuées

SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhvSOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhvamine17157
 
resume-theorique-m107-2203-6246f60d6b994.pdf
resume-theorique-m107-2203-6246f60d6b994.pdfresume-theorique-m107-2203-6246f60d6b994.pdf
resume-theorique-m107-2203-6246f60d6b994.pdfFootballLovers9
 
Saas Libre
Saas LibreSaas Libre
Saas Libregrolland
 
4_Architectures_de_SI.pdf
4_Architectures_de_SI.pdf4_Architectures_de_SI.pdf
4_Architectures_de_SI.pdfharizi riadh
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures repartiesMariem ZAOUALI
 
Cours Administration Reseau-Domga-2020_2021_New.pdf
Cours Administration Reseau-Domga-2020_2021_New.pdfCours Administration Reseau-Domga-2020_2021_New.pdf
Cours Administration Reseau-Domga-2020_2021_New.pdfJEANMEBENGAMBALLA
 
Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app...
Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app...Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app...
Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app...Microsoft
 
Architecture des applications métiers
Architecture des applications métiersArchitecture des applications métiers
Architecture des applications métiersGasytek
 
architectureNTiers.pdf
architectureNTiers.pdfarchitectureNTiers.pdf
architectureNTiers.pdfbetxso156
 
PolyWeb8_architecture_ntiers_old.ppt
PolyWeb8_architecture_ntiers_old.pptPolyWeb8_architecture_ntiers_old.ppt
PolyWeb8_architecture_ntiers_old.pptFerdawsBNasrBSalah
 
resume-theorique-m204-v1-0-62f6e87c9c457 (1).pdf
resume-theorique-m204-v1-0-62f6e87c9c457 (1).pdfresume-theorique-m204-v1-0-62f6e87c9c457 (1).pdf
resume-theorique-m204-v1-0-62f6e87c9c457 (1).pdfFootballLovers9
 
Projet reseau-de-kherfallah-ipm-2010-2011
Projet reseau-de-kherfallah-ipm-2010-2011Projet reseau-de-kherfallah-ipm-2010-2011
Projet reseau-de-kherfallah-ipm-2010-2011Boubaker KHERFALLAH
 
chapitre 4-bddistribuesgnralites.pptx
chapitre 4-bddistribuesgnralites.pptxchapitre 4-bddistribuesgnralites.pptx
chapitre 4-bddistribuesgnralites.pptxSylia3
 
srep_cours_01.pdf
srep_cours_01.pdfsrep_cours_01.pdf
srep_cours_01.pdfSamirAwad14
 
Les vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfLes vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfBabacarDIOP48
 
Architectures et application hybrides selon vos termes et à votre propre rythme
Architectures et application hybrides selon vos termes et à votre propre rythmeArchitectures et application hybrides selon vos termes et à votre propre rythme
Architectures et application hybrides selon vos termes et à votre propre rythmeMicrosoft
 
software defined Networking
software defined Networkingsoftware defined Networking
software defined NetworkingBousslama Hamza
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESBLilia Sfaxi
 

Similaire à Architectures distribuées (20)

SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhvSOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
 
resume-theorique-m107-2203-6246f60d6b994.pdf
resume-theorique-m107-2203-6246f60d6b994.pdfresume-theorique-m107-2203-6246f60d6b994.pdf
resume-theorique-m107-2203-6246f60d6b994.pdf
 
Saas Libre
Saas LibreSaas Libre
Saas Libre
 
4_Architectures_de_SI.pdf
4_Architectures_de_SI.pdf4_Architectures_de_SI.pdf
4_Architectures_de_SI.pdf
 
Chap1 clientsrvr
Chap1 clientsrvrChap1 clientsrvr
Chap1 clientsrvr
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures reparties
 
Cours Administration Reseau-Domga-2020_2021_New.pdf
Cours Administration Reseau-Domga-2020_2021_New.pdfCours Administration Reseau-Domga-2020_2021_New.pdf
Cours Administration Reseau-Domga-2020_2021_New.pdf
 
Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app...
Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app...Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app...
Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app...
 
Architecture des applications métiers
Architecture des applications métiersArchitecture des applications métiers
Architecture des applications métiers
 
architectureNTiers.pdf
architectureNTiers.pdfarchitectureNTiers.pdf
architectureNTiers.pdf
 
PolyWeb8_architecture_ntiers_old.ppt
PolyWeb8_architecture_ntiers_old.pptPolyWeb8_architecture_ntiers_old.ppt
PolyWeb8_architecture_ntiers_old.ppt
 
resume-theorique-m204-v1-0-62f6e87c9c457 (1).pdf
resume-theorique-m204-v1-0-62f6e87c9c457 (1).pdfresume-theorique-m204-v1-0-62f6e87c9c457 (1).pdf
resume-theorique-m204-v1-0-62f6e87c9c457 (1).pdf
 
Projet reseau-de-kherfallah-ipm-2010-2011
Projet reseau-de-kherfallah-ipm-2010-2011Projet reseau-de-kherfallah-ipm-2010-2011
Projet reseau-de-kherfallah-ipm-2010-2011
 
chapitre 4-bddistribuesgnralites.pptx
chapitre 4-bddistribuesgnralites.pptxchapitre 4-bddistribuesgnralites.pptx
chapitre 4-bddistribuesgnralites.pptx
 
srep_cours_01.pdf
srep_cours_01.pdfsrep_cours_01.pdf
srep_cours_01.pdf
 
Les vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfLes vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdf
 
Architectures et application hybrides selon vos termes et à votre propre rythme
Architectures et application hybrides selon vos termes et à votre propre rythmeArchitectures et application hybrides selon vos termes et à votre propre rythme
Architectures et application hybrides selon vos termes et à votre propre rythme
 
software defined Networking
software defined Networkingsoftware defined Networking
software defined Networking
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESB
 
Architectures bigdata
Architectures bigdataArchitectures bigdata
Architectures bigdata
 

Plus de Franck SIMON

Distribuer une librairie via maven
Distribuer une librairie via mavenDistribuer une librairie via maven
Distribuer une librairie via mavenFranck SIMON
 
Java 8 - interfaces
Java 8 - interfacesJava 8 - interfaces
Java 8 - interfacesFranck SIMON
 
Java 8 - collections et stream
Java 8 - collections et streamJava 8 - collections et stream
Java 8 - collections et streamFranck SIMON
 
Tomcat and apache httpd training
Tomcat and apache httpd trainingTomcat and apache httpd training
Tomcat and apache httpd trainingFranck SIMON
 
JBoss - chapitre JMX
JBoss - chapitre JMXJBoss - chapitre JMX
JBoss - chapitre JMXFranck SIMON
 
Android Input Method Editor
Android   Input Method EditorAndroid   Input Method Editor
Android Input Method EditorFranck SIMON
 
Java scripting api
Java scripting apiJava scripting api
Java scripting apiFranck SIMON
 

Plus de Franck SIMON (14)

Distribuer une librairie via maven
Distribuer une librairie via mavenDistribuer une librairie via maven
Distribuer une librairie via maven
 
Java 9 modules
Java 9    modulesJava 9    modules
Java 9 modules
 
Java 8 - lambda
Java 8 - lambdaJava 8 - lambda
Java 8 - lambda
 
Java 8 - interfaces
Java 8 - interfacesJava 8 - interfaces
Java 8 - interfaces
 
Java 8 - DateTime
Java 8 - DateTimeJava 8 - DateTime
Java 8 - DateTime
 
Java 8 - collections et stream
Java 8 - collections et streamJava 8 - collections et stream
Java 8 - collections et stream
 
Tomcat and apache httpd training
Tomcat and apache httpd trainingTomcat and apache httpd training
Tomcat and apache httpd training
 
Android ORMLite
Android   ORMLiteAndroid   ORMLite
Android ORMLite
 
JBoss - chapitre JMX
JBoss - chapitre JMXJBoss - chapitre JMX
JBoss - chapitre JMX
 
Android Input Method Editor
Android   Input Method EditorAndroid   Input Method Editor
Android Input Method Editor
 
Squid
SquidSquid
Squid
 
Android NDK
Android   NDKAndroid   NDK
Android NDK
 
jQuery
jQueryjQuery
jQuery
 
Java scripting api
Java scripting apiJava scripting api
Java scripting api
 

Dernier

Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxmmatar2
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 

Dernier (20)

Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptx
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 

Architectures distribuées

  • 1. Architectures distribuées Objectifs version support : 1.0
  • 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
  • 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 : RIA antislashn.org Architectures distribuées - Introduction 01 - 2 / 18
  • 8. Historique source : Cloud computing et SaaS - Dunod antislashn.org Architectures distribuées - Introduction 01 - 3 / 18
  • 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
  • 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ésentation antislashn.org Architectures distribuées - Introduction 01 - 6 / 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
  • 22. Architectures N-tiers ● Complexité de réutilisation source : Serveurs d'applications - Eyrolles antislashn.org Architectures distribuées - Introduction 01 - 17 / 18
  • 23. Architecture N-tiers ● Solution Oracle / Sun ● EJB : Enterprise Java Bean – s'exécutent côté serveur ● JavaBean (POJO) – objets métiers ● Solution Microsoft ● modèle de communication COM ● DCOM étend COM pour les architectures distribuées antislashn.org Architectures distribuées - Introduction 01 - 18 / 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
  • 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. 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
  • 86. Architectures distribuées Architectures N tiers
  • 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
  • 92. Serveur d'applications ● Exemple : Zope source : www.zope.org antislashn.org Architectures distribuées – N tiers 03 - 7 / 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 &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. 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
  • 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. 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
  • 151. XML Schema antislashn.org Architectures distribuées – XML 04 - 37 / 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
  • 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
  • 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
  • 158. XML - ressources ● Sites webs ● http://www.w3.org/ ● http://www.w3schools.com/ ● http://www.quackit.com/xml/ antislashn.org Architectures distribuées – XML 04 - 44 / 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