XML et Serveurs d`applications

publicité
XML dans les Serveurs
d'applications
1.
2.
3.
4.
5.
Serveurs d'applications : rappels
L'interface DOM
L'interface SAX
XML, J2EE et .NET
Conclusion
 G. Gardarin
1. Serveurs d'applications
 Java, un langage portable
 Mais aussi une plate-forme distribuée (J2EE)
• XML est déjà le standard de description des composants
• XML devient le standard de communication
 .Net la plate-forme concurrente de Microsoft
 Avantages de XML:
• échange sécurisé sur HTTP
• un message porte plusieurs objets
• interopérabilité des Services Web
Serveurs d'applications
IV.2
 G. Gardarin
Architecture d’un serveur d ’appli.
Client HTML
Outils de développements
Basé composants
Applications
légataires
(Mainframes)
ooo
Client Java
Noyau serveur d'applications
Client COM
Serveur HTTP
Documents
HTML/XML
CGI
RPC DCE
RMI
IIOP
…
Gestionnaire de Composants
Gestionnaires de Messages
Autres serveurs
d'applications
Gestionnaire de Données
Services de Sécurité
Gestionnaire de threads
Gestionnaire de Connexions
Client CORBA
Bases de données
Moniteur Transactions
Files de messages
….
Serveurs d'applications
IV.3
 G. Gardarin
Principaux serveurs d’application
 WebLogic de BEA
 WebSphere Application Server d ’IBM
 Domino Application Server de Lotus -IBM
 iPlanet Application Server de Sun
 Oracle Application Server
 Sybase Enterprise Application
 Tomcat+Jboss (Open Source)
 Tomcat+Jonas (Open Source)
 Microsoft .NET, Vista & Indigo
Serveurs d'applications
IV.4
 G. Gardarin
Les dialogues sans XML
Templates
HTML
(ASP,JSP)
Compilation
API Objet
Instantiation/Activation
requête
Services
HTML
invocation
SQL
Objets
Métiers
BD
Transactions/Requêtes
URL longue 
 HTML
XA
Trois modèles !
Serveurs d'applications
IV.5
 G. Gardarin
XML et programme objet
 Les services sont souvent programmés en langage objet
• Java, C++, C#, VB, PHP ...
 Java
•
•
•
•
langage pur objet portable et sûr, semi-interprété
le compilateur produit un fichier de byte code par classe
possibilité de chargement dynamique de classe
support du standard de composants JB et EJB
 XML
• les messages XML doivent être traduits en objets
• différents niveau d'interface :
 Flux d'événements (SAX)
 Traduction en objet génériques (DOM)
 Mapping sur objets métiers (Data Binding)
Serveurs d'applications
IV.6
 G. Gardarin
XML et les autres langages
 VB, C#
• Possibilités similaires à Java (parseurs MS)
 C++
• Possibilités similaires à Java (parseurs libres)
• Chargement dynamique de classe impossible
 PHP
• Il existe des parseurs libres
Serveurs d'applications
IV.7
 G. Gardarin
2. L'interface DOM
 Standard W3C fait pour HTML et XML
 Structure d'objets pour représenter un document
• Résultat d'un "parser"
• Arbre d'objets reliés entre eux
 Interface objet pour naviguer dans un document
• Orientée objet
• Peut être utilisée en:
 Java, C++
 C#, VB
 Python, PHP
DOM
IV.8
 G. Gardarin
Principaux parseurs
Document
XML
Xerces
Apache (Java, C++)
MSXML
Microsoft
SDK Oracle
Oracle
JAXP J2EE
Sun, ...
Parseur DOM
Arbre DOM
API DOM
Application
DOM
IV.9
 G. Gardarin
Exemple d'arbre DOM
Document
Racine du document
NodeList
Element
<Guide>
NodeList
Element
<Guide>
NamedNodeMap
<Restaurant id="R1">Le
meilleur
restaurant</Restaurant>
Attr
Id="R1"
NodeList
</Guide>
DOM
<Restaurant>
Text
IV.10
Le meilleur restaurant
 G. Gardarin
L'arbre DOM
 Navigation via un arbre
générique de nœuds
Node
• Node
• NodeList (Parent/Child)
• NamedNodeMap
Document
ProcessingInstruction
DocumentType
<?xml:stylesheet ...>
<!DOCTYPE ...>
Element
....
<Restaurant ....>
 Tout nœud hérite de Node
Child
Text
Le meilleur restaurant
DOM
IV.11
 G. Gardarin
Quelques interfaces de base
 Document
 Nœud
• insertBefore (Nouveau_Noeud,
Noeud_Reference):
• createElement (Nom_Element):
 créer un élément avec le nom
spécifié en paramètre.
 insère un nouveau nœud fils avant le "
nœud référence" déjà existant.
• createComment (commentaire):
• replaceChild (Nouveau_Noeud,
Ancien_Noeud):
 créer une ligne de commentaires
dans le document.
 remplace le nœud "Ancien_Noeud" par
le nœud "Nouveau_Noeud".
• createAttribute (Nom_Attribut):
• removeChild (Nœud):
 créer un attribut avec le nom pris
en paramètre.
 supprime le nœud entré en paramètre
de la liste des nœuds.
• getElementsByTagName
(nom_Tag):
• appendChild (Nouveau_Noeud):
 Ajoute un nouveau nœud a la fin de la
liste des nœuds.
 retourne tous les descendants
des éléments correspondants au
Nom_Tag.
DOM
• hasChildNodes():
 Retourne vrai si le nœud possède un
enfant
IV.12
 G. Gardarin
Autres interfaces
 Interfaces fondamentales
•
•
•
•
•
•
•
•
 Interfaces étendues XML
DOMImplementation
Document
Comment
DocumentFragment
Element
Attr(ibute)
NamedNodeMap
CharacterData
•
•
•
•
•
•
ProcessingInstruction
DocumentType
CDATASection
Notation
Entity
EntityReference
 Comment
 Text
DOM
IV.13
 G. Gardarin
Exemple d'utilisation
Public class ExempleDOM
public static main (String argc[]) throws IOException, DOMExcetion
{XMLDocument xmlDoc = new XmlDocument();
// creation des nœuds
ElementNode nom = (ElementNode) xmlDoc.createElement("nom");
ElementNode prenom = (ElementNode) xmlDoc.createElement("prenom");
ElementNode nomfam = (ElementNode) xmlDoc.createElement("nomfam");
// creation de l'arbre
xmlDoc.appendChild(nom);
nom.appenChild(prenom);
prenom.appendChild(xmlDoc.createTextNode("Jean");
nom.appenChild(nomfam);
Document:
nomfam.appendChild(xmlDoc.createTextNode("Dupont");
<nom ville ="Paris">
// positionnement d'un attribut
nom.setAttribute("ville", "Paris");
<prenom> Jean </prenom>
// sortie
<nomfa> Dupont </nomfa>
System.exit(0); } }
</nom>
DOM
IV.14
 G. Gardarin
Bilan DOM
 Une interface objet standard
 Extensions en cours :
• Navigation dans l'arbre XML
• Traitements spécifiques
• DOM Level 3 : XPath
 Performance limitée
• Place mémoire importante
• Traitement à la fin de l'analyse
 Support direct de XPath
 Définition d'un XPath
Evaluator
 Devrait être intégré aux
parsers
• DOM Level 3 : Events
 DOM 2.0
 Modèle d'événements
 Associés à un nœud
 Propagés dans l'arbre DOM
• Accède dynamiquement au
contenu et à la structure du
document
• DOM Level 3 : Style
 Accès aux styles
 Mapping complet
DOM
IV.15
 G. Gardarin
3. L'interface SAX
 SAX (Simple API for XML)
• modèle simplifié d'événements
• développé par un groupe indépendant.
 Types d'événement :
• début et fin de document ;
• début et fin d'éléments ;
• attributs, texte, … .
 Nombreux parseurs publics
•
•
•
•
SAX
XP de James Clark, Aelfred, Saxon
MSXML3 de Microsoft
Xerces de Apache
JAXP de SUN
IV.16
 G. Gardarin
Principe de fonctionnement
Méthodes
utilisateur
Evénement
startDocument
Document
XML
Stream
XML
Parser
Evénement
startElement
….
Evénement
endDocument
Content Handler
SAX
IV.17
 G. Gardarin
Les méthodes essentielles
 XMLReader
 ErrorHandler
• setContentHandler
• setErrrorHandler
• parse
• fatalError
• error
• warning
 ContentHandler
•
•
•
•
•
SAX
startDocument
endDocument
startElement
endElement
characters
IV.18
 G. Gardarin
Exemple SAX et DOM
<personne>
<nom>
Cover
</nom>
<prenom>
Harry
</prenom>
<adresse>
<rue>
Stendhal
</rue>
<ville>
Paris
</ville>
</adresse>
</personne>
SAX
startDocument ()
startElement (personne)
startElement (nom)
characters (Cover)
endElement (nom)
startElement (prenom)
characters (Harry)
endElement (prenom)
startElement (adresse)
startElement (rue)
characters (Stendhal)
endElement (rue)
startElement (ville)
characters (Paris)
endElement (ville)
endElement (adresse)
endElement (personne)
endDocument ()
IV.19
personne
nom
#text: Cover
prenom
#text: Harry
adresse
rue
#text: Stendhal
ville
#text: Paris
 G. Gardarin
DOM versus SAX
 DOM utilise SAX pour la
construction de l’arbre d’un
document XML
 SAX est plus léger que DOM
 Au-dessus de DOM, il est
possible d ’implémenter un
« method caller » ...
SAX
IV.20
 G. Gardarin
4. Le mapping objet (Data Binding)
 Définition
• Mapping entre un document XML et un graphe d’objets
métier C++ ou Java
Développements
manuels
Objets C++
Parsing Xerces C++
XML
Mapping
Interface générée à l’aide
d’outils de Data Binding
Objets Java
Parsing XDK Java
XML
IV.21
Objets Java
Binding Java
XML
 G. Gardarin
Avantages
 L’activité de développement "parsing" est réduite
• Gain en coût de développement des interfaces
• Les applications peuvent se concentrer sur le fonctionnel
• Les développeurs n'ont pas à se soucier du mapping XML
 Les Systèmes Techniques sont simplifiés
• Capitalisation sur l’interface (utilisation, évolution, …)
• Gain en terme de fiabilité (fin de l’utilisation de parseurs
variés, parfois écrits à la main)
• Les performances de l’interface sont optimisées
 Les outils de mapping sont intégrés aux serveurs
• J2EE = JAXB
• .NET = mapper
Mapping
IV.22
 G. Gardarin
Comment traiter les tags XML ?
 Tags connus
•
•
•
•
déclenchement d'un traitement prédéfini
appel de méthode associée avec paramètres
transformation et stockage en BD
génération de requête base de données
 Tags inconnus
•
•
•
•
Mapping
les ignorer : pas toujours satisfaisant
les interdire (DTD, Schéma) : peu flexible
leur appliquer un traitement standard : affichage, erreur, etc.
rechercher le traitement approprié : bibliothèque Java
IV.23
 G. Gardarin
XML: synthèse des outils
<ville>Paris</ville>
<pays>France</pays>
<temp
echelle="C">18</temp>
<ville>Paris</ville>
Bien formé <pays>France</pays>
<temp
Valide
echelle="C">18</temp>
Mal formé/Invalide
XSL
Stylesheet
Manipulation
de l'arbre
XSLFO
XSLT
<city>Paris</city>
<temp
degree="F">65</te
mp>
WML
Mapping
XML
(X)HTML
PDF
IV.24
<ville>Paris</ville>
événements – call back
Data Binder
Parser
XML
SAX
XML
DOM
XML
Schema
(ou DTD)
Objets
Métiers
RTF, Word
 G. Gardarin
5. Plate-forme J2EE
 Java 2 Enterprise Edition
 Un langage + une architecture « standardisés »
 Supportée par plus de 50 constructeurs
• SUN, IBM, Oracle, BEA …
 Architecture pour serveur d'applications
• Plate-forme composée de conteneurs
• Deux types de conteneurs
 Conteneur Web
 Conteneur EJB
• Un ensemble d'API standards
J2EE
IV.25
 G. Gardarin
Architecture J2EE
Serveur d'applications
Conteneur EJB
Conteneur web
J2EE
IV.26
JAX
Java
Mail
JMS
JTA
JNDI
RMI
JAX
Java
Mail
JMS
Base de données
JDBC
EJB
JSP
JDBC
JTA
JNDI
RMI
Servlet
Autres ressources
 G. Gardarin
J2EE APIs
 JNDI
 JSP
• accès aux services de
nomination et de directory
• DNS, NDS, NIS+, LDAP, COS
• Java Server Pages et servlets
• support HTML dynamique
 JMS
 RMI
• invocation de méthodes Java à
distance
• Java Messaging Service
 JTA, JTS
• Java transaction Service
• basé sur OTS de Corba
 JIDL
• Java IDL - interface Corba
 JavaMail
• Envoie et réception de
messages depuis Java
J2EE
 JDBC
• accès aux BD relationnelles
 JAX…
• Interfaces pour XML
IV.27
 G. Gardarin
Les API J2EE pour XML
 JAXP
• Interface commune pour SAX, DOM, XSL
• Pour traiter les doc. XML avec différents parsers
 JAXB
• Interface de liaison avec des objets (EJB)
 JAXM
• Interface pour envoyer des messages en SOAP
• Synchrones ou asynchrones, avec attachements
 JAX-RPC
• Invocation de méthode SOAP et collecte réponse
• Permet la construction de services avec clients
 JAXR
• Accès uniforme à des annuaires UDDI, ebXML, …
J2EE
IV.28
 G. Gardarin
Architecture .NET de Microsoft
VB
SOAP
&
XML
C++
C#
JScript
…
OLE-DB
ASP.NET
BCL.NET
ADO.NET
Toolkits
Fédérateur
de
BD
Common Language Runtime (CLR)
Windows et COM+ Services
.NET
IV.29
 G. Gardarin
Les dialogues avec XML
templates
XSP
TagLib
XML/SOAP
XSL
Stub
Skel.
EJB
XML
XQuery
BD
XML/
SOAP
Un seul modèle !
J2EE et .NET
IV.30
XML
JCA
 G. Gardarin
Bilan
 Serveurs d'applications
• Des composants objet
• Une plate-forme distribuée
• Des API pour XML
 Questions ?
 XML/SOAP
• Le protocole de haut niveau
• Peut intégrer les autres
• Une nouvelle approche SOA
 Qu'en pense Bill Gates ?
• .NET et ses outils
• Une 3e idée géniale
• Les Web Services …
Java & XML
IV.31
 G. Gardarin
Téléchargement