Normes avancées du Web - GTI780 & MTI780 - ETS - A08

59
Normes avancées du Web Normes avancées du Web Montréal, novembre 2008 Montréal, novembre 2008 GTI-780 / MTI-780 GTI-780 / MTI-780 Sujets spéciaux en TI Le Web 2.0 : concepts et outils École de technologie supérieure par Claude Coulombe

description

Présentation sur les normes avancées du Web dans le cadre du cours combiné GTI780 / MTI780, Sujets spéciaux en TI, donné par Claude Coulombe, à l\\\'Ecole de technologie supérieure, Montréal, Automne 2008

Transcript of Normes avancées du Web - GTI780 & MTI780 - ETS - A08

Page 1: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Normes avanceacutees du Web Normes avanceacutees du Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Sujets speacuteciaux en TI

Le Web 20 concepts et outils

Eacutecole de technologie supeacuterieure

par

Claude Coulombe

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Normes avanceacutees du WebNormes avanceacutees du Web

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AjaxAjaxArchitecture SOAArchitecture SOAXSL - XSLTXSL - XSLT JSONJSONRSS 20RSS 20Atom 03 et 10Atom 03 et 10RESTRESTGoogle GearsGoogle GearsCometComet

Normes avanceacutees du WebNormes avanceacutees du Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ameacuteliorer lexpeacuterience-utilisateur par des interfaces riches et reacuteactivesAmeacuteliorer lexpeacuterience-utilisateur par des interfaces riches et reacuteactives

Reacutepondre aux besoins des architectures distribueacutees Reacutepondre aux besoins des architectures distribueacutees

Impleacutementer les architectures agrave base de services WebImpleacutementer les architectures agrave base de services Web

Assurer la compatibiliteacute entre les diffeacuterents fureteurs et les diffeacuterentes Assurer la compatibiliteacute entre les diffeacuterents fureteurs et les diffeacuterentes

technologies serveurstechnologies serveurs

Obtenir de linformation agrave la carte et des interfaces riches en contenuObtenir de linformation agrave la carte et des interfaces riches en contenu

Faciliter la reacuteutilisation le partage (syndication) et la transformation des Faciliter la reacuteutilisation le partage (syndication) et la transformation des

donneacuteesdonneacutees

Pourquoi de nouvelles normesPourquoi de nouvelles normes

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AjaxAjax

AjaxAjax

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AjaxAjax ndash Une veacuteritable perceacutee ndash Une veacuteritable perceacutee

AJAXAJAX

Le premier agrave utiliser le terme AJAXfut Jesse James Garrett en feacutevrier 2005

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax (Asynchronous JavaScript amp XML)Ajax (Asynchronous JavaScript amp XML) Fini le peacutenible rechargement de pagesFini le peacutenible rechargement de pages Reacutealise des requecirctes asynchrones au serveur Reacutealise des requecirctes asynchrones au serveur

et fait la mise-agrave-jour de la page Web sans faire et fait la mise-agrave-jour de la page Web sans faire de chargement completde chargement complet

Applications Web plus reacuteactives et plus Applications Web plus reacuteactives et plus dynamiquesdynamiques

Objet XMLHttpRequest inventeacute par M$Objet XMLHttpRequest inventeacute par M$ Baseacute sur du code-client en JavaScriptBaseacute sur du code-client en JavaScript

AjaxAjax ndash Une veacuteritable perceacutee ndash Une veacuteritable perceacutee

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Ajax ndash Diagramme de collaborationDiagramme de collaboration

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Diagramme de seacutequenceAjax ndash Diagramme de seacutequence

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

En mode asynchrone lexeacutecution dans le fureteur sur le poste client se poursuit sans attendre la reacuteponse du serveur La reacuteponse sera traiteacutee par une fonction de retour (fonction Callback) quand elle arrivera Leacutetat de la requecircte est donneacute par lattribut readyState de lobjet XMLHttpRequest

En mode synchrone le fureteur est geleacute en attendant la reacuteponse du serveur

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - Avantages amp inconveacutenientsAjax - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - InconveacutenientsAjax - Inconveacutenients Effet laquo buzzword raquoEffet laquo buzzword raquo Problegravemes de compatibiliteacute entre les diffeacuterents fureteursProblegravemes de compatibiliteacute entre les diffeacuterents fureteurs Ne fonctionne pas si JavaScript est deacutesactiveacuteNe fonctionne pas si JavaScript est deacutesactiveacute Les donneacutees chargeacutees de faccedilon dynamique ne sont pas Les donneacutees chargeacutees de faccedilon dynamique ne sont pas

indexeacutees par les moteurs de rechercheindexeacutees par les moteurs de recherche Si le traitement du cocircteacute serveur est long le traitement Si le traitement du cocircteacute serveur est long le traitement

asynchrone dAjax fait que les changements se font avec un asynchrone dAjax fait que les changements se font avec un deacutelaideacutelai

Le bouton de retour en arriegravere lURL ne change pas et les Le bouton de retour en arriegravere lURL ne change pas et les signets ne fonctionnent passignets ne fonctionnent pas

Pas daccegraves en dehors du domaine du serveurPas daccegraves en dehors du domaine du serveur Plus exigeant sur le poste client (vieux PC ) Plus exigeant sur le poste client (vieux PC )

Note En anglais laquo Same Origin Policy raquo

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - AvantagesAjax - Avantages Reacuteponses rapides aux actions de lutilisateurReacuteponses rapides aux actions de lutilisateur

Applications Web riches rapides et leacutegegraveresApplications Web riches rapides et leacutegegraveres

Pas de long teacuteleacutechargement ni dinstallationPas de long teacuteleacutechargement ni dinstallation

Permet de modifier partiellement la page afficheacutee par le Permet de modifier partiellement la page afficheacutee par le

fureteur pour la mettre agrave jour sans avoir agrave recharger la page fureteur pour la mettre agrave jour sans avoir agrave recharger la page

entiegravereentiegravere

Reacuteduit la quantiteacute dinformation demandeacutee au serveurReacuteduit la quantiteacute dinformation demandeacutee au serveur

Fait davantage de traitement du cocircteacute client (en JavaScript) Fait davantage de traitement du cocircteacute client (en JavaScript)

et moins sur le serveur et le reacuteseauet moins sur le serveur et le reacuteseau

Donc eacuteconomie du serveur et de la bande passanteDonc eacuteconomie du serveur et de la bande passante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Architecture SOAArchitecture SOA

SOASOA

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA (Service Oriented Architecture) Architecture orienteacutee services SOA (Service Oriented Architecture) Architecture orienteacutee services

Baseacutee sur les services Web (WS) et les composants logicielsBaseacutee sur les services Web (WS) et les composants logiciels

Reprend les concepts du calcul distribueacuteReprend les concepts du calcul distribueacute

Un service eacutetablit une relation entre un composant producteur et unUn service eacutetablit une relation entre un composant producteur et un

composant consommateurcomposant consommateur

Application ensemble de services qui communiquent par des messagesApplication ensemble de services qui communiquent par des messages

Utilisation de messages laquo en format ouvert raquo le plus souvent en XMLUtilisation de messages laquo en format ouvert raquo le plus souvent en XML

Possibiliteacute dactivation par des eacuteveacutenementsPossibiliteacute dactivation par des eacuteveacutenements

Reacutegie selon des contrats deacutechangeReacutegie selon des contrats deacutechange

Souvent deacutefinie en termes de couches applicativesSouvent deacutefinie en termes de couches applicatives

Service synchrone ou asynchroneService synchrone ou asynchrone

Populaire dans le e-commerce (B2B et B2C) Populaire dans le e-commerce (B2B et B2C)

Plateformes JEE et NETPlateformes JEE et NET

Architecture SOAArchitecture SOA

Note une eacutevolution inteacuteressante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 2: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Normes avanceacutees du WebNormes avanceacutees du Web

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AjaxAjaxArchitecture SOAArchitecture SOAXSL - XSLTXSL - XSLT JSONJSONRSS 20RSS 20Atom 03 et 10Atom 03 et 10RESTRESTGoogle GearsGoogle GearsCometComet

Normes avanceacutees du WebNormes avanceacutees du Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ameacuteliorer lexpeacuterience-utilisateur par des interfaces riches et reacuteactivesAmeacuteliorer lexpeacuterience-utilisateur par des interfaces riches et reacuteactives

Reacutepondre aux besoins des architectures distribueacutees Reacutepondre aux besoins des architectures distribueacutees

Impleacutementer les architectures agrave base de services WebImpleacutementer les architectures agrave base de services Web

Assurer la compatibiliteacute entre les diffeacuterents fureteurs et les diffeacuterentes Assurer la compatibiliteacute entre les diffeacuterents fureteurs et les diffeacuterentes

technologies serveurstechnologies serveurs

Obtenir de linformation agrave la carte et des interfaces riches en contenuObtenir de linformation agrave la carte et des interfaces riches en contenu

Faciliter la reacuteutilisation le partage (syndication) et la transformation des Faciliter la reacuteutilisation le partage (syndication) et la transformation des

donneacuteesdonneacutees

Pourquoi de nouvelles normesPourquoi de nouvelles normes

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AjaxAjax

AjaxAjax

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AjaxAjax ndash Une veacuteritable perceacutee ndash Une veacuteritable perceacutee

AJAXAJAX

Le premier agrave utiliser le terme AJAXfut Jesse James Garrett en feacutevrier 2005

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax (Asynchronous JavaScript amp XML)Ajax (Asynchronous JavaScript amp XML) Fini le peacutenible rechargement de pagesFini le peacutenible rechargement de pages Reacutealise des requecirctes asynchrones au serveur Reacutealise des requecirctes asynchrones au serveur

et fait la mise-agrave-jour de la page Web sans faire et fait la mise-agrave-jour de la page Web sans faire de chargement completde chargement complet

Applications Web plus reacuteactives et plus Applications Web plus reacuteactives et plus dynamiquesdynamiques

Objet XMLHttpRequest inventeacute par M$Objet XMLHttpRequest inventeacute par M$ Baseacute sur du code-client en JavaScriptBaseacute sur du code-client en JavaScript

AjaxAjax ndash Une veacuteritable perceacutee ndash Une veacuteritable perceacutee

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Ajax ndash Diagramme de collaborationDiagramme de collaboration

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Diagramme de seacutequenceAjax ndash Diagramme de seacutequence

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

En mode asynchrone lexeacutecution dans le fureteur sur le poste client se poursuit sans attendre la reacuteponse du serveur La reacuteponse sera traiteacutee par une fonction de retour (fonction Callback) quand elle arrivera Leacutetat de la requecircte est donneacute par lattribut readyState de lobjet XMLHttpRequest

En mode synchrone le fureteur est geleacute en attendant la reacuteponse du serveur

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - Avantages amp inconveacutenientsAjax - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - InconveacutenientsAjax - Inconveacutenients Effet laquo buzzword raquoEffet laquo buzzword raquo Problegravemes de compatibiliteacute entre les diffeacuterents fureteursProblegravemes de compatibiliteacute entre les diffeacuterents fureteurs Ne fonctionne pas si JavaScript est deacutesactiveacuteNe fonctionne pas si JavaScript est deacutesactiveacute Les donneacutees chargeacutees de faccedilon dynamique ne sont pas Les donneacutees chargeacutees de faccedilon dynamique ne sont pas

indexeacutees par les moteurs de rechercheindexeacutees par les moteurs de recherche Si le traitement du cocircteacute serveur est long le traitement Si le traitement du cocircteacute serveur est long le traitement

asynchrone dAjax fait que les changements se font avec un asynchrone dAjax fait que les changements se font avec un deacutelaideacutelai

Le bouton de retour en arriegravere lURL ne change pas et les Le bouton de retour en arriegravere lURL ne change pas et les signets ne fonctionnent passignets ne fonctionnent pas

Pas daccegraves en dehors du domaine du serveurPas daccegraves en dehors du domaine du serveur Plus exigeant sur le poste client (vieux PC ) Plus exigeant sur le poste client (vieux PC )

Note En anglais laquo Same Origin Policy raquo

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - AvantagesAjax - Avantages Reacuteponses rapides aux actions de lutilisateurReacuteponses rapides aux actions de lutilisateur

Applications Web riches rapides et leacutegegraveresApplications Web riches rapides et leacutegegraveres

Pas de long teacuteleacutechargement ni dinstallationPas de long teacuteleacutechargement ni dinstallation

Permet de modifier partiellement la page afficheacutee par le Permet de modifier partiellement la page afficheacutee par le

fureteur pour la mettre agrave jour sans avoir agrave recharger la page fureteur pour la mettre agrave jour sans avoir agrave recharger la page

entiegravereentiegravere

Reacuteduit la quantiteacute dinformation demandeacutee au serveurReacuteduit la quantiteacute dinformation demandeacutee au serveur

Fait davantage de traitement du cocircteacute client (en JavaScript) Fait davantage de traitement du cocircteacute client (en JavaScript)

et moins sur le serveur et le reacuteseauet moins sur le serveur et le reacuteseau

Donc eacuteconomie du serveur et de la bande passanteDonc eacuteconomie du serveur et de la bande passante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Architecture SOAArchitecture SOA

SOASOA

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA (Service Oriented Architecture) Architecture orienteacutee services SOA (Service Oriented Architecture) Architecture orienteacutee services

Baseacutee sur les services Web (WS) et les composants logicielsBaseacutee sur les services Web (WS) et les composants logiciels

Reprend les concepts du calcul distribueacuteReprend les concepts du calcul distribueacute

Un service eacutetablit une relation entre un composant producteur et unUn service eacutetablit une relation entre un composant producteur et un

composant consommateurcomposant consommateur

Application ensemble de services qui communiquent par des messagesApplication ensemble de services qui communiquent par des messages

