<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Espace de François &#187; REST</title>
	<atom:link href="http://francois.goldgewicht.com/tag/rest/feed/" rel="self" type="application/rss+xml" />
	<link>http://francois.goldgewicht.com</link>
	<description>Un peu de nouvelles technologies...</description>
	<lastBuildDate>Wed, 27 Jan 2010 23:55:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Lancement des formations Aeon Consulting</title>
		<link>http://francois.goldgewicht.com/2009/07/29/lancement-des-formations-aeon-consulting/</link>
		<comments>http://francois.goldgewicht.com/2009/07/29/lancement-des-formations-aeon-consulting/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 14:08:18 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Liens]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Agilité]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Androïd]]></category>
		<category><![CDATA[App Engine]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Design patterns]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[WS-*]]></category>

		<guid isPermaLink="false">http://francois.goldgewicht.com/?p=319</guid>
		<description><![CDATA[Nous venons de lancer les formations Aeon Consulting, comme vous pourrez le découvrir sur le blog dédié.
Dès le 21 septembre prochain, j&#8217;aurai ainsi le plaisir d&#8217;animer une formation complète de 5 jours sur le Développement iPhone et iPod Touch, à l&#8217;issue de laquelle un iPod Touch sera offert à chaque participant !
Nous proposons également une [...]]]></description>
			<content:encoded><![CDATA[<p>Nous venons de lancer les formations Aeon Consulting, comme vous pourrez le découvrir sur le <a href="http://www.aeon-consulting.fr/fr/blog/2009/07/28/aeon-consulting-launches-training-activities/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.aeon-consulting.fr');" target="_blank">blog dédié</a>.</p>
<p>Dès le 21 septembre prochain, j&#8217;aurai ainsi le plaisir d&#8217;animer une <strong>formation complète</strong> de 5 jours sur le <a href="http://www.aeon-consulting.fr/fr/training/r-iph/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.aeon-consulting.fr');" target="_blank"><strong>Développement iPhone et iPod Touch</strong></a>, à l&#8217;issue de laquelle <strong>un iPod Touch sera offert à chaque participant</strong> !</p>
<p>Nous proposons également une <strong><a href="http://www.aeon-consulting.fr/fr/training/r-iphi/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.aeon-consulting.fr');" target="_blank">introduction d&#8217;une journée sur ce même sujet</a></strong>, pour ceux qui souhaitent simplement appréhender et comprendre cette plateforme révolutionnaire et ses enjeux.</p>
<p>Ce n&#8217;est pas tout ! Notre <strong><a href="http://www.aeon-consulting.fr/fr/training/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.aeon-consulting.fr');" target="_blank">catalogue</a></strong> est constitué de sujets variés, rassemblés autour des thèmes &#8220;Applications Riches&#8221; (Internet, Desktop et Mobile), &#8220;Architectures Applicatives&#8221; (Java/JEE, C#/.NET) et &#8220;Méthodes et Outils&#8221; (Conception, modélisation, méthodologies).</p>
<p>Vous trouverez tous les <a href="http://www.aeon-consulting.fr/fr/blog/2009/07/28/aeon-consulting-launches-training-activities/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.aeon-consulting.fr');" target="_blank">détails sur notre site</a>. Surtout n’hésitez pas à <a href="http://www.aeon-consulting.fr/fr/about/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.aeon-consulting.fr');" target="_blank">nous contacter</a> pour tout complément : sur votre demande, nous pouvons mettre sur pied tous types de formations.</p>
]]></content:encoded>
			<wfw:commentRss>http://francois.goldgewicht.com/2009/07/29/lancement-des-formations-aeon-consulting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprendre REST en quelques points</title>
		<link>http://francois.goldgewicht.com/2009/07/22/comprendre-rest-en-quelques-points/</link>
		<comments>http://francois.goldgewicht.com/2009/07/22/comprendre-rest-en-quelques-points/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 10:18:32 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Applications Web]]></category>
		<category><![CDATA[Aeon Consulting]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://francois.goldgewicht.com/?p=315</guid>
		<description><![CDATA[Si vous suivez ce blog alors vous connaissez mon &#8220;combat&#8221; contre les préjugés et incompréhensions concernant REST.
Dans cet esprit, j&#8217;ai initié sur le blog d&#8217;Aeon Consulting une série d&#8217;articles dont l&#8217;objectif est de définir ce qu&#8217;est vraiment REST en une dizaine de points. Les premiers concernent les notions de Ressource, URI et Adressabilité. Tout est [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous suivez ce blog alors vous connaissez mon &#8220;combat&#8221; contre les préjugés et incompréhensions concernant REST.</p>
<p>Dans cet esprit, j&#8217;ai initié sur le blog d&#8217;<a href="http://www.aeon-consulting.fr" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.aeon-consulting.fr');" target="_blank">Aeon Consulting</a> une série d&#8217;articles dont l&#8217;objectif est de définir ce qu&#8217;est vraiment REST en une dizaine de points. Les premiers concernent les notions de Ressource, URI et Adressabilité. Tout est là : <a href="http://www.aeon-consulting.fr/fr/blog/tag/rest/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.aeon-consulting.fr');" target="_blank">http://www.aeon-consulting.fr/fr/blog/tag/rest/</a>.</p>
<p>N&#8217;hésitez pas à donner votre avis, ces articles sont faits pour échanger !</p>
]]></content:encoded>
			<wfw:commentRss>http://francois.goldgewicht.com/2009/07/22/comprendre-rest-en-quelques-points/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>APIs RESTful et Marketing : l&#8217;avènement du REST-like</title>
		<link>http://francois.goldgewicht.com/2009/05/19/apis-restful-et-marketing-lavenement-du-rest-like/</link>
		<comments>http://francois.goldgewicht.com/2009/05/19/apis-restful-et-marketing-lavenement-du-rest-like/#comments</comments>
		<pubDate>Tue, 19 May 2009 00:13:58 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Applications Web]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://francois.goldgewicht.com/?p=271</guid>
		<description><![CDATA[Tout le monde parle de REST :

certains veulent essayer de comprendre ce qu&#8217;est vraiment REST : j&#8217;ai déjà commencé à apporter ma modeste contribution sur le sujet et je suis loin d&#8217;avoir dit mon dernier mot sur le sujet ! Je compte dès que possible y consacrer encore quelques posts bien précis&#8230;
d&#8217;autres exposent des APIs [...]]]></description>
			<content:encoded><![CDATA[<p>Tout le monde parle de REST :</p>
<ul>
<li>certains veulent essayer de comprendre ce qu&#8217;est vraiment REST : j&#8217;ai déjà commencé à apporter ma modeste contribution sur le sujet et je suis loin d&#8217;avoir dit mon dernier mot sur le sujet ! Je compte dès que possible y consacrer encore quelques posts bien précis&#8230;</li>
<li>d&#8217;autres exposent des <strong>APIs qu&#8217;ils présentent comme RESTful</strong> : Google, Yahoo, Twitter, Facebook, E-Bay, Flickr pour ne citer qu&#8217;eux&#8230; C&#8217;est à eux que je veux consacrer ce post.</li>
</ul>
<p>En effet, ces acteurs prépondérants de la sphère du Web 2.0 sont <em>de facto</em> des référents dans les technologies qu&#8217;ils mettent en avant : s&#8217;ils exposent des APIs en les déclarant RESTful, <strong>il est bon pour le &#8220;commun des mortels&#8221; de savoir si tel est vraiment le cas</strong>. Les aspects théoriques de REST sont déjà suffisamment difficiles à appréhender, alors si les exemples pratiques mis en avant ne sont pas de bons exemples, comment s&#8217;y retrouver ?</p>
<p>Prenons quelques exemples d&#8217;API dites RESTful au hasard (le hasard étant ici représenté par les trois premières pages de résultats d&#8217;une recherche Google sur l&#8217;expression &#8220;REST API&#8221;).</p>
<p><span id="more-271"></span></p>
<p><strong>Exemple n°1 : <a href="http://developer.ebay.com/DevZone/shopping/docs/HowTo/JS_Shopping/JS_SearchGS_NV_JSON/JS_SearchGS_NV_JSON.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/developer.ebay.com');" target="_blank">E-Bay </a></strong></p>
<p>Je n&#8217;ose pas m&#8217;aventurer dans les méandres de cette documentation plutôt austère. Cependant on repère rapidement un anti-pattern REST de base : dans les requêtes, le nom du service à invoquer est porté par un paramètre HTTP nommé &#8220;callname&#8221; et non par la méthode HTTP :</p>
<blockquote><p>http://open.api.ebay.com/shopping?<strong>callname</strong>=FindItems&amp;&#8230;</p></blockquote>
<p>En outre, on dispose d&#8217;un point d&#8217;entrée unique mais la notion de ressource n&#8217;apparaît pas vraiment.</p>
<p><strong>Exemple n°2 : <a href="http://apiwiki.twitter.com/Twitter-API-Documentation" onclick="javascript:pageTracker._trackPageview('/outbound/article/apiwiki.twitter.com');" target="_blank">Twitter</a></strong></p>
<p>Dans ce cas, la documentation est bien plus simple et attrayante. Elle repose a priori sur un découpage en ressources (timeline, status, user&#8230;) sauf que là encore le nom du service est transmis dans l&#8217;URI et non via la méthode HTTP :</p>
<blockquote><p>http://twitter.com/statuses/<strong>destroy</strong>/12345.json</p></blockquote>
<p>Ainsi on envoie une requête POST sur cet URI au lieu d&#8217;une requête DELETE sur un URI de la forme suivante :</p>
<blockquote><p>http://twitter.com/statuses/12345</p></blockquote>
<p>En outre, le format des représentations est lui aussi indiqué dans l&#8217;URI (voir le &#8220;.json&#8221;) au lieu de profiter des puissants mécanismes de négociation de contenu fournis par HTTP. Ceci dit, les réponses retournées semblent proposer quelques URIs (n&#8217;oublions pas <a href="http://francois.goldgewicht.com/2008/10/29/faire-du-rest-ce-nest-pas/"  target="_blank">l&#8217;importance de l&#8217;hypermédia</a>).</p>
<p><strong>Exemple n°3 : <a href="http://www.flickr.com/services/api/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.flickr.com');" target="_blank">Flickr</a></strong></p>
<p>La documentation de l&#8217;API rappelle celle de Twitter par sa clarté et son découpage par ressources. Et là encore, le nom du service à invoquer est porté par un paramètre HTTP, nommé &#8220;method&#8221; et non par la méthode HTTP :</p>
<blockquote><p>http://api.flickr.com/services/rest/?method=flickr.test.echo&amp;&#8230;</p></blockquote>
<p>Point intéressant, cette documentation donne sa propre vision de REST :</p>
<blockquote><p>&#8220;REST est le format de requête le plus simple à utiliser&#8221;</p></blockquote>
<p>Nous reviendrons plus tard sur cett vision de REST.</p>
<p><strong>Exemple n°4 : <a href="http://code.google.com/intl/fr/apis/ajaxsearch/documentation/" onclick="javascript:pageTracker._trackPageview('/outbound/article/code.google.com');" target="_blank">Google</a></strong></p>
<p>Là on est bien plus proche des principes de REST même si la notion de ressource ne ressort pas clairement :</p>
<blockquote><p>http://ajax.googleapis.com/ajax/services/search/web?v=1.0&amp;q=REST</p></blockquote>
<p>En effet, l&#8217;URI /search/web fait davantage penser à une opération qu&#8217;à une ressource.</p>
<p><strong>Exemple n°5 : <a href="http://wiki.developers.facebook.com/index.php/API" onclick="javascript:pageTracker._trackPageview('/outbound/article/wiki.developers.facebook.com');" target="_blank">Facebook</a></strong></p>
<p>Il s&#8217;agit là encore d&#8217;un exemple d&#8217;API similaire aux précédentes, sur la transmission du nom du service et sur l&#8217;utilisation des seules méthodes GET et POST du protocole HTTP. Cependant la documentation se veut plus pragmatique :</p>
<blockquote><p>&#8220;The API uses a REST-like interface. This means that our Facebook method calls are made over the internet by sending HTTP GET or POST requests&#8221;</p></blockquote>
<p>On retrouve la vision de REST comme format de requête plus simple. Autre point intéressant, l&#8217;API est présentée comme REST-like et non comme RESTful, ce qui est déjà plus rigoureux (bien que moins marketing).</p>
<p><strong>Exemple n°6 : <a href="http://developer.yahoo.com/addressbook/guide/EndpointURLs.html#id305045" onclick="javascript:pageTracker._trackPageview('/outbound/article/developer.yahoo.com');" target="_blank">Yahoo</a></strong></p>
<p>Les APIs proposées par Yahoo sont assez proches des précédentes :</p>
<blockquote><p>http://address.yahooapis.com/v1/action?format=format&amp;params</p></blockquote>
<p>où &#8220;action&#8221; désigne le nom du service à invoquer. On retrouve donc les mêmes anti-patterns concernant la transmission du nom du service et du format des représentations. Et un autre : le numéro de version du service est indiqué dans l&#8217;URI.</p>
<p><a href="http://developer.yahoo.com/search/rest.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/developer.yahoo.com');" target="_blank">Yahoo</a> met en avant la même vision de REST que ses confrères :</p>
<blockquote><p>&#8220;The Yahoo! Search Web Services are all REST services. That means you can easily construct request URLs that will work in your browser, on the command line, and in your code&#8221;</p></blockquote>
<p><strong>Un peu de recul</strong></p>
<p>Les APIs étudiées violent grosso modo les mêmes principes de REST. Ces anti-patterns tournent notamment autour de la notion d&#8217;URI qui est mal exploitée : l&#8217;URI est souvent utilisé comme fourre-tout permettant par exemple d&#8217;indiquer le nom du service à invoquer, sa version, ou le format des représentations, sans même faire apparaître la notion de ressource. Alors que l&#8217;URI a pour simple objectif d&#8217;adresser une ressource (n&#8217;oublions pas la définition de ce sigle : &#8220;Uniform Resource Identifier&#8221;) et que le protocole HTTP dispose de moyens efficaces pour gérer toutes les autres problématiques évoquées (notamment : interface uniforme, négociation de contenu).</p>
<p>Si vous avez tenu jusqu&#8217;ici alors je vous félicite et je vous remercie. Mais ne vous arrêtez pas là ! A ce stade vous devez penser que je ne jure que par REST mais je n&#8217;ai aucunement la prétention de rejeter toutes ces APIs. Si de tels éditeurs partagent les mêmes anti-patterns REST, c&#8217;est qu&#8217;il y a une bonne raison. Et cette raison, je la partage !</p>
<p>En effet : effectivement, toutes ces APIs ne respectent pas toutes les contraintes imposées par REST. Mais cela les rend-elles moins flexibles, moins scalables, moins simples à utiliser ? Non, pas nécessairement. En un mot il faut du pragmatisme ! Il est clair qu&#8217;aujourd&#8217;hui tout éditeur qui se veut &#8220;high-tech&#8221; se doit de proposer une API dite &#8220;RESTful&#8221; pour des raisons marketing évidentes. Même si cette API est en réalité plutôt &#8220;REST-like&#8221; comme osent toutefois le préciser certains d&#8217;entre eux. C&#8217;est la simplicité qui est et qui doit être (justement) mise en avant et il ne faut simplement pas tomber dans le piège tendu par le marketing.</p>
<p>Toutes ces APIs ne sont pas RESTful. OK. Mais en pratique cela ne nuit pas à leur succès. Une API RESTful a des avantages. Mais cela ne signifie pas que seules les APIs RESTful ont ces avantages. En outre, je vous mets au défi de trouver une API <em>réellement</em> RESTful <img src='http://francois.goldgewicht.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://francois.goldgewicht.com/2009/05/19/apis-restful-et-marketing-lavenement-du-rest-like/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Petit retour sur la première &#8220;Présentation à la carte&#8221; Valtech</title>
		<link>http://francois.goldgewicht.com/2009/02/06/petit-retour-sur-la-premiere-presentation-a-la-carte-valtech/</link>
		<comments>http://francois.goldgewicht.com/2009/02/06/petit-retour-sur-la-premiere-presentation-a-la-carte-valtech/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 09:58:27 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://francois.goldgewicht.com/?p=240</guid>
		<description><![CDATA[La première session des &#8220;Présentations à la carte&#8221; a donc eu lieu mardi.
Ce premier événement toulousain s&#8217;est très bien passé : une vingtaine de participants aux profils très variés ont pu assister à la présentation de Bruno sur le sujet &#8220;2009 : technologies, langages, frameworks&#8221; et ont donc pu échanger avec nous sur tous les [...]]]></description>
			<content:encoded><![CDATA[<p>La <a href="http://francois.goldgewicht.com/2009/01/22/presentation-a-la-carte-du-3-fevrier-2009/"  target="_blank">première session</a> des &#8220;Présentations à la carte&#8221; a donc eu lieu mardi.</p>
<p>Ce premier événement toulousain s&#8217;est très bien passé : une vingtaine de participants aux profils très variés ont pu assister à la présentation de Bruno sur le sujet &#8220;2009 : technologies, langages, frameworks&#8221; et ont donc pu échanger avec nous sur tous les buzz du moment.</p>
<p>Avant de me plonger dans la préparation de la deuxième session, je félicite Bruno pour sa présentation et je remercie Laetitia de m&#8217;avoir aidé à organiser cet événement.</p>
]]></content:encoded>
			<wfw:commentRss>http://francois.goldgewicht.com/2009/02/06/petit-retour-sur-la-premiere-presentation-a-la-carte-valtech/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Présentation à la carte&#8221; Valtech du 3 février 2009</title>
		<link>http://francois.goldgewicht.com/2009/01/22/presentation-a-la-carte-du-3-fevrier-2009/</link>
		<comments>http://francois.goldgewicht.com/2009/01/22/presentation-a-la-carte-du-3-fevrier-2009/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 16:18:47 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://francois.goldgewicht.com/?p=237</guid>
		<description><![CDATA[Je vous parlais il y a quelques semaines des &#8220;Présentations à la carte&#8221;, que j&#8217;organise en tant que Responsable de coordination des Pôles Techniques de Valtech Technology Toulouse. Les internautes se sont exprimés sur le site de Valtech et nous avons clôturé les votes hier soir. Le sujet qui sera présenté lors de la première [...]]]></description>
			<content:encoded><![CDATA[<p>Je vous parlais il y a quelques semaines des <a href="http://francois.goldgewicht.com/2008/12/31/connaissez-vous-les-presentations-a-la-carte-de-valtech/"  target="_blank">&#8220;Présentations à la carte&#8221;,</a> que j&#8217;organise en tant que Responsable de coordination des Pôles Techniques de Valtech Technology Toulouse. Les internautes se sont exprimés sur le site de Valtech et nous avons clôturé les votes hier soir. Le sujet qui sera présenté lors de la première session le 3 février sera donc : <strong>“2009 : technologies, langages, frameworks”</strong>.</p>
<p>Cette présentation passera en revue les librairies, outils, concepts et technologies qui vont compter dans les mois à venir, et fera le point sur les buzz du moment. Si vous êtes curieux et intéressés par les évolutions de Java et de .NET, JavaFX, Gumbo, Silverlight, Azure et toutes les nouveautés à venir, alors courrez vous inscrire !</p>
<p>Vous trouverez toutes les informations nécessaires et le formulaire d’inscription sur la <a href="http://www.valtech.fr/fr/index/news/seminar/technologyConsulting/Reservation.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.valtech.fr');" target="_blank">page dédiée</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://francois.goldgewicht.com/2009/01/22/presentation-a-la-carte-du-3-fevrier-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Connaissez-vous les &#8220;Présentations à la carte&#8221; de Valtech ?</title>
		<link>http://francois.goldgewicht.com/2008/12/31/connaissez-vous-les-presentations-a-la-carte-de-valtech/</link>
		<comments>http://francois.goldgewicht.com/2008/12/31/connaissez-vous-les-presentations-a-la-carte-de-valtech/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 10:53:33 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Agilité]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[WS-*]]></category>

		<guid isPermaLink="false">http://francois.goldgewicht.com/?p=217</guid>
		<description><![CDATA[Valtech Toulouse lance les &#8220;Présentations à la carte&#8221; dès le 3 février prochain :
Les &#8220;Présentations à la carte&#8221; sont des rencontres gratuites, pour échanger avec les consultants, formateurs et managers de Valtech Toulouse sur le sujet de votre choix. Le sujet présenté lors de la prochaine session du 3 Février sera simplement celui qui obtiendra [...]]]></description>
			<content:encoded><![CDATA[<p>Valtech Toulouse lance les <a href="http://www.valtech.fr/fr/index/news/seminar/technologyConsulting/Reservation.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.valtech.fr');" target="_blank">&#8220;Présentations à la carte&#8221;</a> dès le 3 février prochain :</p>
<blockquote><p>Les &#8220;Présentations à la carte&#8221; sont des rencontres gratuites, pour échanger avec les consultants, formateurs et managers de Valtech Toulouse sur le sujet de votre choix. Le sujet présenté lors de la prochaine session du 3 Février sera simplement celui qui obtiendra le plus de voix à la clôture du vote en ligne.</p></blockquote>
<p>Ce événement est un double plaisir pour moi puisque j&#8217;y participe à la fois en tant qu&#8217;organisateur et en tant qu&#8217;intervenant (sur les sujets autour du Web 2.0 et des Services Web).</p>
<p>N&#8217;attendez plus, allez <a href="http://www.valtech.fr/fr/index/news/seminar/technologyConsulting/Reservation.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.valtech.fr');" target="_blank">voter et vous inscrire</a> !</p>
]]></content:encoded>
			<wfw:commentRss>http://francois.goldgewicht.com/2008/12/31/connaissez-vous-les-presentations-a-la-carte-de-valtech/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Présentations des Valtech Days 2008</title>
		<link>http://francois.goldgewicht.com/2008/12/18/presentations-des-valtech-days-2008/</link>
		<comments>http://francois.goldgewicht.com/2008/12/18/presentations-des-valtech-days-2008/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 09:43:24 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://francois.goldgewicht.com/?p=210</guid>
		<description><![CDATA[Vous les attendiez, les voici ! Vous pouvez désormais consulter les slides de toutes les présentations sur le site officiel : http://www.valtech.fr/fr/index/valtech_days/Presentations.html. Vous pouvez accéder directement à ma présentation sur AJAX en cliquant ici.
Vous pouvez même consulter les vidéos des présentations de 15 minutes sur la Valtech WebTV. Il vous faudra être encore un peu [...]]]></description>
			<content:encoded><![CDATA[<p>Vous les attendiez, les voici ! Vous pouvez désormais consulter les slides de toutes les présentations sur le site officiel : <a href="http://www.valtech.fr/fr/index/valtech_days/Presentations.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.valtech.fr');" target="_blank">http://www.valtech.fr/fr/index/valtech_days/Presentations.html</a>. Vous pouvez accéder directement à ma présentation sur AJAX en cliquant <a href="http://www.valtech.fr/etc/medialib/library/Events/fr/days08/ebusiness.Par.24102.File.dat/AJAX.pdf" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.valtech.fr');" target="_blank">ici</a>.</p>
<p>Vous pouvez même consulter les vidéos des présentations de 15 minutes sur la <a href="http://www.valtech-tv.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.valtech-tv.com');" target="_blank">Valtech WebTV</a>. Il vous faudra être encore un peu patient pour les vidéos des présentations de 45 minutes (dont la mienne fait partie), elles devraient progressivement arriver dès le mois de janvier.</p>
]]></content:encoded>
			<wfw:commentRss>http://francois.goldgewicht.com/2008/12/18/presentations-des-valtech-days-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sortie de Restlet 1.1</title>
		<link>http://francois.goldgewicht.com/2008/10/30/restlet-11/</link>
		<comments>http://francois.goldgewicht.com/2008/10/30/restlet-11/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 21:28:48 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Applications Web]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://francois.goldgewicht.com/?p=184</guid>
		<description><![CDATA[Décidément, que d&#8217;actualité en ce moment sur la planète REST ! Jérôme Louvel vient d&#8217;annoncer sur le blog de sa société Noelios la sortie de la version 1.1 du framework Restlet. Pour ceux qui ne connaissent pas ce framework, il permet de concevoir très facilement des applications RESTful.
Cette nouvelle version apporte notamment :

Une meilleure gestion [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Décidément, que d&#8217;actualité en ce moment sur la planète REST ! Jérôme Louvel vient d&#8217;annoncer sur <a href="http://blog.noelios.com/2008/10/28/restlet-110-released/" onclick="javascript:pageTracker._trackPageview('/outbound/article/blog.noelios.com');" target="_blank">le blog de sa société Noelios</a> la sortie de la version 1.1 du <a href="http://www.restlet.org" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.restlet.org');" target="_blank">framework Restlet</a>. Pour ceux qui ne connaissent pas ce framework, il permet de concevoir très facilement des applications RESTful.</p>
<p style="text-align: justify;">Cette nouvelle version apporte notamment :</p>
<ul style="text-align: justify;">
<li>Une meilleure gestion des documents WADL : si l&#8217;intérêt de cette spécification dans le cadre de REST est remise en cause par certains (dont je fais partie&#8230; En partie !) elle en intéresse toutefois plus d&#8217;un alors cette nouveauté restlet-ienne est à relever.</li>
<li>Une <a href="http://wiki.restlet.org/docs_1.1/13-restlet/28-restlet/57-restlet.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/wiki.restlet.org');" target="_blank">extension</a> implémentant la <a href="http://jcp.org/en/jsr/detail?id=311" onclick="javascript:pageTracker._trackPageview('/outbound/article/jcp.org');" target="_blank">spécification JAX-RS</a> (Java API for RESTful Web Services), aussi connue sous le nom de code JSR 311. Rappelons que la version finale de cette JSR est parue le 10 octobre dernier. Il s&#8217;agit là d&#8217;une évolution intéressante, même si à titre personnel je n&#8217;approuve pas forcément l&#8217;utilisation massive des annotations imposée par cette spécification.</li>
<li>Un <a href="http://wiki.restlet.org/docs_1.1/13-restlet/144-restlet.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/wiki.restlet.org');" target="_blank">module</a> pour GWT permettant de faire communiquer le front-end et le back-end de votre application grâce à REST sans avoir à en implémenter les couches basses vous-mêmes.</li>
<li>Une <a href="http://wiki.restlet.org/docs_1.1/13-restlet/28-restlet/70-restlet.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/wiki.restlet.org');" target="_blank">extension</a> permettant divers modes d&#8217;intégration avec Spring.</li>
</ul>
<p style="text-align: justify;">Je n&#8217;ai pas encore testé cette nouvelle version mais j&#8217;en ai hâte car :</p>
<ul style="text-align: justify;">
<li>Restlet est le framework REST que je préfère parmi les quelques-uns qui existent : parmi ses qualités, j&#8217;apprécie depuis longtemps sa facilité de mise en œuvre, ses nombreuses extensions et sa documentation claire et concise. Mais il a également ce formidable avantage de vous permettre de (et même de vous amener à) vous concentrer sur la conception orientée ressources que nécessite la mise en place d&#8217;une architecture REST. Tous les frameworks REST n&#8217;ont pas cette qualité et il s&#8217;agit d&#8217;un point important car cette conception n&#8217;est pas toujours triviale.</li>
<li>Jusqu&#8217;ici j&#8217;avais principalement deux regrets : D&#8217;abord la non implémentation de la spécification JAX-RS. Ensuite, la non intégration aisée avec Spring. En effet, étant un vrai aficionados de ce framework, j&#8217;avais assez rapidement développé ce qui me fallait pour utiliser facilement Restlet avec Spring : a minima, la déclaration et la configuration des restlets via un fichier de configuration Spring. Or cette nouvelle version semble fournir une solution à ces deux &#8220;problèmes&#8221;.</li>
</ul>
<p style="text-align: justify;">
<p style="text-align: justify;">À suivre, donc&#8230; En tout cas, bravo à Jérôme Louvel et son équipe !</p>
]]></content:encoded>
			<wfw:commentRss>http://francois.goldgewicht.com/2008/10/30/restlet-11/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Faire du REST, ce n&#8217;est pas&#8230;</title>
		<link>http://francois.goldgewicht.com/2008/10/29/faire-du-rest-ce-nest-pas/</link>
		<comments>http://francois.goldgewicht.com/2008/10/29/faire-du-rest-ce-nest-pas/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 09:31:33 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Applications Web]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://francois.goldgewicht.com/?p=143</guid>
		<description><![CDATA[Il y a de l&#8217;agitation dans l&#8217;air sur la planète REST ! Roy Fielding, l&#8217;inventeur de ce concept et l’un des auteurs principaux de la spécification du protocole HTTP, vient de poster deux articles du genre &#8220;coup de poing sur la table&#8221; sur son blog.

Avant de parler de ces deux posts, je vous invite à [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Il y a de l&#8217;agitation dans l&#8217;air sur la planète REST ! Roy Fielding, l&#8217;inventeur de ce concept et l’un des auteurs principaux de la spécification du protocole HTTP, vient de poster deux articles du genre &#8220;coup de poing sur la table&#8221; sur son blog.</p>
<p style="text-align: justify;"><span id="more-143"></span></p>
<p style="text-align: justify;">Avant de parler de ces deux posts, je vous invite à lire l&#8217;<a href="http://blog.valtech.fr/wordpress/2007/10/12/introduction-a-rest-et-aux-roa/" onclick="javascript:pageTracker._trackPageview('/outbound/article/blog.valtech.fr');" target="_blank">Introduction à REST et aux ROA</a> que j&#8217;avais écrite il y a un an pour le blog Valtech : si vous ne connaissez pas REST, j&#8217;espère que cet article vous aidera à mieux comprendre les posts de Roy Fielding&#8230;</p>
<p style="text-align: justify;">Aux <a href="http://francois.goldgewicht.com/?p=140"  target="_blank">Valtech Days</a>, j&#8217;ai eu des échanges très intéressants sur REST avec plusieurs personnes : j&#8217;ai notamment été très heureux de rencontrer des personnes ayant comme moi mis en œuvre ces principes au sein de projets concrets, et de constater que nous partagions certaines idées pourtant méconnues ou sous-estimées. Pour résumer, <strong>concevoir une architecture RESTful, ce n&#8217;est pas uniquement exposer des services via HTTP : il y a plusieurs règles à respecter</strong>. En particulier :</p>
<p style="text-align: justify;">1. Faire du REST, c&#8217;est utiliser tant que possible le protocole HTTP de manière standard afin de garantir la généricité des interfaces des services.</p>
<p style="text-align: justify;">2. Faire du REST, c&#8217;est s&#8217;affranchir de la nécessité d&#8217;une description préalable des services : pour cela, il ne faut pas sous-estimer l&#8217;importance des liens hypertextes et des types de représentation des ressources.</p>
<p style="text-align: justify;">3. Faire du REST, c&#8217;est repenser son SI en termes de ressources : si ce n&#8217;est pas toujours trivial (loin de là !), il s&#8217;agit d&#8217;un exercice très enrichissant.</p>
<p style="text-align: justify;">Alors imaginez ma hâte lorsque j&#8217;ai découvert <a href="http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven" onclick="javascript:pageTracker._trackPageview('/outbound/article/roy.gbiv.com');" target="_blank">un post</a> de Roy Fielding qui commence par la phrase suivante :</p>
<blockquote style="text-align: justify;"><p>&#8220;I am getting frustrated by the number of people calling any HTTP-based interface a REST API&#8221;</p></blockquote>
<p style="text-align: justify;">Dans ce post du 20 octobre, il rappelle une série de règles non intuitives mais essentielles lorsqu&#8217;on conçoit une architecture RESTful. Ces règles rejoignent les trois points que j&#8217;ai évoqués.</p>
<h3 style="text-align: justify;"><strong>1.  L&#8217;importance de l&#8217;utilisation standard du protocole HTTP pour assurer la généricité des interfaces </strong></h3>
<blockquote style="text-align: justify;"><p>&#8220;A REST API should not contain any changes to the communication protocols aside from filling-out or fixing the details of underspecified bits of standard protocols&#8221;</p></blockquote>
<p style="text-align: justify;">En effet, le problème est que bien souvent, des modifications à ce niveau sont révélatrices d&#8217;un design des interfaces qui est spécifique aux objets manipulés : les interfaces ne sont alors plus génériques.</p>
<h3 style="text-align: justify;"><strong>2. La non-nécessité d&#8217;une description préalable des services et l&#8217;importance des liens hypertextes et des types de représentation des ressources</strong></h3>
<p style="text-align: justify;">Il ne faut pas sous-estimer l&#8217;importance des types de représentation des ressources. Le client d&#8217;un service REST ne doit pas avoir besoin d&#8217;une description préalable du service, il doit pouvoir s&#8217;appuyer sur les types de représentation des ressources :</p>
<blockquote style="text-align: justify;"><p>&#8220;A REST API should spend almost all of its descriptive effort in defining the media type(s) used for representing resources and driving application state, or in defining extended relation names and/or hypertext-enabled mark-up for existing standard media types. Any effort spent describing what methods to use on what URIs of interest should be entirely defined within the scope of the processing rules for a media type&#8221;</p></blockquote>
<p style="text-align: justify;">On me demande souvent de quelle manière les types de représentation des ressources peuvent-elles permettre au client de déterminer quelles opérations il peut effectuer sur quelles ressources. J&#8217;aime assez les exemples donnés par Roy Fielding dans l&#8217;un de ses commentaires :</p>
<blockquote style="text-align: justify;"><p>&#8220;media type tells the client either what method to use (e.g., anchor implies GET) or how to determine the method to use (e.g., form element says to look in method attribute)&#8221;</p></blockquote>
<p style="text-align: justify;">Ces exemples sont appliqués au cas d&#8217;un client interprétant du HTML, mais on peut aisément les généraliser.</p>
<p style="text-align: justify;">Il ne faut pas non plus sous-estimer l&#8217;importance des liens hypertextes. Le client d&#8217;un service REST ne doit pas avoir besoin d&#8217;une description préalable du service, c&#8217;est également en suivant les liens hypertextes proposés dans les représentations des ressources qu&#8217;il pourra déterminer quelles opérations il peut effectuer sur quelles ressources :</p>
<blockquote style="text-align: justify;"><p>&#8220;A REST API should be entered with no prior knowledge beyond the initial URI [...] From that point on, all application state transitions must be driven by client selection of server-provided choices that are present in the received representations or implied by the user’s manipulation of those representations.</p></blockquote>
<p style="text-align: justify;">En effet, les transitions doivent être permises par les liens hypertextes et non par des informations descriptives situées hors des représentations des ressources. Ce point, souvent occulté, est sujet à de nombreuses discussions entre les défenseurs de REST et ceux qui n&#8217;acceptent pas l&#8217;idée de ne pas se reposer sur une description des services (comme le WSDL le permet avec les services WS-*).</p>
<p style="text-align: justify;">En fait, les représentations des ressources doivent être auto-descriptives, le client d&#8217;un service REST n&#8217;a pas à savoir quelle est la nature d&#8217;une ressource, il ne fait que manipuler une de ses représentations grâce aux liens hypertextes :</p>
<blockquote style="text-align: justify;"><p>&#8220;Think of it in terms of the Web. How many Web browsers are aware of the distinction between an online-banking resource and a Wiki resource? None of them. They don’t need to be aware of the resource types. What they need to be aware of is the potential state transitions — the links and forms — and what semantics/actions are implied by traversing those links&#8221;</p></blockquote>
<p style="text-align: justify;">Lorsqu&#8217;on conçoit un service RESTful, il faut arriver à faire évoluer notre vision du modèle classique Request/Reply : si le client émet une requête afin d&#8217;obtenir des représentations de plusieurs ressources, la réponse du service ne doit pas contenir un ensemble de représentations (comme dans le modèle traditionnel), mais un ensemble de liens permettant d&#8217;accéder à chacune de ces représentations :</p>
<blockquote style="text-align: justify;"><p>&#8220;Query results are represented by a list of links with summary information, not by arrays of object representations&#8221;</p></blockquote>
<h3 style="text-align: justify;"><strong>3. Sur la difficulté de concevoir une Architecture Orientée Ressources </strong></h3>
<p style="text-align: justify;">En lisant ce post de Roy Fieding, on réalise la difficulté de concevoir des services RESTful. Ceux qui pensent que faire du REST c&#8217;est uniquement exposer des services HTTP occultent des caractéristiques essentielles de REST, les intérêts inhérents à ces caractéristiques mais également les difficultés. Concevoir une Architecture Orientée Ressources n&#8217;est pas facile. Mais il s&#8217;agit là d&#8217;un exercice très enrichissant.</p>
<p style="text-align: justify;">Ce post a suscité de nombreuses réactions car plutôt difficile à comprendre pour le profane. Il a donc posté quelques jours plus tard, le 24 octobre, <a href="http://roy.gbiv.com/untangled/2008/specialization" onclick="javascript:pageTracker._trackPageview('/outbound/article/roy.gbiv.com');" target="_blank">un autre article</a> dans lequel il explique sa démarche afin de répondre à ces critiques. Pour résumer, il part simplement du principe que ses lecteurs ont un certain niveau de formation et de compétences. Je laisse le soin à ses autres lecteurs de s&#8217;attarder sur ce point, j&#8217;ai souhaité citer ce post pour une autre raison.</p>
<p style="text-align: justify;">Cette raison est qu&#8217;il est intéressant de constater que Roy Fielding explique lui-même que faire du REST n&#8217;est pas facile : le premier post évoquait un ensemble de règles non intuitives et donc méconnues, et celui-ci rappelle qu&#8217;il n&#8217;y a pas de recette standard pour concevoir une Architecture Orientée Ressources et que comme d&#8217;habitude tout dépend du contexte. Et surtout, que s&#8217;il est difficile de déterminer si une architecture est réellement RESTful, il est bien plus facile de savoir si elle ne l&#8217;est pas :</p>
<blockquote style="text-align: justify;"><p>&#8220;I don’t try to tell them exactly what to do because, quite frankly, I don’t have anywhere near enough knowledge of their specific context to make such a decision. What I can do is tell them what isn’t REST or that doesn’t fit my definitions, because that is something about which I am guaranteed to know more than anyone else on this planet&#8221;</p></blockquote>
<p style="text-align: justify;">Toutefois, contrairement à Roy Fielding, je pense qu&#8217;il est important de trouver un moyen pour démocratiser ces idées, justement parce qu&#8217;elles sont méconnues et incomprises : j&#8217;espère pouvoir rédiger bientôt une sorte de checklist qui serait utilisable par les connaisseurs comme par les profanes. Le tout en essayant de faire preuve d&#8217;un peu plus d&#8217;ouverture&#8230; <img src='http://francois.goldgewicht.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://francois.goldgewicht.com/2008/10/29/faire-du-rest-ce-nest-pas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Les Valtech Days 2008 sont (presque) terminés&#8230;</title>
		<link>http://francois.goldgewicht.com/2008/10/24/les-valtech-days-2008-sont-presque-termines/</link>
		<comments>http://francois.goldgewicht.com/2008/10/24/les-valtech-days-2008-sont-presque-termines/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 22:08:37 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://francois.goldgewicht.com/?p=140</guid>
		<description><![CDATA[Les Valtech Days 2008 ont donc eu lieu mardi et mercredi. Un grand bravo à l&#8217;équipe organisatrice car cela a été une belle réussite ! J&#8217;ai pris beaucoup de plaisir à animer ma session sur AJAX et à échanger sur divers sujets techniques avec des confrères aux profils et expériences variés. Cela m&#8217;a d&#8217;ailleurs suggéré quelques idées [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Les Valtech Days 2008 ont <a href="http://francois.goldgewicht.com/?p=22"  target="_blank">donc</a> eu lieu mardi et mercredi. Un grand bravo à l&#8217;équipe organisatrice car cela a été une belle réussite ! J&#8217;ai pris beaucoup de plaisir à animer ma session sur AJAX et à échanger sur divers sujets techniques avec des confrères aux profils et expériences variés. Cela m&#8217;a d&#8217;ailleurs suggéré quelques idées d&#8217;articles, notamment sur REST. Pour très bientôt !</p>
<p style="text-align: justify;">Mais les Valtech Days ne sont pas terminés ! Vous pouvez apporter vos contributions (avis, photos ou notes) sur le Wiki dédié : <a href="http://wiki.valtechdays.fr" onclick="javascript:pageTracker._trackPageview('/outbound/article/wiki.valtechdays.fr');" target="_blank">http://wiki.valtechdays.fr</a>.</p>
<p style="text-align: justify;">Dès que les vidéos des sessions seront disponibles, je posterai une news.</p>
]]></content:encoded>
			<wfw:commentRss>http://francois.goldgewicht.com/2008/10/24/les-valtech-days-2008-sont-presque-termines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
