31
G. Gardarin XML dans les Serveurs d'applications 1. Serveurs d'applications : rappels 2. L'interface DOM 3. L'interface SAX 4. XML, J2EE et .NET 5. Conclusion

XML dans les Serveurs d'applications

  • Upload
    hunter

  • View
    49

  • Download
    3

Embed Size (px)

DESCRIPTION

XML dans les Serveurs d'applications. Serveurs d'applications : rappels L'interface DOM L'interface SAX XML, J2EE et .NET Conclusion. 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 - PowerPoint PPT Presentation

Citation preview

Page 1: XML dans les Serveurs d'applications

G. Gardarin

XML dans les Serveurs d'applications

1. Serveurs d'applications : rappels2. L'interface DOM3. L'interface SAX4. XML, J2EE et .NET5. Conclusion

Page 2: XML dans les Serveurs d'applications

IV.2 G. Gardarin

1. Serveurs d'applications

Java, un langage portableMais 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 MicrosoftAvantages de XML:

• échange sécurisé sur HTTP• un message porte plusieurs objets• interopérabilité des Services Web

Serveurs d'applications

Page 3: XML dans les Serveurs d'applications

IV.3 G. Gardarin

Architecture d’un serveur d ’appli.

Serveurs d'applications

Applications légataires

(Mainframes)

Autres serveursd'applications

Bases de données

Outils de développementsBasé composants

Moniteur TransactionsFiles de messages

….

Client HTML

Client Java

Client COM

Client CORBA

ooo

Gestionnaire de threads

Services de Sécurité

Gestionnaire de Données

Gestionnaires de Messages

Gestionnaire de Composants

Noyau serveur d'applications

Gestionnaire de Connexions

Serveur HTTPDocuments HTML/XML

CGIRPC DCE

RMIIIOP

Page 4: XML dans les Serveurs d'applications

IV.4 G. Gardarin

Principaux serveurs d’application

WebLogic de BEAWebSphere Application Server d ’IBMDomino Application Server de Lotus -IBM iPlanet Application Server de SunOracle Application ServerSybase Enterprise ApplicationTomcat+Jboss (Open Source)Tomcat+Jonas (Open Source)Microsoft .NET, Vista & Indigo

Serveurs d'applications

Page 5: XML dans les Serveurs d'applications

IV.5 G. Gardarin

Les dialogues sans XML

Transactions/Requêtes

Templates HTML

(ASP,JSP)

invocationServices ObjetsMétiers

BD

requête

HTML

Compilation

URL longue URL longue HTMLHTML

API ObjetAPI Objet

Trois modèles !

SQLSQL

XAXA

Serveurs d'applications

Instantiation/Activation

Page 6: XML dans les Serveurs d'applications

IV.6 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

Page 7: XML dans les Serveurs d'applications

IV.7 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

Page 8: XML dans les Serveurs d'applications

IV.8 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

Page 9: XML dans les Serveurs d'applications

IV.9 G. Gardarin

Principaux parseurs

DocumentXML

Parseur DOM

Arbre DOM

Application

API DOM

Xerces Apache (Java, C++)

MSXML Microsoft

SDK Oracle Oracle

JAXP J2EE Sun, ...

DOM

Page 10: XML dans les Serveurs d'applications

IV.10 G. Gardarin

Exemple d'arbre DOM

<Guide><Restaurant id="R1">Le

meilleur restaurant</Restaurant>

</Guide>

Document

NodeList

NodeList

NamedNodeMap

Attr

Element

NodeList

Element

Text

Racine du document

<Guide>

<Restaurant>

Id="R1"

Le meilleur restaurant

DOM

Page 11: XML dans les Serveurs d'applications

IV.11 G. Gardarin

L'arbre DOM

Navigation via un arbre générique de nœuds• Node• NodeList (Parent/Child)• NamedNodeMap

Tout nœud hérite de Node

ProcessingInstruction

<?xml:stylesheet ...>

DocumentType

<!DOCTYPE ...>

Element

<Restaurant ....>

....

Document

Child

DOM

Text

Le meilleur restaurant

Node