Utilisation de messages laquo en format ouvert raquo le plus souvent en XMLUtilisation de messages laquo en format ouvert raquo le plus souvent en XML

Possibiliteacute dactivation par des eacuteveacutenementsPossibiliteacute dactivation par des eacuteveacutenements

Reacutegie selon des contrats deacutechangeReacutegie selon des contrats deacutechange

Souvent deacutefinie en termes de couches applicativesSouvent deacutefinie en termes de couches applicatives

Service synchrone ou asynchroneService synchrone ou asynchrone

Populaire dans le e-commerce (B2B et B2C) Populaire dans le e-commerce (B2B et B2C)

Plateformes JEE et NETPlateformes JEE et NET

Architecture SOAArchitecture SOA

Note une eacutevolution inteacuteressante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 3: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AjaxAjaxArchitecture SOAArchitecture SOAXSL - XSLTXSL - XSLT JSONJSONRSS 20RSS 20Atom 03 et 10Atom 03 et 10RESTRESTGoogle GearsGoogle GearsCometComet

Normes avanceacutees du WebNormes avanceacutees du Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ameacuteliorer lexpeacuterience-utilisateur par des interfaces riches et reacuteactivesAmeacuteliorer lexpeacuterience-utilisateur par des interfaces riches et reacuteactives

Reacutepondre aux besoins des architectures distribueacutees Reacutepondre aux besoins des architectures distribueacutees

Impleacutementer les architectures agrave base de services WebImpleacutementer les architectures agrave base de services Web

Assurer la compatibiliteacute entre les diffeacuterents fureteurs et les diffeacuterentes Assurer la compatibiliteacute entre les diffeacuterents fureteurs et les diffeacuterentes

technologies serveurstechnologies serveurs

Obtenir de linformation agrave la carte et des interfaces riches en contenuObtenir de linformation agrave la carte et des interfaces riches en contenu

Faciliter la reacuteutilisation le partage (syndication) et la transformation des Faciliter la reacuteutilisation le partage (syndication) et la transformation des

donneacuteesdonneacutees

Pourquoi de nouvelles normesPourquoi de nouvelles normes

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AjaxAjax

AjaxAjax

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AjaxAjax ndash Une veacuteritable perceacutee ndash Une veacuteritable perceacutee

AJAXAJAX

Le premier agrave utiliser le terme AJAXfut Jesse James Garrett en feacutevrier 2005

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax (Asynchronous JavaScript amp XML)Ajax (Asynchronous JavaScript amp XML) Fini le peacutenible rechargement de pagesFini le peacutenible rechargement de pages Reacutealise des requecirctes asynchrones au serveur Reacutealise des requecirctes asynchrones au serveur

et fait la mise-agrave-jour de la page Web sans faire et fait la mise-agrave-jour de la page Web sans faire de chargement completde chargement complet

Applications Web plus reacuteactives et plus Applications Web plus reacuteactives et plus dynamiquesdynamiques

Objet XMLHttpRequest inventeacute par M$Objet XMLHttpRequest inventeacute par M$ Baseacute sur du code-client en JavaScriptBaseacute sur du code-client en JavaScript

AjaxAjax ndash Une veacuteritable perceacutee ndash Une veacuteritable perceacutee

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Ajax ndash Diagramme de collaborationDiagramme de collaboration

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Diagramme de seacutequenceAjax ndash Diagramme de seacutequence

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

En mode asynchrone lexeacutecution dans le fureteur sur le poste client se poursuit sans attendre la reacuteponse du serveur La reacuteponse sera traiteacutee par une fonction de retour (fonction Callback) quand elle arrivera Leacutetat de la requecircte est donneacute par lattribut readyState de lobjet XMLHttpRequest

En mode synchrone le fureteur est geleacute en attendant la reacuteponse du serveur

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - Avantages amp inconveacutenientsAjax - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - InconveacutenientsAjax - Inconveacutenients Effet laquo buzzword raquoEffet laquo buzzword raquo Problegravemes de compatibiliteacute entre les diffeacuterents fureteursProblegravemes de compatibiliteacute entre les diffeacuterents fureteurs Ne fonctionne pas si JavaScript est deacutesactiveacuteNe fonctionne pas si JavaScript est deacutesactiveacute Les donneacutees chargeacutees de faccedilon dynamique ne sont pas Les donneacutees chargeacutees de faccedilon dynamique ne sont pas

indexeacutees par les moteurs de rechercheindexeacutees par les moteurs de recherche Si le traitement du cocircteacute serveur est long le traitement Si le traitement du cocircteacute serveur est long le traitement

asynchrone dAjax fait que les changements se font avec un asynchrone dAjax fait que les changements se font avec un deacutelaideacutelai

Le bouton de retour en arriegravere lURL ne change pas et les Le bouton de retour en arriegravere lURL ne change pas et les signets ne fonctionnent passignets ne fonctionnent pas

Pas daccegraves en dehors du domaine du serveurPas daccegraves en dehors du domaine du serveur Plus exigeant sur le poste client (vieux PC ) Plus exigeant sur le poste client (vieux PC )

Note En anglais laquo Same Origin Policy raquo

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - AvantagesAjax - Avantages Reacuteponses rapides aux actions de lutilisateurReacuteponses rapides aux actions de lutilisateur

Applications Web riches rapides et leacutegegraveresApplications Web riches rapides et leacutegegraveres

Pas de long teacuteleacutechargement ni dinstallationPas de long teacuteleacutechargement ni dinstallation

Permet de modifier partiellement la page afficheacutee par le Permet de modifier partiellement la page afficheacutee par le

fureteur pour la mettre agrave jour sans avoir agrave recharger la page fureteur pour la mettre agrave jour sans avoir agrave recharger la page

entiegravereentiegravere

Reacuteduit la quantiteacute dinformation demandeacutee au serveurReacuteduit la quantiteacute dinformation demandeacutee au serveur

Fait davantage de traitement du cocircteacute client (en JavaScript) Fait davantage de traitement du cocircteacute client (en JavaScript)

et moins sur le serveur et le reacuteseauet moins sur le serveur et le reacuteseau

Donc eacuteconomie du serveur et de la bande passanteDonc eacuteconomie du serveur et de la bande passante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Architecture SOAArchitecture SOA

SOASOA

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA (Service Oriented Architecture) Architecture orienteacutee services SOA (Service Oriented Architecture) Architecture orienteacutee services

Baseacutee sur les services Web (WS) et les composants logicielsBaseacutee sur les services Web (WS) et les composants logiciels

Reprend les concepts du calcul distribueacuteReprend les concepts du calcul distribueacute

Un service eacutetablit une relation entre un composant producteur et unUn service eacutetablit une relation entre un composant producteur et un

composant consommateurcomposant consommateur

Application ensemble de services qui communiquent par des messagesApplication ensemble de services qui communiquent par des messages

Utilisation de messages laquo en format ouvert raquo le plus souvent en XMLUtilisation de messages laquo en format ouvert raquo le plus souvent en XML

Possibiliteacute dactivation par des eacuteveacutenementsPossibiliteacute dactivation par des eacuteveacutenements

Reacutegie selon des contrats deacutechangeReacutegie selon des contrats deacutechange

Souvent deacutefinie en termes de couches applicativesSouvent deacutefinie en termes de couches applicatives

Service synchrone ou asynchroneService synchrone ou asynchrone

Populaire dans le e-commerce (B2B et B2C) Populaire dans le e-commerce (B2B et B2C)

Plateformes JEE et NETPlateformes JEE et NET

Architecture SOAArchitecture SOA

Note une eacutevolution inteacuteressante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 4: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ameacuteliorer lexpeacuterience-utilisateur par des interfaces riches et reacuteactivesAmeacuteliorer lexpeacuterience-utilisateur par des interfaces riches et reacuteactives

Reacutepondre aux besoins des architectures distribueacutees Reacutepondre aux besoins des architectures distribueacutees

Impleacutementer les architectures agrave base de services WebImpleacutementer les architectures agrave base de services Web

Assurer la compatibiliteacute entre les diffeacuterents fureteurs et les diffeacuterentes Assurer la compatibiliteacute entre les diffeacuterents fureteurs et les diffeacuterentes

technologies serveurstechnologies serveurs

Obtenir de linformation agrave la carte et des interfaces riches en contenuObtenir de linformation agrave la carte et des interfaces riches en contenu

Faciliter la reacuteutilisation le partage (syndication) et la transformation des Faciliter la reacuteutilisation le partage (syndication) et la transformation des

donneacuteesdonneacutees

Pourquoi de nouvelles normesPourquoi de nouvelles normes

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AjaxAjax

AjaxAjax

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AjaxAjax ndash Une veacuteritable perceacutee ndash Une veacuteritable perceacutee

AJAXAJAX

Le premier agrave utiliser le terme AJAXfut Jesse James Garrett en feacutevrier 2005

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax (Asynchronous JavaScript amp XML)Ajax (Asynchronous JavaScript amp XML) Fini le peacutenible rechargement de pagesFini le peacutenible rechargement de pages Reacutealise des requecirctes asynchrones au serveur Reacutealise des requecirctes asynchrones au serveur

et fait la mise-agrave-jour de la page Web sans faire et fait la mise-agrave-jour de la page Web sans faire de chargement completde chargement complet

Applications Web plus reacuteactives et plus Applications Web plus reacuteactives et plus dynamiquesdynamiques

Objet XMLHttpRequest inventeacute par M$Objet XMLHttpRequest inventeacute par M$ Baseacute sur du code-client en JavaScriptBaseacute sur du code-client en JavaScript

AjaxAjax ndash Une veacuteritable perceacutee ndash Une veacuteritable perceacutee

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Ajax ndash Diagramme de collaborationDiagramme de collaboration

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Diagramme de seacutequenceAjax ndash Diagramme de seacutequence

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

En mode asynchrone lexeacutecution dans le fureteur sur le poste client se poursuit sans attendre la reacuteponse du serveur La reacuteponse sera traiteacutee par une fonction de retour (fonction Callback) quand elle arrivera Leacutetat de la requecircte est donneacute par lattribut readyState de lobjet XMLHttpRequest

En mode synchrone le fureteur est geleacute en attendant la reacuteponse du serveur

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - Avantages amp inconveacutenientsAjax - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - InconveacutenientsAjax - Inconveacutenients Effet laquo buzzword raquoEffet laquo buzzword raquo Problegravemes de compatibiliteacute entre les diffeacuterents fureteursProblegravemes de compatibiliteacute entre les diffeacuterents fureteurs Ne fonctionne pas si JavaScript est deacutesactiveacuteNe fonctionne pas si JavaScript est deacutesactiveacute Les donneacutees chargeacutees de faccedilon dynamique ne sont pas Les donneacutees chargeacutees de faccedilon dynamique ne sont pas

indexeacutees par les moteurs de rechercheindexeacutees par les moteurs de recherche Si le traitement du cocircteacute serveur est long le traitement Si le traitement du cocircteacute serveur est long le traitement

asynchrone dAjax fait que les changements se font avec un asynchrone dAjax fait que les changements se font avec un deacutelaideacutelai

Le bouton de retour en arriegravere lURL ne change pas et les Le bouton de retour en arriegravere lURL ne change pas et les signets ne fonctionnent passignets ne fonctionnent pas

Pas daccegraves en dehors du domaine du serveurPas daccegraves en dehors du domaine du serveur Plus exigeant sur le poste client (vieux PC ) Plus exigeant sur le poste client (vieux PC )

Note En anglais laquo Same Origin Policy raquo

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - AvantagesAjax - Avantages Reacuteponses rapides aux actions de lutilisateurReacuteponses rapides aux actions de lutilisateur

Applications Web riches rapides et leacutegegraveresApplications Web riches rapides et leacutegegraveres

Pas de long teacuteleacutechargement ni dinstallationPas de long teacuteleacutechargement ni dinstallation

Permet de modifier partiellement la page afficheacutee par le Permet de modifier partiellement la page afficheacutee par le

fureteur pour la mettre agrave jour sans avoir agrave recharger la page fureteur pour la mettre agrave jour sans avoir agrave recharger la page

entiegravereentiegravere

Reacuteduit la quantiteacute dinformation demandeacutee au serveurReacuteduit la quantiteacute dinformation demandeacutee au serveur

Fait davantage de traitement du cocircteacute client (en JavaScript) Fait davantage de traitement du cocircteacute client (en JavaScript)

et moins sur le serveur et le reacuteseauet moins sur le serveur et le reacuteseau

Donc eacuteconomie du serveur et de la bande passanteDonc eacuteconomie du serveur et de la bande passante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Architecture SOAArchitecture SOA

SOASOA

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA (Service Oriented Architecture) Architecture orienteacutee services SOA (Service Oriented Architecture) Architecture orienteacutee services

Baseacutee sur les services Web (WS) et les composants logicielsBaseacutee sur les services Web (WS) et les composants logiciels

Reprend les concepts du calcul distribueacuteReprend les concepts du calcul distribueacute

Un service eacutetablit une relation entre un composant producteur et unUn service eacutetablit une relation entre un composant producteur et un

composant consommateurcomposant consommateur

Application ensemble de services qui communiquent par des messagesApplication ensemble de services qui communiquent par des messages

Utilisation de messages laquo en format ouvert raquo le plus souvent en XMLUtilisation de messages laquo en format ouvert raquo le plus souvent en XML

Possibiliteacute dactivation par des eacuteveacutenementsPossibiliteacute dactivation par des eacuteveacutenements

Reacutegie selon des contrats deacutechangeReacutegie selon des contrats deacutechange

Souvent deacutefinie en termes de couches applicativesSouvent deacutefinie en termes de couches applicatives

