Normes avancées du Web - GTI780 & MTI780 - ETS - A08
-
Upload
claude-coulombe -
Category
Technology
-
view
895 -
download
1
description
Transcript of 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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-