Page 12: XML dans les Serveurs d'applications

IV.12 G. Gardarin

Quelques interfaces de base Document

• createElement (Nom_Element): créer un élément avec le nom

spécifié en paramètre.

• createComment (commentaire):

créer une ligne de commentaires dans le document.

• createAttribute (Nom_Attribut): créer un attribut avec le nom

pris en paramètre.

• getElementsByTagName (nom_Tag):

retourne tous les descendants des éléments correspondants au Nom_Tag.

Nœud• insertBefore (Nouveau_Noeud,

Noeud_Reference): insère un nouveau nœud fils

avant le " nœud référence" déjà existant.

• replaceChild (Nouveau_Noeud, Ancien_Noeud):

remplace le nœud "Ancien_Noeud" par le nœud "Nouveau_Noeud".

• removeChild (Nœud): supprime le nœud entré en

paramètre de la liste des nœuds.

• appendChild (Nouveau_Noeud): Ajoute un nouveau nœud a la fin

de la liste des nœuds.

• hasChildNodes(): Retourne vrai si le nœud possède

un enfant

DOM

Page 13: XML dans les Serveurs d'applications

IV.13 G. Gardarin

Autres interfaces

Interfaces fondamentales• DOMImplementation• Document• Comment• DocumentFragment• Element • Attr(ibute)• NamedNodeMap• CharacterData

Comment Text

Interfaces étendues XML• ProcessingInstruction• DocumentType• CDATASection• Notation• Entity• EntityReference

DOM

Page 14: XML dans les Serveurs d'applications

IV.14 G. Gardarin