Service synchrone ou asynchroneService synchrone ou asynchrone

Populaire dans le e-commerce (B2B et B2C) Populaire dans le e-commerce (B2B et B2C)

Plateformes JEE et NETPlateformes JEE et NET

Architecture SOAArchitecture SOA

Note une eacutevolution inteacuteressante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 5: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AjaxAjax

AjaxAjax

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AjaxAjax ndash Une veacuteritable perceacutee ndash Une veacuteritable perceacutee

AJAXAJAX

Le premier agrave utiliser le terme AJAXfut Jesse James Garrett en feacutevrier 2005

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax (Asynchronous JavaScript amp XML)Ajax (Asynchronous JavaScript amp XML) Fini le peacutenible rechargement de pagesFini le peacutenible rechargement de pages Reacutealise des requecirctes asynchrones au serveur Reacutealise des requecirctes asynchrones au serveur

et fait la mise-agrave-jour de la page Web sans faire et fait la mise-agrave-jour de la page Web sans faire de chargement completde chargement complet

Applications Web plus reacuteactives et plus Applications Web plus reacuteactives et plus dynamiquesdynamiques

Objet XMLHttpRequest inventeacute par M$Objet XMLHttpRequest inventeacute par M$ Baseacute sur du code-client en JavaScriptBaseacute sur du code-client en JavaScript

AjaxAjax ndash Une veacuteritable perceacutee ndash Une veacuteritable perceacutee

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Ajax ndash Diagramme de collaborationDiagramme de collaboration

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Diagramme de seacutequenceAjax ndash Diagramme de seacutequence

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

En mode asynchrone lexeacutecution dans le fureteur sur le poste client se poursuit sans attendre la reacuteponse du serveur La reacuteponse sera traiteacutee par une fonction de retour (fonction Callback) quand elle arrivera Leacutetat de la requecircte est donneacute par lattribut readyState de lobjet XMLHttpRequest

En mode synchrone le fureteur est geleacute en attendant la reacuteponse du serveur

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - Avantages amp inconveacutenientsAjax - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - InconveacutenientsAjax - Inconveacutenients Effet laquo buzzword raquoEffet laquo buzzword raquo Problegravemes de compatibiliteacute entre les diffeacuterents fureteursProblegravemes de compatibiliteacute entre les diffeacuterents fureteurs Ne fonctionne pas si JavaScript est deacutesactiveacuteNe fonctionne pas si JavaScript est deacutesactiveacute Les donneacutees chargeacutees de faccedilon dynamique ne sont pas Les donneacutees chargeacutees de faccedilon dynamique ne sont pas

indexeacutees par les moteurs de rechercheindexeacutees par les moteurs de recherche Si le traitement du cocircteacute serveur est long le traitement Si le traitement du cocircteacute serveur est long le traitement

asynchrone dAjax fait que les changements se font avec un asynchrone dAjax fait que les changements se font avec un deacutelaideacutelai

Le bouton de retour en arriegravere lURL ne change pas et les Le bouton de retour en arriegravere lURL ne change pas et les signets ne fonctionnent passignets ne fonctionnent pas

Pas daccegraves en dehors du domaine du serveurPas daccegraves en dehors du domaine du serveur Plus exigeant sur le poste client (vieux PC ) Plus exigeant sur le poste client (vieux PC )

Note En anglais laquo Same Origin Policy raquo

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - AvantagesAjax - Avantages Reacuteponses rapides aux actions de lutilisateurReacuteponses rapides aux actions de lutilisateur

Applications Web riches rapides et leacutegegraveresApplications Web riches rapides et leacutegegraveres

Pas de long teacuteleacutechargement ni dinstallationPas de long teacuteleacutechargement ni dinstallation

Permet de modifier partiellement la page afficheacutee par le Permet de modifier partiellement la page afficheacutee par le

fureteur pour la mettre agrave jour sans avoir agrave recharger la page fureteur pour la mettre agrave jour sans avoir agrave recharger la page

entiegravereentiegravere

Reacuteduit la quantiteacute dinformation demandeacutee au serveurReacuteduit la quantiteacute dinformation demandeacutee au serveur

Fait davantage de traitement du cocircteacute client (en JavaScript) Fait davantage de traitement du cocircteacute client (en JavaScript)

et moins sur le serveur et le reacuteseauet moins sur le serveur et le reacuteseau

Donc eacuteconomie du serveur et de la bande passanteDonc eacuteconomie du serveur et de la bande passante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Architecture SOAArchitecture SOA

SOASOA

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA (Service Oriented Architecture) Architecture orienteacutee services SOA (Service Oriented Architecture) Architecture orienteacutee services

Baseacutee sur les services Web (WS) et les composants logicielsBaseacutee sur les services Web (WS) et les composants logiciels

Reprend les concepts du calcul distribueacuteReprend les concepts du calcul distribueacute

Un service eacutetablit une relation entre un composant producteur et unUn service eacutetablit une relation entre un composant producteur et un

composant consommateurcomposant consommateur

Application ensemble de services qui communiquent par des messagesApplication ensemble de services qui communiquent par des messages

Utilisation de messages laquo en format ouvert raquo le plus souvent en XMLUtilisation de messages laquo en format ouvert raquo le plus souvent en XML

Possibiliteacute dactivation par des eacuteveacutenementsPossibiliteacute dactivation par des eacuteveacutenements

Reacutegie selon des contrats deacutechangeReacutegie selon des contrats deacutechange

Souvent deacutefinie en termes de couches applicativesSouvent deacutefinie en termes de couches applicatives

Service synchrone ou asynchroneService synchrone ou asynchrone

Populaire dans le e-commerce (B2B et B2C) Populaire dans le e-commerce (B2B et B2C)

Plateformes JEE et NETPlateformes JEE et NET

Architecture SOAArchitecture SOA

Note une eacutevolution inteacuteressante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 6: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AjaxAjax ndash Une veacuteritable perceacutee ndash Une veacuteritable perceacutee

AJAXAJAX

Le premier agrave utiliser le terme AJAXfut Jesse James Garrett en feacutevrier 2005

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax (Asynchronous JavaScript amp XML)Ajax (Asynchronous JavaScript amp XML) Fini le peacutenible rechargement de pagesFini le peacutenible rechargement de pages Reacutealise des requecirctes asynchrones au serveur Reacutealise des requecirctes asynchrones au serveur

et fait la mise-agrave-jour de la page Web sans faire et fait la mise-agrave-jour de la page Web sans faire de chargement completde chargement complet

Applications Web plus reacuteactives et plus Applications Web plus reacuteactives et plus dynamiquesdynamiques

Objet XMLHttpRequest inventeacute par M$Objet XMLHttpRequest inventeacute par M$ Baseacute sur du code-client en JavaScriptBaseacute sur du code-client en JavaScript

AjaxAjax ndash Une veacuteritable perceacutee ndash Une veacuteritable perceacutee

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Ajax ndash Diagramme de collaborationDiagramme de collaboration

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Diagramme de seacutequenceAjax ndash Diagramme de seacutequence

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

En mode asynchrone lexeacutecution dans le fureteur sur le poste client se poursuit sans attendre la reacuteponse du serveur La reacuteponse sera traiteacutee par une fonction de retour (fonction Callback) quand elle arrivera Leacutetat de la requecircte est donneacute par lattribut readyState de lobjet XMLHttpRequest

En mode synchrone le fureteur est geleacute en attendant la reacuteponse du serveur

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - Avantages amp inconveacutenientsAjax - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - InconveacutenientsAjax - Inconveacutenients Effet laquo buzzword raquoEffet laquo buzzword raquo Problegravemes de compatibiliteacute entre les diffeacuterents fureteursProblegravemes de compatibiliteacute entre les diffeacuterents fureteurs Ne fonctionne pas si JavaScript est deacutesactiveacuteNe fonctionne pas si JavaScript est deacutesactiveacute Les donneacutees chargeacutees de faccedilon dynamique ne sont pas Les donneacutees chargeacutees de faccedilon dynamique ne sont pas

indexeacutees par les moteurs de rechercheindexeacutees par les moteurs de recherche Si le traitement du cocircteacute serveur est long le traitement Si le traitement du cocircteacute serveur est long le traitement

asynchrone dAjax fait que les changements se font avec un asynchrone dAjax fait que les changements se font avec un deacutelaideacutelai

Le bouton de retour en arriegravere lURL ne change pas et les Le bouton de retour en arriegravere lURL ne change pas et les signets ne fonctionnent passignets ne fonctionnent pas

Pas daccegraves en dehors du domaine du serveurPas daccegraves en dehors du domaine du serveur Plus exigeant sur le poste client (vieux PC ) Plus exigeant sur le poste client (vieux PC )

Note En anglais laquo Same Origin Policy raquo

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - AvantagesAjax - Avantages Reacuteponses rapides aux actions de lutilisateurReacuteponses rapides aux actions de lutilisateur

Applications Web riches rapides et leacutegegraveresApplications Web riches rapides et leacutegegraveres

Pas de long teacuteleacutechargement ni dinstallationPas de long teacuteleacutechargement ni dinstallation

Permet de modifier partiellement la page afficheacutee par le Permet de modifier partiellement la page afficheacutee par le

fureteur pour la mettre agrave jour sans avoir agrave recharger la page fureteur pour la mettre agrave jour sans avoir agrave recharger la page

entiegravereentiegravere

Reacuteduit la quantiteacute dinformation demandeacutee au serveurReacuteduit la quantiteacute dinformation demandeacutee au serveur

Fait davantage de traitement du cocircteacute client (en JavaScript) Fait davantage de traitement du cocircteacute client (en JavaScript)

et moins sur le serveur et le reacuteseauet moins sur le serveur et le reacuteseau

Donc eacuteconomie du serveur et de la bande passanteDonc eacuteconomie du serveur et de la bande passante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Architecture SOAArchitecture SOA

SOASOA

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA (Service Oriented Architecture) Architecture orienteacutee services SOA (Service Oriented Architecture) Architecture orienteacutee services

Baseacutee sur les services Web (WS) et les composants logicielsBaseacutee sur les services Web (WS) et les composants logiciels

Reprend les concepts du calcul distribueacuteReprend les concepts du calcul distribueacute

Un service eacutetablit une relation entre un composant producteur et unUn service eacutetablit une relation entre un composant producteur et un

composant consommateurcomposant consommateur

Application ensemble de services qui communiquent par des messagesApplication ensemble de services qui communiquent par des messages

Utilisation de messages laquo en format ouvert raquo le plus souvent en XMLUtilisation de messages laquo en format ouvert raquo le plus souvent en XML

Possibiliteacute dactivation par des eacuteveacutenementsPossibiliteacute dactivation par des eacuteveacutenements

Reacutegie selon des contrats deacutechangeReacutegie selon des contrats deacutechange

Souvent deacutefinie en termes de couches applicativesSouvent deacutefinie en termes de couches applicatives

Service synchrone ou asynchroneService synchrone ou asynchrone

Populaire dans le e-commerce (B2B et B2C) Populaire dans le e-commerce (B2B et B2C)

Plateformes JEE et NETPlateformes JEE et NET

Architecture SOAArchitecture SOA

Note une eacutevolution inteacuteressante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 7: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax (Asynchronous JavaScript amp XML)Ajax (Asynchronous JavaScript amp XML) Fini le peacutenible rechargement de pagesFini le peacutenible rechargement de pages Reacutealise des requecirctes asynchrones au serveur Reacutealise des requecirctes asynchrones au serveur

et fait la mise-agrave-jour de la page Web sans faire et fait la mise-agrave-jour de la page Web sans faire de chargement completde chargement complet

Applications Web plus reacuteactives et plus Applications Web plus reacuteactives et plus dynamiquesdynamiques

Objet XMLHttpRequest inventeacute par M$Objet XMLHttpRequest inventeacute par M$ Baseacute sur du code-client en JavaScriptBaseacute sur du code-client en JavaScript

AjaxAjax ndash Une veacuteritable perceacutee ndash Une veacuteritable perceacutee

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Ajax ndash Diagramme de collaborationDiagramme de collaboration

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Diagramme de seacutequenceAjax ndash Diagramme de seacutequence

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

En mode asynchrone lexeacutecution dans le fureteur sur le poste client se poursuit sans attendre la reacuteponse du serveur La reacuteponse sera traiteacutee par une fonction de retour (fonction Callback) quand elle arrivera Leacutetat de la requecircte est donneacute par lattribut readyState de lobjet XMLHttpRequest

En mode synchrone le fureteur est geleacute en attendant la reacuteponse du serveur

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - Avantages amp inconveacutenientsAjax - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - InconveacutenientsAjax - Inconveacutenients Effet laquo buzzword raquoEffet laquo buzzword raquo Problegravemes de compatibiliteacute entre les diffeacuterents fureteursProblegravemes de compatibiliteacute entre les diffeacuterents fureteurs Ne fonctionne pas si JavaScript est deacutesactiveacuteNe fonctionne pas si JavaScript est deacutesactiveacute Les donneacutees chargeacutees de faccedilon dynamique ne sont pas Les donneacutees chargeacutees de faccedilon dynamique ne sont pas

indexeacutees par les moteurs de rechercheindexeacutees par les moteurs de recherche Si le traitement du cocircteacute serveur est long le traitement Si le traitement du cocircteacute serveur est long le traitement

asynchrone dAjax fait que les changements se font avec un asynchrone dAjax fait que les changements se font avec un deacutelaideacutelai

Le bouton de retour en arriegravere lURL ne change pas et les Le bouton de retour en arriegravere lURL ne change pas et les signets ne fonctionnent passignets ne fonctionnent pas

Pas daccegraves en dehors du domaine du serveurPas daccegraves en dehors du domaine du serveur Plus exigeant sur le poste client (vieux PC ) Plus exigeant sur le poste client (vieux PC )

Note En anglais laquo Same Origin Policy raquo

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - AvantagesAjax - Avantages Reacuteponses rapides aux actions de lutilisateurReacuteponses rapides aux actions de lutilisateur

Applications Web riches rapides et leacutegegraveresApplications Web riches rapides et leacutegegraveres

Pas de long teacuteleacutechargement ni dinstallationPas de long teacuteleacutechargement ni dinstallation

Permet de modifier partiellement la page afficheacutee par le Permet de modifier partiellement la page afficheacutee par le

fureteur pour la mettre agrave jour sans avoir agrave recharger la page fureteur pour la mettre agrave jour sans avoir agrave recharger la page

entiegravereentiegravere

Reacuteduit la quantiteacute dinformation demandeacutee au serveurReacuteduit la quantiteacute dinformation demandeacutee au serveur

Fait davantage de traitement du cocircteacute client (en JavaScript) Fait davantage de traitement du cocircteacute client (en JavaScript)

et moins sur le serveur et le reacuteseauet moins sur le serveur et le reacuteseau

Donc eacuteconomie du serveur et de la bande passanteDonc eacuteconomie du serveur et de la bande passante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Architecture SOAArchitecture SOA

SOASOA

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA (Service Oriented Architecture) Architecture orienteacutee services SOA (Service Oriented Architecture) Architecture orienteacutee services

Baseacutee sur les services Web (WS) et les composants logicielsBaseacutee sur les services Web (WS) et les composants logiciels

Reprend les concepts du calcul distribueacuteReprend les concepts du calcul distribueacute

Un service eacutetablit une relation entre un composant producteur et unUn service eacutetablit une relation entre un composant producteur et un

composant consommateurcomposant consommateur

Application ensemble de services qui communiquent par des messagesApplication ensemble de services qui communiquent par des messages

Utilisation de messages laquo en format ouvert raquo le plus souvent en XMLUtilisation de messages laquo en format ouvert raquo le plus souvent en XML

Possibiliteacute dactivation par des eacuteveacutenementsPossibiliteacute dactivation par des eacuteveacutenements

Reacutegie selon des contrats deacutechangeReacutegie selon des contrats deacutechange

Souvent deacutefinie en termes de couches applicativesSouvent deacutefinie en termes de couches applicatives

Service synchrone ou asynchroneService synchrone ou asynchrone

Populaire dans le e-commerce (B2B et B2C) Populaire dans le e-commerce (B2B et B2C)

Plateformes JEE et NETPlateformes JEE et NET

Architecture SOAArchitecture SOA

Note une eacutevolution inteacuteressante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 8: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Ajax ndash Diagramme de collaborationDiagramme de collaboration

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Diagramme de seacutequenceAjax ndash Diagramme de seacutequence

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

En mode asynchrone lexeacutecution dans le fureteur sur le poste client se poursuit sans attendre la reacuteponse du serveur La reacuteponse sera traiteacutee par une fonction de retour (fonction Callback) quand elle arrivera Leacutetat de la requecircte est donneacute par lattribut readyState de lobjet XMLHttpRequest

En mode synchrone le fureteur est geleacute en attendant la reacuteponse du serveur

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - Avantages amp inconveacutenientsAjax - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - InconveacutenientsAjax - Inconveacutenients Effet laquo buzzword raquoEffet laquo buzzword raquo Problegravemes de compatibiliteacute entre les diffeacuterents fureteursProblegravemes de compatibiliteacute entre les diffeacuterents fureteurs Ne fonctionne pas si JavaScript est deacutesactiveacuteNe fonctionne pas si JavaScript est deacutesactiveacute Les donneacutees chargeacutees de faccedilon dynamique ne sont pas Les donneacutees chargeacutees de faccedilon dynamique ne sont pas

indexeacutees par les moteurs de rechercheindexeacutees par les moteurs de recherche Si le traitement du cocircteacute serveur est long le traitement Si le traitement du cocircteacute serveur est long le traitement

asynchrone dAjax fait que les changements se font avec un asynchrone dAjax fait que les changements se font avec un deacutelaideacutelai

Le bouton de retour en arriegravere lURL ne change pas et les Le bouton de retour en arriegravere lURL ne change pas et les signets ne fonctionnent passignets ne fonctionnent pas

Pas daccegraves en dehors du domaine du serveurPas daccegraves en dehors du domaine du serveur Plus exigeant sur le poste client (vieux PC ) Plus exigeant sur le poste client (vieux PC )

Note En anglais laquo Same Origin Policy raquo

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - AvantagesAjax - Avantages Reacuteponses rapides aux actions de lutilisateurReacuteponses rapides aux actions de lutilisateur

Applications Web riches rapides et leacutegegraveresApplications Web riches rapides et leacutegegraveres

Pas de long teacuteleacutechargement ni dinstallationPas de long teacuteleacutechargement ni dinstallation

Permet de modifier partiellement la page afficheacutee par le Permet de modifier partiellement la page afficheacutee par le

fureteur pour la mettre agrave jour sans avoir agrave recharger la page fureteur pour la mettre agrave jour sans avoir agrave recharger la page

entiegravereentiegravere

Reacuteduit la quantiteacute dinformation demandeacutee au serveurReacuteduit la quantiteacute dinformation demandeacutee au serveur

Fait davantage de traitement du cocircteacute client (en JavaScript) Fait davantage de traitement du cocircteacute client (en JavaScript)

et moins sur le serveur et le reacuteseauet moins sur le serveur et le reacuteseau

Donc eacuteconomie du serveur et de la bande passanteDonc eacuteconomie du serveur et de la bande passante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Architecture SOAArchitecture SOA

SOASOA

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA (Service Oriented Architecture) Architecture orienteacutee services SOA (Service Oriented Architecture) Architecture orienteacutee services

Baseacutee sur les services Web (WS) et les composants logicielsBaseacutee sur les services Web (WS) et les composants logiciels

Reprend les concepts du calcul distribueacuteReprend les concepts du calcul distribueacute

Un service eacutetablit une relation entre un composant producteur et unUn service eacutetablit une relation entre un composant producteur et un

composant consommateurcomposant consommateur

Application ensemble de services qui communiquent par des messagesApplication ensemble de services qui communiquent par des messages

Utilisation de messages laquo en format ouvert raquo le plus souvent en XMLUtilisation de messages laquo en format ouvert raquo le plus souvent en XML

Possibiliteacute dactivation par des eacuteveacutenementsPossibiliteacute dactivation par des eacuteveacutenements

Reacutegie selon des contrats deacutechangeReacutegie selon des contrats deacutechange

Souvent deacutefinie en termes de couches applicativesSouvent deacutefinie en termes de couches applicatives

Service synchrone ou asynchroneService synchrone ou asynchrone

Populaire dans le e-commerce (B2B et B2C) Populaire dans le e-commerce (B2B et B2C)

Plateformes JEE et NETPlateformes JEE et NET

Architecture SOAArchitecture SOA

Note une eacutevolution inteacuteressante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 9: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax ndash Diagramme de seacutequenceAjax ndash Diagramme de seacutequence

Source JJ Garrett 2005 - httpwwwadaptivepathcomideasessaysarchives000385php

En mode asynchrone lexeacutecution dans le fureteur sur le poste client se poursuit sans attendre la reacuteponse du serveur La reacuteponse sera traiteacutee par une fonction de retour (fonction Callback) quand elle arrivera Leacutetat de la requecircte est donneacute par lattribut readyState de lobjet XMLHttpRequest

En mode synchrone le fureteur est geleacute en attendant la reacuteponse du serveur

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - Avantages amp inconveacutenientsAjax - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - InconveacutenientsAjax - Inconveacutenients Effet laquo buzzword raquoEffet laquo buzzword raquo Problegravemes de compatibiliteacute entre les diffeacuterents fureteursProblegravemes de compatibiliteacute entre les diffeacuterents fureteurs Ne fonctionne pas si JavaScript est deacutesactiveacuteNe fonctionne pas si JavaScript est deacutesactiveacute Les donneacutees chargeacutees de faccedilon dynamique ne sont pas Les donneacutees chargeacutees de faccedilon dynamique ne sont pas

indexeacutees par les moteurs de rechercheindexeacutees par les moteurs de recherche Si le traitement du cocircteacute serveur est long le traitement Si le traitement du cocircteacute serveur est long le traitement

asynchrone dAjax fait que les changements se font avec un asynchrone dAjax fait que les changements se font avec un deacutelaideacutelai

Le bouton de retour en arriegravere lURL ne change pas et les Le bouton de retour en arriegravere lURL ne change pas et les signets ne fonctionnent passignets ne fonctionnent pas

Pas daccegraves en dehors du domaine du serveurPas daccegraves en dehors du domaine du serveur Plus exigeant sur le poste client (vieux PC ) Plus exigeant sur le poste client (vieux PC )

Note En anglais laquo Same Origin Policy raquo

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - AvantagesAjax - Avantages Reacuteponses rapides aux actions de lutilisateurReacuteponses rapides aux actions de lutilisateur

Applications Web riches rapides et leacutegegraveresApplications Web riches rapides et leacutegegraveres

Pas de long teacuteleacutechargement ni dinstallationPas de long teacuteleacutechargement ni dinstallation

Permet de modifier partiellement la page afficheacutee par le Permet de modifier partiellement la page afficheacutee par le

fureteur pour la mettre agrave jour sans avoir agrave recharger la page fureteur pour la mettre agrave jour sans avoir agrave recharger la page

entiegravereentiegravere

Reacuteduit la quantiteacute dinformation demandeacutee au serveurReacuteduit la quantiteacute dinformation demandeacutee au serveur

Fait davantage de traitement du cocircteacute client (en JavaScript) Fait davantage de traitement du cocircteacute client (en JavaScript)

et moins sur le serveur et le reacuteseauet moins sur le serveur et le reacuteseau

Donc eacuteconomie du serveur et de la bande passanteDonc eacuteconomie du serveur et de la bande passante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Architecture SOAArchitecture SOA

SOASOA

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA (Service Oriented Architecture) Architecture orienteacutee services SOA (Service Oriented Architecture) Architecture orienteacutee services

Baseacutee sur les services Web (WS) et les composants logicielsBaseacutee sur les services Web (WS) et les composants logiciels

Reprend les concepts du calcul distribueacuteReprend les concepts du calcul distribueacute

Un service eacutetablit une relation entre un composant producteur et unUn service eacutetablit une relation entre un composant producteur et un

composant consommateurcomposant consommateur

Application ensemble de services qui communiquent par des messagesApplication ensemble de services qui communiquent par des messages

Utilisation de messages laquo en format ouvert raquo le plus souvent en XMLUtilisation de messages laquo en format ouvert raquo le plus souvent en XML

Possibiliteacute dactivation par des eacuteveacutenementsPossibiliteacute dactivation par des eacuteveacutenements

Reacutegie selon des contrats deacutechangeReacutegie selon des contrats deacutechange

Souvent deacutefinie en termes de couches applicativesSouvent deacutefinie en termes de couches applicatives

Service synchrone ou asynchroneService synchrone ou asynchrone

Populaire dans le e-commerce (B2B et B2C) Populaire dans le e-commerce (B2B et B2C)

Plateformes JEE et NETPlateformes JEE et NET

Architecture SOAArchitecture SOA

Note une eacutevolution inteacuteressante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 10: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - Avantages amp inconveacutenientsAjax - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - InconveacutenientsAjax - Inconveacutenients Effet laquo buzzword raquoEffet laquo buzzword raquo Problegravemes de compatibiliteacute entre les diffeacuterents fureteursProblegravemes de compatibiliteacute entre les diffeacuterents fureteurs Ne fonctionne pas si JavaScript est deacutesactiveacuteNe fonctionne pas si JavaScript est deacutesactiveacute Les donneacutees chargeacutees de faccedilon dynamique ne sont pas Les donneacutees chargeacutees de faccedilon dynamique ne sont pas

indexeacutees par les moteurs de rechercheindexeacutees par les moteurs de recherche Si le traitement du cocircteacute serveur est long le traitement Si le traitement du cocircteacute serveur est long le traitement

asynchrone dAjax fait que les changements se font avec un asynchrone dAjax fait que les changements se font avec un deacutelaideacutelai

Le bouton de retour en arriegravere lURL ne change pas et les Le bouton de retour en arriegravere lURL ne change pas et les signets ne fonctionnent passignets ne fonctionnent pas

Pas daccegraves en dehors du domaine du serveurPas daccegraves en dehors du domaine du serveur Plus exigeant sur le poste client (vieux PC ) Plus exigeant sur le poste client (vieux PC )

Note En anglais laquo Same Origin Policy raquo

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - AvantagesAjax - Avantages Reacuteponses rapides aux actions de lutilisateurReacuteponses rapides aux actions de lutilisateur

Applications Web riches rapides et leacutegegraveresApplications Web riches rapides et leacutegegraveres

Pas de long teacuteleacutechargement ni dinstallationPas de long teacuteleacutechargement ni dinstallation

Permet de modifier partiellement la page afficheacutee par le Permet de modifier partiellement la page afficheacutee par le

fureteur pour la mettre agrave jour sans avoir agrave recharger la page fureteur pour la mettre agrave jour sans avoir agrave recharger la page

entiegravereentiegravere

Reacuteduit la quantiteacute dinformation demandeacutee au serveurReacuteduit la quantiteacute dinformation demandeacutee au serveur

Fait davantage de traitement du cocircteacute client (en JavaScript) Fait davantage de traitement du cocircteacute client (en JavaScript)

et moins sur le serveur et le reacuteseauet moins sur le serveur et le reacuteseau