Exemple d'utilisationPublic class ExempleDOMpublic static main (String argc[]) throws IOException, DOMExcetion{XMLDocument xmlDoc = new XmlDocument();// creation des nœudsElementNode nom = (ElementNode) xmlDoc.createElement("nom");ElementNode prenom = (ElementNode) xmlDoc.createElement("prenom");ElementNode nomfam = (ElementNode) xmlDoc.createElement("nomfam");// creation de l'arbrexmlDoc.appendChild(nom);nom.appenChild(prenom);prenom.appendChild(xmlDoc.createTextNode("Jean");nom.appenChild(nomfam);nomfam.appendChild(xmlDoc.createTextNode("Dupont");// positionnement d'un attributnom.setAttribute("ville", "Paris");// sortieSystem.exit(0); } }

Document:

<nom ville ="Paris">

<prenom> Jean </prenom>

<nomfa> Dupont </nomfa>

</nom>

DOM

Page 15: XML dans les Serveurs d'applications

IV.15 G. Gardarin

Bilan DOM

Une interface objet standard• Navigation dans l'arbre

XML• Traitements spécifiques

Performance limitée• Place mémoire importante• Traitement à la fin de

l'analyse

DOM 2.0 • Accède dynamiquement

au contenu et à la structure du document

Extensions en cours :• DOM Level 3 : XPath

Support direct de XPath Définition d'un XPath

Evaluator Devrait être intégré aux

parsers

• DOM Level 3 : Events Modèle d'événements Associés à un nœud Propagés dans l'arbre

DOM

• DOM Level 3 : Style Accès aux styles Mapping complet

DOM

Page 16: XML dans les Serveurs d'applications

IV.16 G. Gardarin

3. L'interface SAX

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• XP de James Clark, Aelfred, Saxon• MSXML3 de Microsoft• Xerces de Apache• JAXP de SUN

Page 17: XML dans les Serveurs d'applications

IV.17 G. Gardarin

Principe de fonctionnement

DocumentXML

Parser

EvénementstartDocument

EvénementstartElement

EvénementendDocument

….

StreamXML

Méthodesutilisateur

Content Handler

SAX

Page 18: XML dans les Serveurs d'applications

IV.18 G. Gardarin

Les méthodes essentielles

XMLReader• setContentHandler• setErrrorHandler• parse

ContentHandler• startDocument• endDocument• startElement• endElement• characters

ErrorHandler• fatalError• error• warning

SAX

Page 19: XML dans les Serveurs d'applications

IV.19 G. Gardarin

Exemple SAX et DOM

personnenom

prenom

adresserue

ville

#text: Cover

#text: Paris

#text: Stendhal

#text: Harry

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 ()

<personne> <nom> Cover </nom>

<prenom> Harry

</prenom> <adresse>

<rue> Stendhal

</rue> <ville> Paris </ville>

</adresse></personne>

SAX

Page 20: XML dans les Serveurs d'applications

IV.20 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

Page 21: XML dans les Serveurs d'applications

IV.21 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

Objets C++

XML

Parsing Xerces C++

Objets Java

Parsing XDK Java

Objets Java

Binding Java

Interface générée à l’aide d’outils de Data Binding

Développements manuels

XML XML

Mapping

Page 22: XML dans les Serveurs d'applications

IV.22 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

Page 23: XML dans les Serveurs d'applications

IV.23 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• 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

Mapping

Page 24: XML dans les Serveurs d'applications

IV.24 G. Gardarin

XML: synthèse des outils

DO

MD

OM

Manipulationde l'arbre

Manipulationde l'arbre

Mal formé/Invalide SA

XS

AX

événements – call back événements – call back

<ville>Paris</ville>

XMLXML<ville>Paris</ville><pays>France</pays><temp echelle="C">18</temp> P

arse

rP

arse

rBien formé

Valide

XSLT XSLT

PDFPDF RTF, WordRTF, Word(X)HTML(X)HTML

<city>Paris</city><temp degree="F">65</temp>

WMLWML XMLXML

<ville>Paris</ville><pays>France</pays><temp echelle="C">18</temp>

XMLXML

XMLSchema(ou DTD)

XMLSchema(ou DTD)

Mapping

XSLFO XSLFO

XSLStylesheet

XSLStylesheet

Da

ta B

ind

er

Da

ta B

ind

er

ObjetsMétiers

Page 25: XML dans les Serveurs d'applications

IV.25 G. Gardarin

5. Plate-forme J2EE

Java 2 Enterprise EditionUn 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

Page 26: XML dans les Serveurs d'applications

IV.26 G. Gardarin

Architecture J2EE

Conteneur web Conteneur EJB

Servlet JSP

RM

I

JND

I

JTA

JDB

C

JMS

JavaM

ail

JAX

RM

I

JND

I

JTA

JDB

C

JMS

JavaM

ail

JAX

EJB

Serveur d'applications

Base de données Autres ressources

J2EE

Page 27: XML dans les Serveurs d'applications

IV.27 G. Gardarin

J2EE APIs

JNDI• accès aux services de

nomination et de directory • DNS, NDS, NIS+, LDAP,

COS

RMI• invocation de méthodes

Java à distance

JIDL • Java IDL - interface Corba

JavaMail• Envoie et réception de

messages depuis Java

JSP• Java Server Pages et

servlets• support HTML dynamique

JMS• Java Messaging Service

JTA, JTS• Java transaction Service • basé sur OTS de Corba

JDBC• accès aux BD relationnelles

JAX…• Interfaces pour XML

J2EE

Page 28: XML dans les Serveurs d'applications

IV.28 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

Page 29: XML dans les Serveurs d'applications

IV.29 G. Gardarin

Architecture .NET de Microsoft

VB C++ JScript …C#

ASP.NET ADO.NETBCL.NET

Common Language Runtime (CLR)

Windows et COM+ Services

SOAP&

XML

Toolkits

OLE-DB

FédérateurdeBD

.NET

Page 30: XML dans les Serveurs d'applications

IV.30 G. Gardarin

Les dialogues avec XML

TagLibTagLib

Un seul modèle !

templates

EJB

BD

XSP

XML/SOAPXML/SOAPXSLXSL

Skel.

XML/XML/SOAPSOAP

XMLXMLXQueryXQuery

XMLXMLJCAJCA

Stub

J2EE et .NET

Page 31: XML dans les Serveurs d'applications

IV.31 G. Gardarin

Bilan Serveurs d'applications

• Des composants objet• Une plate-forme distribuée• Des API pour XML

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 …

Questions ?

Java & XML