Donc eacuteconomie du serveur et de la bande passanteDonc eacuteconomie du serveur et de la bande passante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Architecture SOAArchitecture SOA

SOASOA

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA (Service Oriented Architecture) Architecture orienteacutee services SOA (Service Oriented Architecture) Architecture orienteacutee services

Baseacutee sur les services Web (WS) et les composants logicielsBaseacutee sur les services Web (WS) et les composants logiciels

Reprend les concepts du calcul distribueacuteReprend les concepts du calcul distribueacute

Un service eacutetablit une relation entre un composant producteur et unUn service eacutetablit une relation entre un composant producteur et un

composant consommateurcomposant consommateur

Application ensemble de services qui communiquent par des messagesApplication ensemble de services qui communiquent par des messages

Utilisation de messages laquo en format ouvert raquo le plus souvent en XMLUtilisation de messages laquo en format ouvert raquo le plus souvent en XML

Possibiliteacute dactivation par des eacuteveacutenementsPossibiliteacute dactivation par des eacuteveacutenements

Reacutegie selon des contrats deacutechangeReacutegie selon des contrats deacutechange

Souvent deacutefinie en termes de couches applicativesSouvent deacutefinie en termes de couches applicatives

Service synchrone ou asynchroneService synchrone ou asynchrone

Populaire dans le e-commerce (B2B et B2C) Populaire dans le e-commerce (B2B et B2C)

Plateformes JEE et NETPlateformes JEE et NET

Architecture SOAArchitecture SOA

Note une eacutevolution inteacuteressante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 11: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - InconveacutenientsAjax - Inconveacutenients Effet laquo buzzword raquoEffet laquo buzzword raquo Problegravemes de compatibiliteacute entre les diffeacuterents fureteursProblegravemes de compatibiliteacute entre les diffeacuterents fureteurs Ne fonctionne pas si JavaScript est deacutesactiveacuteNe fonctionne pas si JavaScript est deacutesactiveacute Les donneacutees chargeacutees de faccedilon dynamique ne sont pas Les donneacutees chargeacutees de faccedilon dynamique ne sont pas

indexeacutees par les moteurs de rechercheindexeacutees par les moteurs de recherche Si le traitement du cocircteacute serveur est long le traitement Si le traitement du cocircteacute serveur est long le traitement

asynchrone dAjax fait que les changements se font avec un asynchrone dAjax fait que les changements se font avec un deacutelaideacutelai

Le bouton de retour en arriegravere lURL ne change pas et les Le bouton de retour en arriegravere lURL ne change pas et les signets ne fonctionnent passignets ne fonctionnent pas

Pas daccegraves en dehors du domaine du serveurPas daccegraves en dehors du domaine du serveur Plus exigeant sur le poste client (vieux PC ) Plus exigeant sur le poste client (vieux PC )

Note En anglais laquo Same Origin Policy raquo

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - AvantagesAjax - Avantages Reacuteponses rapides aux actions de lutilisateurReacuteponses rapides aux actions de lutilisateur

Applications Web riches rapides et leacutegegraveresApplications Web riches rapides et leacutegegraveres

Pas de long teacuteleacutechargement ni dinstallationPas de long teacuteleacutechargement ni dinstallation

Permet de modifier partiellement la page afficheacutee par le Permet de modifier partiellement la page afficheacutee par le

fureteur pour la mettre agrave jour sans avoir agrave recharger la page fureteur pour la mettre agrave jour sans avoir agrave recharger la page

entiegravereentiegravere

Reacuteduit la quantiteacute dinformation demandeacutee au serveurReacuteduit la quantiteacute dinformation demandeacutee au serveur

Fait davantage de traitement du cocircteacute client (en JavaScript) Fait davantage de traitement du cocircteacute client (en JavaScript)

et moins sur le serveur et le reacuteseauet moins sur le serveur et le reacuteseau

Donc eacuteconomie du serveur et de la bande passanteDonc eacuteconomie du serveur et de la bande passante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Architecture SOAArchitecture SOA

SOASOA

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA (Service Oriented Architecture) Architecture orienteacutee services SOA (Service Oriented Architecture) Architecture orienteacutee services

Baseacutee sur les services Web (WS) et les composants logicielsBaseacutee sur les services Web (WS) et les composants logiciels

Reprend les concepts du calcul distribueacuteReprend les concepts du calcul distribueacute

Un service eacutetablit une relation entre un composant producteur et unUn service eacutetablit une relation entre un composant producteur et un

composant consommateurcomposant consommateur

Application ensemble de services qui communiquent par des messagesApplication ensemble de services qui communiquent par des messages

Utilisation de messages laquo en format ouvert raquo le plus souvent en XMLUtilisation de messages laquo en format ouvert raquo le plus souvent en XML

Possibiliteacute dactivation par des eacuteveacutenementsPossibiliteacute dactivation par des eacuteveacutenements

Reacutegie selon des contrats deacutechangeReacutegie selon des contrats deacutechange

Souvent deacutefinie en termes de couches applicativesSouvent deacutefinie en termes de couches applicatives

Service synchrone ou asynchroneService synchrone ou asynchrone

Populaire dans le e-commerce (B2B et B2C) Populaire dans le e-commerce (B2B et B2C)

Plateformes JEE et NETPlateformes JEE et NET

Architecture SOAArchitecture SOA

Note une eacutevolution inteacuteressante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 12: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Ajax - AvantagesAjax - Avantages Reacuteponses rapides aux actions de lutilisateurReacuteponses rapides aux actions de lutilisateur

Applications Web riches rapides et leacutegegraveresApplications Web riches rapides et leacutegegraveres

Pas de long teacuteleacutechargement ni dinstallationPas de long teacuteleacutechargement ni dinstallation

Permet de modifier partiellement la page afficheacutee par le Permet de modifier partiellement la page afficheacutee par le

fureteur pour la mettre agrave jour sans avoir agrave recharger la page fureteur pour la mettre agrave jour sans avoir agrave recharger la page

entiegravereentiegravere

Reacuteduit la quantiteacute dinformation demandeacutee au serveurReacuteduit la quantiteacute dinformation demandeacutee au serveur

Fait davantage de traitement du cocircteacute client (en JavaScript) Fait davantage de traitement du cocircteacute client (en JavaScript)

et moins sur le serveur et le reacuteseauet moins sur le serveur et le reacuteseau

Donc eacuteconomie du serveur et de la bande passanteDonc eacuteconomie du serveur et de la bande passante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Architecture SOAArchitecture SOA

SOASOA

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA (Service Oriented Architecture) Architecture orienteacutee services SOA (Service Oriented Architecture) Architecture orienteacutee services

Baseacutee sur les services Web (WS) et les composants logicielsBaseacutee sur les services Web (WS) et les composants logiciels

Reprend les concepts du calcul distribueacuteReprend les concepts du calcul distribueacute

Un service eacutetablit une relation entre un composant producteur et unUn service eacutetablit une relation entre un composant producteur et un

composant consommateurcomposant consommateur

Application ensemble de services qui communiquent par des messagesApplication ensemble de services qui communiquent par des messages

Utilisation de messages laquo en format ouvert raquo le plus souvent en XMLUtilisation de messages laquo en format ouvert raquo le plus souvent en XML

Possibiliteacute dactivation par des eacuteveacutenementsPossibiliteacute dactivation par des eacuteveacutenements

Reacutegie selon des contrats deacutechangeReacutegie selon des contrats deacutechange

Souvent deacutefinie en termes de couches applicativesSouvent deacutefinie en termes de couches applicatives

Service synchrone ou asynchroneService synchrone ou asynchrone

Populaire dans le e-commerce (B2B et B2C) Populaire dans le e-commerce (B2B et B2C)

Plateformes JEE et NETPlateformes JEE et NET

Architecture SOAArchitecture SOA

Note une eacutevolution inteacuteressante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 13: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Architecture SOAArchitecture SOA

SOASOA

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA (Service Oriented Architecture) Architecture orienteacutee services SOA (Service Oriented Architecture) Architecture orienteacutee services

Baseacutee sur les services Web (WS) et les composants logicielsBaseacutee sur les services Web (WS) et les composants logiciels

Reprend les concepts du calcul distribueacuteReprend les concepts du calcul distribueacute

Un service eacutetablit une relation entre un composant producteur et unUn service eacutetablit une relation entre un composant producteur et un

composant consommateurcomposant consommateur

Application ensemble de services qui communiquent par des messagesApplication ensemble de services qui communiquent par des messages

Utilisation de messages laquo en format ouvert raquo le plus souvent en XMLUtilisation de messages laquo en format ouvert raquo le plus souvent en XML

Possibiliteacute dactivation par des eacuteveacutenementsPossibiliteacute dactivation par des eacuteveacutenements

Reacutegie selon des contrats deacutechangeReacutegie selon des contrats deacutechange

Souvent deacutefinie en termes de couches applicativesSouvent deacutefinie en termes de couches applicatives

Service synchrone ou asynchroneService synchrone ou asynchrone

Populaire dans le e-commerce (B2B et B2C) Populaire dans le e-commerce (B2B et B2C)

Plateformes JEE et NETPlateformes JEE et NET

Architecture SOAArchitecture SOA

Note une eacutevolution inteacuteressante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 14: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA (Service Oriented Architecture) Architecture orienteacutee services SOA (Service Oriented Architecture) Architecture orienteacutee services

Baseacutee sur les services Web (WS) et les composants logicielsBaseacutee sur les services Web (WS) et les composants logiciels

Reprend les concepts du calcul distribueacuteReprend les concepts du calcul distribueacute

Un service eacutetablit une relation entre un composant producteur et unUn service eacutetablit une relation entre un composant producteur et un

composant consommateurcomposant consommateur

Application ensemble de services qui communiquent par des messagesApplication ensemble de services qui communiquent par des messages

Utilisation de messages laquo en format ouvert raquo le plus souvent en XMLUtilisation de messages laquo en format ouvert raquo le plus souvent en XML

Possibiliteacute dactivation par des eacuteveacutenementsPossibiliteacute dactivation par des eacuteveacutenements

Reacutegie selon des contrats deacutechangeReacutegie selon des contrats deacutechange

Souvent deacutefinie en termes de couches applicativesSouvent deacutefinie en termes de couches applicatives

Service synchrone ou asynchroneService synchrone ou asynchrone

Populaire dans le e-commerce (B2B et B2C) Populaire dans le e-commerce (B2B et B2C)

Plateformes JEE et NETPlateformes JEE et NET

Architecture SOAArchitecture SOA

Note une eacutevolution inteacuteressante

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 15: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Lannuaire des services reacutefeacuterence tous les servicesLannuaire des services reacutefeacuterence tous les services

Le bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du serviceLe bus a un rocircle dintermeacutediaire entre le producteur et le consommateur du service

Un service peut impleacutementer plusieurs interfacesUn service peut impleacutementer plusieurs interfaces

Un service doit respecter un contrat (ou regravegles de fonctionnement)Un service doit respecter un contrat (ou regravegles de fonctionnement)

Architecture SOAArchitecture SOA

Source Wikipedia amp Dirk Krafzig Karl Banke and Dirk Slama Enterprise SOA Prentice Hall 2005

SOA

Interface dapplication Service Annuaire

des services Bus de service

ImpleacutementationContrat Interface

Logiquedaffaire Donneacutees

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 16: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Origine protocole de communication entre objets distribueacutes ORB (Object Origine protocole de communication entre objets distribueacutes ORB (Object

Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire Request Broker) comme CORBA DCOM et RMI (format proprieacutetaire

binaire lourdeur complexiteacute)binaire lourdeur complexiteacute)

Ideacutee HTTP et XMLIdeacutee HTTP et XML

XML-RPC un protocole de service web simple preacutecurseur de SOAP qui XML-RPC un protocole de service web simple preacutecurseur de SOAP qui

est agrave la base de plusieurs APIs pour les services de bloguesest agrave la base de plusieurs APIs pour les services de blogues

SOAP (Simple Object Access Protocol) avec WSDL (Web Services SOAP (Simple Object Access Protocol) avec WSDL (Web Services

Description language) invocation du service selon le protocole SOAPDescription language) invocation du service selon le protocole SOAP

SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance SOAP est passeacute de simple agrave complexe par leffet combineacute dune tendance

agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la agrave concevoir pour reacutesoudre tous les problegravemes (over-engineered) et de la

conception par comiteacuteconception par comiteacute

RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le RPC (Remote Procedure Call) est baseacute sur leacutechange dobjets entre le

client et le serveurclient et le serveur

REST retour aux sourcesREST retour aux sources

Services WebServices Web

Note CORBA est un bel exemple de conception par comiteacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 17: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA - Avantages amp inconveacutenientsSOA - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 18: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

laquo Pheacutenomegravene de mode raquolaquo Pheacutenomegravene de mode raquo

Tendance agrave la multiplication des couches et des messagesTendance agrave la multiplication des couches et des messages

Difficile agrave testerDifficile agrave tester

Problegraveme de coordination ou orchestration entre les divers servicesProblegraveme de coordination ou orchestration entre les divers services

Problegraveme de seacutecuriteacuteProblegraveme de seacutecuriteacute

Problegraveme de reacuteelle interopeacuterabiliteacuteProblegraveme de reacuteelle interopeacuterabiliteacute

On constate une certaine lourdeur et de la complexiteacuteOn constate une certaine lourdeur et de la complexiteacute

SOAP est lourd et complexeSOAP est lourd et complexe

Difficile dimaginer des communications SOAP directe avec uneDifficile dimaginer des communications SOAP directe avec une

application Web au niveau fureteur (client-centric) Pas de service SOAPapplication Web au niveau fureteur (client-centric) Pas de service SOAP

dans un client JavaScriptdans un client JavaScript

SOA - InconveacutenientsSOA - Inconveacutenients

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 19: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Couplage faibleCouplage faible

Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs Favorise les eacutechanges entre toutes sortes de logiciels peu importe leurs

langages de programmationlangages de programmation

Favorise la reacuteutilisationFavorise la reacuteutilisation

Favorise linteropeacuterabiliteacuteFavorise linteropeacuterabiliteacute

Favorise une reacuteponse et une adaptation plus rapides des systegravemes Favorise une reacuteponse et une adaptation plus rapides des systegravemes

informatiques aux changements dans lenvironnement technologiqueinformatiques aux changements dans lenvironnement technologique

SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des SOAP offre des possibiliteacutes eacutetendues pour le traitement seacutecuritaire des

transactionstransactions

SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event SOA ouvre la voie agrave des architectures Web agrave base deacuteveacutenements (Event

Driven)Driven)

SOA - AvantagesSOA - Avantages

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 20: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

SOA et Web 20 ont beaucoup deacuteleacutements en communSOA et Web 20 ont beaucoup deacuteleacutements en commun

Vision commune dun Internet des servicesVision commune dun Internet des services

Reacutepondent agrave des besoins et des clientegraveles diffeacuterentesReacutepondent agrave des besoins et des clientegraveles diffeacuterentes

Il y a beaucoup de potentiel agrave combiner les technologies et les principes Il y a beaucoup de potentiel agrave combiner les technologies et les principes

du Web 20 et de larchitecture SOAdu Web 20 et de larchitecture SOA

Programmation eacuteveacutenementielle ou agrave base deacuteveacutenementsProgrammation eacuteveacutenementielle ou agrave base deacuteveacutenements

SOA amp Web 20SOA amp Web 20

Note le plus souvent en XML

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 21: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL - XSLTXSL - XSLT

XSL XSLTXSL XSLT

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 22: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

XSL (eXtensible Stylesheet Language)XSL (eXtensible Stylesheet Language)

XSLT (XML Stylesheet Language for Transformations) transforme un XSLT (XML Stylesheet Language for Transformations) transforme un

document source baliseacute (XML) en un second document (geacuteneacuteralement document source baliseacute (XML) en un second document (geacuteneacuteralement

baliseacute lui-aussi) baliseacute lui-aussi)

Technologies dextraction et de transformation des donneacuteesTechnologies dextraction et de transformation des donneacutees

Peu valoriseacutees agrave limage des bases de donneacutees mais essentiellesPeu valoriseacutees agrave limage des bases de donneacutees mais essentielles

Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre Les documents obtenus par Ajax sont souvent trop complexes pour ecirctre

traiteacutees laquo manuellement raquo agrave partir de lAPI DOMtraiteacutees laquo manuellement raquo agrave partir de lAPI DOM

Utilisation de lextraction XPath ou des transformations XSLT pour obtenir Utilisation de lextraction XPath ou des transformations XSLT pour obtenir

des donneacutees utilesdes donneacutees utiles

XSL XSLTXSL XSLT

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 23: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

entreeD1xmlentreeD1xml

ltxml version=10gtltxml version=10gt

ltdocgtBonjour XSLTltdocgtltdocgtBonjour XSLTltdocgt

D1versD2xslD1versD2xsl

ltxml version=10gt ltxml version=10gt

ltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gtltxslstylesheet xmlnsxsl=httpwwww3org1999XSLTransform version=10gt

ltxsltemplate match=docgtltxsltemplate match=docgt

ltoutgtltxslvalue-of select=gtltoutgtltoutgtltxslvalue-of select=gtltoutgt

ltxsltemplategtltxsltemplategt

ltxslstylesheetgtltxslstylesheetgt

sortieD2xmlsortieD2xml

ltxml version=10gtltxml version=10gt

ltoutgtBonjour XSLTltoutgtltoutgtBonjour XSLTltoutgt

XSL XSLT ndash Petit eXSL XSLT ndash Petit exemplexemple

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 24: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

import javaxxmltransformimport javaxxmltransform

Utilisation de linterface TraX pour reacutealiser une transformation Utilisation de linterface TraX pour reacutealiser une transformation

de la la maniegravere la plus simple possible en trois instructions de la la maniegravere la plus simple possible en trois instructions

public class TransformDOC1versDOC2 public class TransformDOC1versDOC2

public static void main(String[] args) throws TransformerException public static void main(String[] args) throws TransformerException

TransformerConfigurationException FileNotFoundException IOException TransformerConfigurationException FileNotFoundException IOException

if (argslength = 3 || args[0]equals(--aide)) if (argslength = 3 || args[0]equals(--aide))

Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)Systemoutprintln(java TransformDOC1versDOC2 D1versD2xsl entreeD1xml sortieD2xml)

returnreturn

TransformerFactory transFact = TransformerFactorynewInstance() TransformerFactory transFact = TransformerFactorynewInstance()

Transformer transformer = transFactnewTransformer(new StreamSource(args[0])) Transformer transformer = transFactnewTransformer(new StreamSource(args[0]))

transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2]))) transformertransform(new StreamSource(args[1]) new StreamResult(new FileOutputStream(args[2])))

XSL XSLT ndash Un peu de codeXSL XSLT ndash Un peu de code

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 25: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Du cocircteacute serveur JAXP Du cocircteacute serveur JAXP (Java API for XML Processing) (Java API for XML Processing)

Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java Traitement du XML (validation analyse transformation) qui regroupe un ensemble doutils Java

pour le traitement du XML dont lanalyseur (parser) Xercespour le traitement du XML dont lanalyseur (parser) Xerces

JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML JAXP regroupe les deux principales interfaces danalyse (parsage) de documents XML

DOM (Document Object Model) qui construit un arbre en meacutemoireDOM (Document Object Model) qui construit un arbre en meacutemoire

SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement SAX (Simple API for XML) qui base son analyse sur le deacuteclenchement

deacuteveacutenements (et eacutevocation de fonctions callback)deacuteveacutenements (et eacutevocation de fonctions callback)

API de transformation XSLT qui sappuie sur le moteur de transformation XalanAPI de transformation XSLT qui sappuie sur le moteur de transformation Xalan

Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base Depuis Java 5 JAXP est inclus dans le JDK et fait donc partie du langage Java de base

Autres ressources serveurs JDOM dom4j et StAXAutres ressources serveurs JDOM dom4j et StAX

Du cocircteacute client la bibliothegraveque JavaScript Google AjaxSLTDu cocircteacute client la bibliothegraveque JavaScript Google AjaxSLT

httpgoog-ajaxsltsourceforgenethttpgoog-ajaxsltsourceforgenet

XSL XSLT - outilsXSL XSLT - outils

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 26: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSONJSON

JSONJSON

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 27: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JSON JavaScript Object NotationJSON JavaScript Object Notation

Notation beaucoup plus compacte que le XMLNotation beaucoup plus compacte que le XML

=gt consomme moins de bande passante=gt consomme moins de bande passante

Directement interpreacutetable par JavaScriptDirectement interpreacutetable par JavaScript

=gt demande moins de traitement=gt demande moins de traitement

On assiste au deacuteveloppement dun ensemble doutils pour JSON qui sontOn assiste au deacuteveloppement dun ensemble doutils pour JSON qui sont

directement inspireacutes de ce qui existe deacutejagrave pour XMLdirectement inspireacutes de ce qui existe deacutejagrave pour XML

httpwwwjsonorgjson-frhtmlhttpwwwjsonorgjson-frhtml

JSONJSON

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 28: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

JavaScript ndash Notation JSONJavaScript ndash Notation JSONUn prototype JavaScript en notation JSON commence par Un prototype JavaScript en notation JSON commence par et se termine par et se termine par Il Il

contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est contient un ensemble de couples attributvaleur non ordonneacutes Chaque attribut est suivi de suivi de et les couples attributvaleur sont seacutepareacutes par une et les couples attributvaleur sont seacutepareacutes par une

var auto = var auto =

fabricantfabricant ToyotaToyota

modele Priusmodele Prius

couleur vertcouleur vert

proprio proprio

nom = Lynenom = Lyne

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 29: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSSRSS

RSSRSS

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 30: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Fil flux ou canal RSS syndication de contenuFil flux ou canal RSS syndication de contenu

Inventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave WinerInventeacute chez Netscape en 1999 puis ameacutelioreacute par Dave Winer

RSS Really Simple Syndication (agrave lorigine RDF Site Summary)RSS Really Simple Syndication (agrave lorigine RDF Site Summary)

Ajouter facilement des contenus de dautres sites (syndication)Ajouter facilement des contenus de dautres sites (syndication)

Baseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URLBaseacute sur le XML le RSS deacutefinit une liste ditems de contenu avec une URL

par item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenupar item accompagneacutee de meacutetadonneacutees qui deacutecrivent le contenu

Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles Utiliseacute pour du contenu qui change freacutequemment (diffusion de nouvelles

cours de la bourse meacuteteacuteo)cours de la bourse meacuteteacuteo)

Afficher les nouveauteacutes dun blogue (billets reacutecents)Afficher les nouveauteacutes dun blogue (billets reacutecents)

Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)Baladodiffusion audio (flux RSS audio) et videacuteo (flux RSS videacuteo)

Disponible par abonnementDisponible par abonnement

httpfrwikipediaorgwikiRSS_(formathttpfrwikipediaorgwikiRSS_(format))

httpcyberlawharvardedurssrsshtmlhttpcyberlawharvardedurssrsshtml

RSSRSS

RDF Resource Description Framework agrave la base du Web seacutemantique

>>>endobj217 0 obj<<>>>endobj218 0 obj<<>>>endobj219 0 obj<<>>>endobj220 0 obj<<>>>endobj221 0 obj<<>>>endobj325 0 obj<>endobj326 0 obj<CreatorProducerCreationDate(D20081124045831-0500)>>endobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailer<<27BBFCD65948B8FD7185A18262912240><27BBFCD65948B8FD7185A18262912240> ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76>>startxref1016878EOF>httpfrwikipediaorgwikiRSS_5C(format)gtgtgtgtendobj217 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3961 3741 4154]AltltTypeActionSURIURI(httpjavadzonecomarticlesintro-rest)gtgtgtgtendobj218 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[447 3648 4351 3841]AltltTypeActionSURIURI(httpjavadzonecomarticlesputting-java-rest)gtgtgtgtendobj219 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 1579 4413 1796]AltltTypeActionSURIURI(httpmailgooglecommailhelpchathtml)gtgtgtgtendobj220 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[4529 1579 6105 1796]AltltTypeActionSURIURI(httpwwwmeebocom)gtgtgtgtendobj221 0 objltltTypeAnnotSubtypeLinkBorder[0 0 0]Rect[42 4003 6592 4196]AltltTypeActionSURIURI(httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ)gtgtgtgtendobj325 0 objltltTypeCatalogPages 222 0 ROpenAction[1 0 R XYZ null null 0]Outlines 265 0 Rgtgtendobj326 0 objltltAuthorltFEFF0043006C006100750064006500200043006F0075006C006F006D00620065gtCreatorltFEFF0049006D00700072006500730073gtProducerltFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030gtCreationDate(D20081124045831-0500)gtgtendobjxref0 3270000000000 65535 f 0000997499 00000 n 0000000019 00000 n 0000006275 00000 n 0000007078 00000 n 0000006296 00000 n 0000006832 00000 n 0000006852 00000 n 0000007059 00000 n 0000009151 00000 n 0000009416 00000 n 0000997645 00000 n 0000009436 00000 n 0000014062 00000 n 0000174028 00000 n 0000014084 00000 n 0000175732 00000 n 0000175998 00000 n 0000997793 00000 n 0000176018 00000 n 0000180903 00000 n 0000997941 00000 n 0000180925 00000 n 0000186300 00000 n 0000186322 00000 n 0000188373 00000 n 0000188393 00000 n 0000188586 00000 n 0000998089 00000 n 0000188606 00000 n 0000193255 00000 n 0000193277 00000 n 0000231735 00000 n 0000231758 00000 n 0000240973 00000 n 0000998237 00000 n 0000240995 00000 n 0000248476 00000 n 0000248498 00000 n 0000303270 00000 n 0000312809 00000 n 0000998385 00000 n 0000312831 00000 n 0000318072 00000 n 0000998533 00000 n 0000318094 00000 n 0000322869 00000 n 0000322891 00000 n 0000998681 00000 n 0000375096 00000 n 0000380403 00000 n 0000380425 00000 n 0000998829 00000 n 0000433120 00000 n 0000437770 00000 n 0000437792 00000 n 0000464433 00000 n 0000473406 00000 n 0000998977 00000 n 0000473428 00000 n 0000478994 00000 n 0000999125 00000 n 0000479016 00000 n 0000484357 00000 n 0000999273 00000 n 0000484379 00000 n 0000489058 00000 n 0000999421 00000 n 0000489080 00000 n 0000494907 00000 n 0000999569 00000 n 0000494929 00000 n 0000501570 00000 n 0000999717 00000 n 0000501592 00000 n 0000507632 00000 n 0000999865 00000 n 0000507654 00000 n 0000512304 00000 n 0001000013 00000 n 0000512326 00000 n 0000517895 00000 n 0001000161 00000 n 0000517917 00000 n 0000523449 00000 n 0001000309 00000 n 0000523471 00000 n 0000528719 00000 n 0001000457 00000 n 0000528741 00000 n 0000533419 00000 n 0001000605 00000 n 0000533441 00000 n 0000538920 00000 n 0001000753 00000 n 0000538942 00000 n 0000544371 00000 n 0001000901 00000 n 0000544393 00000 n 0000550444 00000 n 0001001049 00000 n 0000550466 00000 n 0000556598 00000 n 0001001218 00000 n 0000556621 00000 n 0000561284 00000 n 0001001368 00000 n 0000561307 00000 n 0000566565 00000 n 0001001518 00000 n 0000566588 00000 n 0000572110 00000 n 0001001668 00000 n 0000572133 00000 n 0000576784 00000 n 0001001818 00000 n 0000576807 00000 n 0000582941 00000 n 0000583975 00000 n 0000583498 00000 n 0000582964 00000 n 0000583476 00000 n 0000583953 00000 n 0000587975 00000 n 0001001987 00000 n 0000587998 00000 n 0000594280 00000 n 0001002137 00000 n 0000594303 00000 n 0000599670 00000 n 0000599693 00000 n 0000615039 00000 n 0001002287 00000 n 0000615063 00000 n 0000620787 00000 n 0001002437 00000 n 0000620810 00000 n 0000625465 00000 n 0001002587 00000 n 0000625488 00000 n 0000630696 00000 n 0001002737 00000 n 0000630719 00000 n 0000636056 00000 n 0001002887 00000 n 0000636079 00000 n 0000640736 00000 n 0001003037 00000 n 0000640759 00000 n 0000646464 00000 n 0001003187 00000 n 0000646487 00000 n 0000652467 00000 n 0001003337 00000 n 0000652490 00000 n 0000657148 00000 n 0001003487 00000 n 0000657171 00000 n 0000663689 00000 n 0001003637 00000 n 0000663712 00000 n 0000669338 00000 n 0001003787 00000 n 0000669361 00000 n 0000675338 00000 n 0001003937 00000 n 0000675361 00000 n 0000681151 00000 n 0001004087 00000 n 0000681174 00000 n 0000686340 00000 n 0001004237 00000 n 0000686363 00000 n 0000691566 00000 n 0000691589 00000 n 0001004414 00000 n 0000707511 00000 n 0000712167 00000 n 0001004564 00000 n 0000712190 00000 n 0000717215 00000 n 0001004714 00000 n 0000717238 00000 n 0000721937 00000 n 0001004864 00000 n 0000721960 00000 n 0000726638 00000 n 0001005014 00000 n 0000726661 00000 n 0000731779 00000 n 0001005164 00000 n 0000731802 00000 n 0000738033 00000 n 0001005314 00000 n 0000738056 00000 n 0000762276 00000 n 0001005464 00000 n 0000762300 00000 n 0000766959 00000 n 0001005614 00000 n 0000766982 00000 n 0000772832 00000 n 0001005791 00000 n 0000772855 00000 n 0000777850 00000 n 0000777873 00000 n 0001005941 00000 n 0000847326 00000 n 0000853450 00000 n 0001006091 00000 n 0000853473 00000 n 0000858421 00000 n 0001006260 00000 n 0000858444 00000 n 0000865684 00000 n 0001015364 00000 n 0001015519 00000 n 0001015681 00000 n 0001015843 00000 n 0001016012 00000 n 0001016173 00000 n 0001016316 00000 n 0001014820 00000 n 0000865707 00000 n 0000870811 00000 n 0000870834 00000 n 0000871030 00000 n 0000871323 00000 n 0000871494 00000 n 0000882982 00000 n 0000883006 00000 n 0000883201 00000 n 0000883598 00000 n 0000883852 00000 n 0000897162 00000 n 0000897186 00000 n 0000897397 00000 n 0000897771 00000 n 0000898018 00000 n 0000907388 00000 n 0000907411 00000 n 0000907600 00000 n 0000908002 00000 n 0000908257 00000 n 0000923034 00000 n 0000923058 00000 n 0000923249 00000 n 0000923670 00000 n 0000923940 00000 n 0000942905 00000 n 0000942929 00000 n 0000943120 00000 n 0000943869 00000 n 0000944446 00000 n 0000981755 00000 n 0000981779 00000 n 0000981980 00000 n 0000982590 00000 n 0000983046 00000 n 0000996302 00000 n 0000996326 00000 n 0000996532 00000 n 0000996876 00000 n 0000997093 00000 n 0000997206 00000 n 0001006410 00000 n 0001006470 00000 n 0001006594 00000 n 0001006732 00000 n 0001006870 00000 n 0001007008 00000 n 0001007146 00000 n 0001007284 00000 n 0001007422 00000 n 0001007560 00000 n 0001007698 00000 n 0001007840 00000 n 0001007982 00000 n 0001008124 00000 n 0001008266 00000 n 0001008408 00000 n 0001008550 00000 n 0001008692 00000 n 0001008834 00000 n 0001008976 00000 n 0001009118 00000 n 0001009260 00000 n 0001009402 00000 n 0001009544 00000 n 0001009686 00000 n 0001009828 00000 n 0001009971 00000 n 0001010114 00000 n 0001010257 00000 n 0001010400 00000 n 0001010543 00000 n 0001010686 00000 n 0001010829 00000 n 0001010972 00000 n 0001011115 00000 n 0001011258 00000 n 0001011401 00000 n 0001011544 00000 n 0001011687 00000 n 0001011830 00000 n 0001011973 00000 n 0001012116 00000 n 0001012259 00000 n 0001012402 00000 n 0001012545 00000 n 0001012688 00000 n 0001012831 00000 n 0001012974 00000 n 0001013117 00000 n 0001013260 00000 n 0001013403 00000 n 0001013546 00000 n 0001013689 00000 n 0001013832 00000 n 0001013975 00000 n 0001014118 00000 n 0001014261 00000 n 0001014404 00000 n 0001014547 00000 n 0001014690 00000 n 0001016507 00000 n 0001016612 00000 n trailerltltSize 327Root 325 0 RInfo 326 0 RID [ lt27BBFCD65948B8FD7185A18262912240gtlt27BBFCD65948B8FD7185A18262912240gt ]DocChecksum A9CF45E4AF7E919E21D98BCD94CF3F76gtgtstartxref1016878EOF

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 31: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre Contenu entre les balises ltrssgt meacutetadonneacutees entre les balises ltchannelgt lttitlegt le titre de litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litemde litem ltdescriptiongt description de litem ltlinkgt lURL du site associeacute agrave litem

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltrss version=20gtltrss version=20gt

ltchannelgtltchannelgt

lttitlegtFil RSS (creacuteeacute avec Rome)lttitlegtlttitlegtFil RSS (creacuteeacute avec Rome)lttitlegt

ltlinkgthttpromedevjavanetltlinkgtltlinkgthttpromedevjavanetltlinkgt

ltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongtltdescriptiongtCe fil RSS a eacuteteacute creacuteeacute avec Rome (utilitaire Java de syndication RSS)ltdescriptiongt

ltitemgtltitemgt

lttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtLe Bic - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltlinkgthttpwwwmareesgccacgi-bintide-shccgiltlinkgthttpwwwmareesgccacgi-bintide-shccgi

queryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgtqueryType=showFramesetampampzone=2ampamplanguage=frenchampampregion=4ampampstnnum=2995ltlinkgt

ltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongtltdescriptiongtExtraction du contenu de la table des mareacuteesltdescriptiongt

ltitemgtltitemgt

ltitemgtltitemgt

lttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegtlttitlegtCacouna - Preacutedictions des mareacutees pour 7 jourslttitlegt

ltitemgtltitemgt

ltchannelgtltchannelgt

ltrssgtltrssgt

RSS 20RSS 20

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 32: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS ndash baladodiffusionRSS ndash baladodiffusion

Source httpfrwikipediaorgwikiPodcast

La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux La baladodiffusion (podcast) qui est la diffusion de contenu multimeacutedia est baseacutee sur les flux

RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier RSS Le logiciel de recherche de baladodiffusion teacuteleacutecharge automatiquement le fichier

multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt multimeacutedia associeacute agrave litem du flux RSS Utilisation de la balise ltenclosuregt

ltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gtltenclosure url=httpwwwradioorgbaladoexemplemp3 length=3968800 type=audiompeg gt

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 33: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code ROME Rss and atOM utilitiEs une excellente bibliothegraveque Java en code

source libre qui se base sur JDOMsource libre qui se base sur JDOM

Support de toutes les versions de RSS et dAtomSupport de toutes les versions de RSS et dAtom

Analyse geacuteneacuteration et conversion de flux RSS dun format agrave lautreAnalyse geacuteneacuteration et conversion de flux RSS dun format agrave lautre

Sorties vers String File javaioWriter orgw3cdomDocumentSorties vers String File javaioWriter orgw3cdomDocument

orgjdomDocumentorgjdomDocument

Entreacutees depuis File javaioReader orgxmlsaxInputSource Entreacutees depuis File javaioReader orgxmlsaxInputSource

orgw3cdomDocument orgjdomDocument objectorgw3cdomDocument orgjdomDocument object

Un ensemble de modules iTunes A9 Open Search Google Base etcUn ensemble de modules iTunes A9 Open Search Google Base etc

httpsromedevjavanethttpsromedevjavanet

ROMEROME

RDF Resource Description Framework

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 34: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RSS - Avantages amp inconveacutenientsRSS - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 35: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Linformation eacutetant rafraicircchie reacuteguliegraverement lusager peutLinformation eacutetant rafraicircchie reacuteguliegraverement lusager peut

manquer une nouvelle importantemanquer une nouvelle importante

Geacuteneacuteralement pas darchivageGeacuteneacuteralement pas darchivage

Surabondance dinformation (infobeacutesiteacute)Surabondance dinformation (infobeacutesiteacute)

Accent sur la nouveauteacute pas sur lanalyse et la reacuteflexionAccent sur la nouveauteacute pas sur lanalyse et la reacuteflexion

La licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacuteLa licence RSS 20 appartient agrave la faculteacute de droit de lUniversiteacute

HarvardHarvard

RSS - InconveacutenientsRSS - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 36: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Usager permet decirctre informeacute dun contenu sans aller leUsager permet decirctre informeacute dun contenu sans aller le

consulterconsulter

Diffuseur attirer des visiteurs syndiquer (partager des Diffuseur attirer des visiteurs syndiquer (partager des

contenus) recyclagereacuteutillisation des contenuscontenus) recyclagereacuteutillisation des contenus

Bon pour la veille pour suivre lactualiteacute ou tenir informer des Bon pour la veille pour suivre lactualiteacute ou tenir informer des

nouveauteacutesnouveauteacutes

Gracircce aux CSS lapparence peut ecirctre personnaliseacuteeGracircce aux CSS lapparence peut ecirctre personnaliseacutee

Reacuteutiliser le contenu issu dun autre site tout en personnalisant laReacuteutiliser le contenu issu dun autre site tout en personnalisant la

preacutesentationpreacutesentation

RSS - AvantagesRSS - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 37: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

AtomAtom

AtomAtom

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 38: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Atom est un format de syndication creacuteeacute en 2003 pour combiner la Atom est un format de syndication creacuteeacute en 2003 pour combiner la

simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant simpliciteacute de RSS 20 (ie non baseacute sur RDF) mais en conservant

certains aspects de RSS 10 comme lespace de nommagecertains aspects de RSS 10 comme lespace de nommage

Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering Norme non proprieacutetaire accreacutediteacute par lIETF (Internet Engineering

Task Force)Task Force)

Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de Creacuteeacutee en reacuteaction au format RSS 20 qui appartient agrave la faculteacute de

droit de lUniversiteacute Harvarddroit de lUniversiteacute Harvard

Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10Atom 03 est plus reacutepandu mais la derniegravere version est Atom 10

Atom sert dAPI standard pour les blogues (Atom Publishing Atom sert dAPI standard pour les blogues (Atom Publishing

Protocol)Protocol)

Choisi par Google pour BloggerChoisi par Google pour Blogger

Propose un API REST (Atom Publishing Protocol)Propose un API REST (Atom Publishing Protocol)

httptoolsietforghtmlrfc4287httptoolsietforghtmlrfc4287

AtomAtom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 39: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

ltxml version=10 encoding=UTF-8gtltxml version=10 encoding=UTF-8gt

ltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gtltfeed xmlns=httppurlorgatomns xmlnsdc=httppurlorgdcelements11 version=03gt

lttitlegtSample Feed (created with Rome)lttitlegtlttitlegtSample Feed (created with Rome)lttitlegt

ltlink rel=alternate href=httpromedevjavanet gtltlink rel=alternate href=httpromedevjavanet gt

lttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegtlttaglinegtThis feed has been created using Rome (Java syndication utilitieslttaglinegt

ltentrygtltentrygt

lttitlegtRome v10lttitlegtlttitlegtRome v10lttitlegt

ltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gtltlink rel=alternate href=httpwikijavanetbinviewJavawsxmlRome01 gt

ltauthorgtltauthorgt

ltname gtltname gt

ltauthorgtltauthorgt

ltmodifiedgt2004-06-08T040000Zltmodifiedgtltmodifiedgt2004-06-08T040000Zltmodifiedgt

ltissuedgt2004-06-08T040000Zltissuedgtltissuedgt2004-06-08T040000Zltissuedgt

ltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygtltsummary type=textplain mode=escapedgtInitial release of Romeltsummarygt

ltdcdategt2004-06-08T040000Zltdcdategtltdcdategt2004-06-08T040000Zltdcdategt

ltentrygtltentrygt

ltfeedgtltfeedgt

Atom ndash Exemple de flux AtomAtom ndash Exemple de flux Atom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 40: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTREST

RESTREST

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 41: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page Pour des raisons de seacutecuriteacute un script JavaScript provenant dune page

donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme donneacutee na accegraves quagrave des objets JavaScript qui sont issus du mecircme

domaine que la page doriginedomaine que la page dorigine

La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996 La fameuse laquo Same Origin Policy raquo apparue avec Netscape 2 en 1996

Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation Lideacutee est dempecirccher quun script malicieux ait accegraves agrave de linformation

confidentielle contenue dans une autre page confidentielle contenue dans une autre page

Il est cependant possible dacceacuteder agrave un domaine apparenteacuteIl est cependant possible dacceacuteder agrave un domaine apparenteacute

Par exemple soit lURL dorigine Par exemple soit lURL dorigine httpwwwabccomdirpagehtmlhttpwwwabccomdirpagehtml

Contrainte de seacutecuriteacute SOPContrainte de seacutecuriteacute SOP

httpwwwabccomdir2page2html autoriseacute mecircme domaine

httpswwwabccomdir2page2html refuseacute protocole diffeacuterent

httpwwwabccom81dir2page2html refuseacute port diffeacuterent

httpwwwabccomdir2dir3page3html autoriseacute mecircme domaine

httpabccomdirpage2html refuseacute domaine diffeacuterent

Note qui roule dans un bac de sable (sandbox) Note qui roule dans un bac de sable (sandbox)

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 42: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux Les applications Web centreacutees client requiegraverent un accegraves eacutelargi aux

services heacutebergeacutes sur dautres serveursservices heacutebergeacutes sur dautres serveurs

Script signeacuteScript signeacute

laquo couche proxy raquo sur le serveur puisque le serveur na pas les laquo couche proxy raquo sur le serveur puisque le serveur na pas les

contraintes de seacutecuriteacute du fureteurcontraintes de seacutecuriteacute du fureteur

Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page Le fureteur napplique pas la regravegle SOP agrave toutes les ressources dune page

Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un Web Par exemple une balise ltimggt peut reacutefeacuterer agrave une URL dans un

autre domaineautre domaine

On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage On peut aussi contourner la regravegle de seacutecuriteacute SOP en prenant avantage

de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est de la balise ltscriptgt Une balise ltscriptgt peut reacutefeacuterer agrave un code qui est

sur une autre page Cependant il faut pouvoir faire confiance agrave ce scriptsur une autre page Cependant il faut pouvoir faire confiance agrave ce script

Contournement de la regravegle SOPContournement de la regravegle SOP

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 43: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

RESTRESTREST (REpresentational State Transfer) REST (REpresentational State Transfer)

Repose sur la notion de ressourcesRepose sur la notion de ressources

Pas de gestion deacutetat (stateless)Pas de gestion deacutetat (stateless)

Chaque ressource est accessible via une URI uniqueChaque ressource est accessible via une URI unique

Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base Chaque ressource reacutepond agrave un ensemble de commandes HTTP de base qui correspondent aux opeacuteations classiques dites CRUDqui correspondent aux opeacuteations classiques dites CRUD

Un ensemble de types de contenus MIME en requecircte et en reacuteponseUn ensemble de types de contenus MIME en requecircte et en reacuteponse

ndash

HTTP CRUD Opeacuteration

POSTPOST CREATECREATE creacuteationcreacuteation

GETGET READREAD lecturelecture

PUTPUT UPDATEUPDATE mise agrave jourmise agrave jour

DELETEDELETE DELETEDELETE suppressionsuppression

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 44: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet JAX-RS (JSR-311)Projet JAX-RS (JSR-311)

httpcwikiapacheorgCXF20DOCjax-rs-jsr-311htmlhttpcwikiapacheorgCXF20DOCjax-rs-jsr-311html

Un outil agrave base dannotations pour creacuteer des services RESTUn outil agrave base dannotations pour creacuteer des services REST

Path(commande) Path(commande)

public class PriseCommandeService public class PriseCommandeService

GETGET

Path(ldquoidrdquo) Path(ldquoidrdquo)

public String getCommande()PathParam(ldquoidrdquo) int commandeId public String getCommande()PathParam(ldquoidrdquo) int commandeId

corps de la meacutethode corps de la meacutethode

En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS En furetant agrave laddresse hypotheacutetique httpwwwabccomcommande123 JAX-RS

va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu va faire une requecircte HTTP agrave la meacutethode getCommande() et va recevoir le contenu

retourneacute par la meacutethode getCommande() retourneacute par la meacutethode getCommande()

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 45: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Projet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWTProjet Restlet ndash bonne bibliothegraveque REST avec une inteacutegration agrave GWT

httpwwwrestletorgabout httpwwwrestletorgabout

Restlet First steps (tutoriel)Restlet First steps (tutoriel)

httpwwwrestletorgdocumentation11firstStepshttpwwwrestletorgdocumentation11firstSteps

Restlet-GWT moduleRestlet-GWT module

httpwikirestletorgdocs_1113-restlet28-restlet144-restlethtmlhttpwikirestletorgdocs_1113-restlet28-restlet144-restlethtml

REST ndash REST ndash Projet RestletProjet Restlet

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 46: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Introduction to REST (article JavaLobby)Introduction to REST (article JavaLobby)

httpjavadzonecomarticlesintro-resthttpjavadzonecomarticlesintro-rest

httpjavadzonecomarticlesputting-java-resthttpjavadzonecomarticlesputting-java-rest

LivreLivre

RESTful Web ServicesRESTful Web Services

Leonard Richardson Sam RubyLeonard Richardson Sam Ruby

OReilly Media IncOReilly Media Inc

8 mai 20078 mai 2007

REST ndash REST ndash Quelques outils et ressourcesQuelques outils et ressources

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 47: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST - Avantages amp inconveacutenientsREST - Avantages amp inconveacutenients

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 48: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

REST est de plus en plus populaireREST est de plus en plus populaire

Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des Les grands sites Web 20 comme Amazon Yahoo Flickr offrent des

services REST en plus des services SOAP traditionnelsservices REST en plus des services SOAP traditionnels

REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)REST est bien inteacutegreacute au canevas dapplications Ruby On Rails (RoR)

REST - AvantagesREST - Avantages

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 49: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Pas conccedilu pour les transactionsPas conccedilu pour les transactions

Pas conccedilu pour les protocoles avec eacutetats Pas conccedilu pour les protocoles avec eacutetats

REST - InconveacutenientsREST - Inconveacutenients

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 50: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle Gears

GearsGears

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 51: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google GearsGoogle GearsLusage des cookies pour la persistance est assez limiteacuteLusage des cookies pour la persistance est assez limiteacute

Google Gears est un plugiciel (extension) du fureteur Google Gears est un plugiciel (extension) du fureteur

qui permet de meacutemoriser de plus grandes quantiteacutes de qui permet de meacutemoriser de plus grandes quantiteacutes de

donneacutees sur le poste clientdonneacutees sur le poste client

Gears fournit une base de donneacutees SQLGears fournit une base de donneacutees SQL

Pour FireFox 15 + et IE 6+Pour FireFox 15 + et IE 6+

httpgearsgooglecomhttpgearsgooglecom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 52: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

Google Gears ndash un peu de codeGoogle Gears ndash un peu de codepublic void save() throws StorageException public void save() throws StorageException

Veacuterifier que Google Gears est installeacute Veacuterifier que Google Gears est installeacute

if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)if( IsGearsInstalled() ) throw new StorageException(Echec sauvegarde Gears pas installeacute)

try try Creacuteer la table maBDGears si elle nexiste pas Creacuteer la table maBDGears si elle nexiste pas

Database db = new Database(maBdGears)Database db = new Database(maBdGears)

dbexecute(create table if not exists maBdGears (key varchar(255) value text))dbexecute(create table if not exists maBdGears (key varchar(255) value text))

Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table Sauvegarder la liste de valeurs contenues dans la Map getValues() dans la table

for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )for(Iterator iter=getValues()entrySet()iterator() iterhasNext() )

Entry entry = (Entry) iternext()Entry entry = (Entry) iternext()

dbexecute(insert into maBdGears values ( ) new String[] dbexecute(insert into maBdGears values ( ) new String[]

(String) entrygetKey() (String) entrygetValue()(String) entrygetKey() (String) entrygetValue()

))

catch (GearsException e) throw new StorageException( Echec sauvegarde e )catch (GearsException e) throw new StorageException( Echec sauvegarde e )

Source R Dewsbury 2008 ndash Chap6 p 306-307 Source R Dewsbury 2008 ndash Chap6 p 306-307

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 53: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Le terme COMET a eacuteteacute inventeacute par Alex Russell en mars 2006 en reacutefeacuterence agrave la poudre agrave reacutecurer Comet concurrente de la marque Ajax

Source A Russell - httpalexdojotoolkitorg200603comet-low-latency-data-for-the-browser

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 54: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

COMETCOMET

Source Clipart httpwwwclipartcom

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 55: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMETComet est une architecture dapplications Web qui permet agrave un serveur Comet est une architecture dapplications Web qui permet agrave un serveur

denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte denvoyer des donneacutees agrave un client (fureteur) sans attendre une requecircte

expliciteexplicite

On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence On parle aussi de laquo Server-Push raquo ou de communication agrave faible latence

(laquo Low-Latency Data Transfer raquo) (laquo Low-Latency Data Transfer raquo)

Personnellement jaime bien le terme de laquo communication continue et Personnellement jaime bien le terme de laquo communication continue et

instantaneacutee raquo instantaneacutee raquo

Dailleurs les principales applications actuelles tournent autour de la Dailleurs les principales applications actuelles tournent autour de la

messagerie instantaneacutee comme Gtalk ou Meebo (messagerie instantaneacutee comme Gtalk ou Meebo (

httpmailgooglecommailhelpchathtmlhttpmailgooglecommailhelpchathtml wwwmeebocomwwwmeebocom ) la ) la

teacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteelteacuteleacutesurveillance et le travail collaboratif (multiusagers) en temps reacuteel

Comet repose sur un protocole agrave base deacuteveacutenementsComet repose sur un protocole agrave base deacuteveacutenements

Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les Une architecture agrave base deacuteveacutenement ou de messages existe deacutejagrave dans les

architectures SOAarchitectures SOA

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 56: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMETCOMET

Une application Comet peut transmettre des donneacutees au client agrave nimporte quel moment (pas seulement en reacuteponse agrave une requecircte de lusager) Les donneacutees sont transmises au travers une unique connection preacuteceacutedemment ouverte

Le temps de latence est ainsi minimiseacute

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 57: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET ndash deacutefi techniqueCOMET ndash deacutefi techniqueComet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee Comet requiert un protocole agrave base deacuteveacutenements et une reacuteaction instantaneacutee

Peut se faire avec des sockets TCPIP (=gt plugiciels)Peut se faire avec des sockets TCPIP (=gt plugiciels)

HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond HTTP ne supporte pas la diffusion spontaneacutee deacuteveacutenements HTTP reacutepond

seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de seulement en reacuteaction agrave une requecircte dun client Un serveur HTTP nenvoie pas de

donneacutees sans une requecirctedonneacutees sans une requecircte

Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave Une autre technique est le Polling qui consiste agrave faire des requecirctes au serveur agrave

intervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latenceintervalles reacuteguliers En reacuteduisant lintervalle on reacuteduit la latence

Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1 Chaque client en attente dun eacuteveacutenement bloque un Thread sur le serveur (1

connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de connexion = 1 Thread) Or un conteneur de servlets peut servir un maximum de

Threads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanismeThreads concurrents de lordre de 100 agrave 200 Au delagrave il faut un autre meacutecanisme

Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets Apache Tomcat version 6+ supporte linterface CometProcessor avec ses servlets

qui permet le partage dun Thread par plusieurs connexionsqui permet le partage dun Thread par plusieurs connexions

Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les Le support du Server Push est incorporeacute dans la speacutecification Servlet 30 et les

conteneurs de servlet JEE6 conteneurs de servlet JEE6 httpjcporgenjsrdetailid=315 httpjcporgenjsrdetailid=315

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 58: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

COMET amp GWTCOMET amp GWTComet with GWTComet with GWT

httpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQhttpcodegooglecompgoogle-web-toolkit-incubatorwikiServerPushFAQ

Rocket-GWT RemotingRocket-GWT Remoting

httpcodegooglecomprocket-gwtwikiComethttpcodegooglecomprocket-gwtwikiComet

Une autre solution Une autre solution

httpgroupsgooglecomgroupGoogle-WebhttpgroupsgooglecomgroupGoogle-Web

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59
Page 59: Normes avancées du Web  - GTI780 & MTI780 - ETS - A08

Montreacuteal novembre 2008Montreacuteal novembre 2008GTI-780 MTI-780GTI-780 MTI-780

QuestionsQuestions

Source Clipart httpwwwclipartcom

  • Diapo 1
  • Diapo 2
  • Diapo 3
  • Diapo 4
  • Diapo 5
  • Diapo 6
  • Diapo 7
  • Diapo 8
  • Diapo 9
  • Diapo 10
  • Diapo 11
  • Diapo 12
  • Diapo 13
  • Diapo 14
  • Diapo 15
  • Diapo 16
  • Diapo 17
  • Diapo 18
  • Diapo 19
  • Diapo 20
  • Diapo 21
  • Diapo 22
  • Diapo 23
  • Diapo 24
  • Diapo 25
  • Diapo 26
  • Diapo 27
  • Diapo 28
  • Diapo 29
  • Diapo 30
  • Diapo 31
  • Diapo 32
  • Diapo 33
  • Diapo 34
  • Diapo 35
  • Diapo 36
  • Diapo 37
  • Diapo 38
  • Diapo 39
  • Diapo 40
  • Diapo 41
  • Diapo 42
  • Diapo 43
  • Diapo 44
  • Diapo 45
  • Diapo 46
  • Diapo 47
  • Diapo 48
  • Diapo 49
  • Diapo 50
  • Diapo 51
  • Diapo 52
  • Diapo 53
  • Diapo 54
  • Diapo 55
  • Diapo 56
  • Diapo 57
  • Diapo 58
  • Diapo 59