<?xml version="1.0" encoding="iso-8859-1"?><!-- generator="b2evolution/3.3.1" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Le blog de L'ami S'ami</title>
		<link>http://www.dotnetguru2.org/sami/index.php</link>
		<atom:link rel="self" type="application/rss+xml" href="http://www.dotnetguru2.org/sami/index.php?tempskin=_rss2" />
		<description></description>
		<language>fr-FR</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=3.3.1"/>
		<ttl>60</ttl>
				<item>
			<title>OLPC France lance un concours</title>
			<link>http://www.dotnetguru2.org/sami/index.php/2008/07/07/olpc_france_lance_un_concours</link>
			<pubDate>Sun, 06 Jul 2008 22:14:49 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">.NET</category>			<guid isPermaLink="false">889@http://www.dotnetguru2.org/</guid>
						<description>&lt;p&gt;Note : mon blog est d&amp;#233;sormais h&amp;#233;berg&amp;#233; sur &lt;a href=&quot;http://www.dng-consulting.com/blogs&quot;&gt;&lt;a href=&quot;http://www.dng-consulting.com/blogs&quot;&gt;http://www.dng-consulting.com/blogs&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--------------&lt;br /&gt;
L'initiative OLPC est fantastique. Lionel Lask&amp;#233;, auteur DNG et pr&amp;#233;sident de cette association m'a demand&amp;#233; de transmettre ce message. Si vous &amp;#234;tes d&amp;#233;veloppeur et que l'exp&amp;#233;rience vous tente, n'h&amp;#233;sitez pas &amp;#224; prendre contact avec l'association.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&lt;br /&gt;
Pour pr&amp;#233;parer l'arriv&amp;#233;e en Europe de l'ordinateur XO, OLPC France lance le concours d'id&amp;#233;e: &quot;Un XO pour un projet&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous &amp;#234;tes d&amp;#233;veloppeur, enseignant, chercheur, professionnel, &amp;#233;tudiant ou simplement passionn&amp;#233; ?&lt;br /&gt;
Vous souhaitez participer au d&amp;#233;veloppement Francophone du projet OLPC (One Laptop Per Child) ?&lt;br /&gt;
Vous avez une id&amp;#233;e pour d&amp;#233;velopper du contenu sur le XO ?&lt;br /&gt;
&lt;br /&gt;
Proposez nous un sujet et vous aurez peut-&amp;#234;tre la chance unique de recevoir un ordinateur portable XO pour mener &amp;#224; bien et exp&amp;#233;rimenter votre projet. &lt;br /&gt;
&lt;br /&gt;
Quelques liens pour en savoir plus:&lt;br /&gt;
&lt;br /&gt;
&amp;#183; Le site d&amp;#8217;OLPC France : &lt;a href=&quot;http://olpc-france.org&quot;&gt;http://olpc-france.org&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#183; Le r&amp;#232;glement du concours : &lt;a href=&quot;http://olpc-france.org/reglement.html&quot;&gt;http://olpc-france.org/reglement.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#183; Le formulaire d&amp;#8217;inscription : &lt;a href=&quot;http://webapps.olpc-france.org/fr/register&quot;&gt;http://webapps.olpc-france.org/fr/register&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#183; Comment d&amp;#233;velopper pour le XO : &lt;a href=&quot;http://wiki.laptop.org/go/Developers&quot;&gt;http://wiki.laptop.org/go/Developers&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#183; La mailing list OLPC France : &lt;a href=&quot;mailto:olpc-france@lists.laptop.org&quot;&gt;olpc-france@lists.laptop.org&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://olpc-france.org/wiki/images/7/70/650px-B1-mikemcgregor-2.jpg&quot;/&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.dotnetguru2.org/sami/index.php/2008/07/07/olpc_france_lance_un_concours&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Note : mon blog est d&#233;sormais h&#233;berg&#233; sur <a href="http://www.dng-consulting.com/blogs"><a href="http://www.dng-consulting.com/blogs">http://www.dng-consulting.com/blogs</a></a></p>

<p>--------------<br />
L'initiative OLPC est fantastique. Lionel Lask&#233;, auteur DNG et pr&#233;sident de cette association m'a demand&#233; de transmettre ce message. Si vous &#234;tes d&#233;veloppeur et que l'exp&#233;rience vous tente, n'h&#233;sitez pas &#224; prendre contact avec l'association.</p>

<p><i><br />
Pour pr&#233;parer l'arriv&#233;e en Europe de l'ordinateur XO, OLPC France lance le concours d'id&#233;e: "Un XO pour un projet".<br />
<br />
<br />
Vous &#234;tes d&#233;veloppeur, enseignant, chercheur, professionnel, &#233;tudiant ou simplement passionn&#233; ?<br />
Vous souhaitez participer au d&#233;veloppement Francophone du projet OLPC (One Laptop Per Child) ?<br />
Vous avez une id&#233;e pour d&#233;velopper du contenu sur le XO ?<br />
<br />
Proposez nous un sujet et vous aurez peut-&#234;tre la chance unique de recevoir un ordinateur portable XO pour mener &#224; bien et exp&#233;rimenter votre projet. <br />
<br />
Quelques liens pour en savoir plus:<br />
<br />
&#183; Le site d&#8217;OLPC France : <a href="http://olpc-france.org">http://olpc-france.org</a><br />
<br />
&#183; Le r&#232;glement du concours : <a href="http://olpc-france.org/reglement.html">http://olpc-france.org/reglement.html</a><br />
<br />
&#183; Le formulaire d&#8217;inscription : <a href="http://webapps.olpc-france.org/fr/register">http://webapps.olpc-france.org/fr/register</a><br />
<br />
&#183; Comment d&#233;velopper pour le XO : <a href="http://wiki.laptop.org/go/Developers">http://wiki.laptop.org/go/Developers</a><br />
<br />
&#183; La mailing list OLPC France : <a href="http://www.dotnetguru2.orgmailto:olpc-france@lists.laptop.org">olpc-france@lists.laptop.org</a><br />
<br />
</i></p>

<p><img src="http://olpc-france.org/wiki/images/7/70/650px-B1-mikemcgregor-2.jpg"/></p><div class="item_footer"><p><small><a href="http://www.dotnetguru2.org/sami/index.php/2008/07/07/olpc_france_lance_un_concours">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dotnetguru2.org/sami/index.php/2008/07/07/olpc_france_lance_un_concours#comments</comments>
			<wfw:commentRss>http://www.dotnetguru2.org/sami/index.php?tempskin=_rss2&#38;disp=comments&#38;p=889</wfw:commentRss>
		</item>
				<item>
			<title>Firefox 3 optimisera la m&#233;moire</title>
			<link>http://www.dotnetguru2.org/sami/index.php/2008/03/16/firefox_3_optimisera_la_memoire</link>
			<pubDate>Sun, 16 Mar 2008 20:45:13 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">.NET</category>			<guid isPermaLink="false">832@http://www.dotnetguru2.org/</guid>
						<description>&lt;p&gt;Selon cet &lt;a href=&quot;http://tinyurl.com/3y735s&quot;&gt;article&lt;/a&gt;, de nombreux changements interviendront dans Firefox 3 concernant la m&amp;#233;moire. De l'avis g&amp;#233;n&amp;#233;ral, il n'existe aujourd'hui aucun navigateur sans fuite m&amp;#233;moire, notamment lorsqu'il s'agit de manipuler le DOM et les closures (la gestion &amp;#233;v&amp;#232;nementielle) JavaScript.&lt;br /&gt;
GWT a pris ce ph&amp;#233;nom&amp;#232;ne &amp;#224; bras le corps en r&amp;#233;inventant une sorte de mod&amp;#232;le &amp;#233;v&amp;#232;nementiel au dessus des listeners JavaScript pour garantir l'absence de fuite. Je ne rentrerai pas dans les d&amp;#233;tails couverts dans cet &lt;a href=&quot;http://tinyurl.com/2tbkb6&quot;&gt;article&lt;/a&gt; mais ce proc&amp;#233;d&amp;#233; fait encore pencher la balance lorsqu'il s'agit de choisir entre un Framework &lt;a href=&quot;http://mygwt.net&quot;&gt;con&amp;#231;u avec GWT &lt;/a&gt;et un Framework UI &lt;a href=&quot;http://tinyurl.com/25azdt&quot;&gt;encapsulant du JavaScript&lt;/a&gt;.  &lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.dotnetguru2.org/sami/index.php/2008/03/16/firefox_3_optimisera_la_memoire&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Selon cet <a href="http://tinyurl.com/3y735s">article</a>, de nombreux changements interviendront dans Firefox 3 concernant la m&#233;moire. De l'avis g&#233;n&#233;ral, il n'existe aujourd'hui aucun navigateur sans fuite m&#233;moire, notamment lorsqu'il s'agit de manipuler le DOM et les closures (la gestion &#233;v&#232;nementielle) JavaScript.<br />
GWT a pris ce ph&#233;nom&#232;ne &#224; bras le corps en r&#233;inventant une sorte de mod&#232;le &#233;v&#232;nementiel au dessus des listeners JavaScript pour garantir l'absence de fuite. Je ne rentrerai pas dans les d&#233;tails couverts dans cet <a href="http://tinyurl.com/2tbkb6">article</a> mais ce proc&#233;d&#233; fait encore pencher la balance lorsqu'il s'agit de choisir entre un Framework <a href="http://mygwt.net">con&#231;u avec GWT </a>et un Framework UI <a href="http://tinyurl.com/25azdt">encapsulant du JavaScript</a>.  </p><div class="item_footer"><p><small><a href="http://www.dotnetguru2.org/sami/index.php/2008/03/16/firefox_3_optimisera_la_memoire">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dotnetguru2.org/sami/index.php/2008/03/16/firefox_3_optimisera_la_memoire#comments</comments>
			<wfw:commentRss>http://www.dotnetguru2.org/sami/index.php?tempskin=_rss2&#38;disp=comments&#38;p=832</wfw:commentRss>
		</item>
				<item>
			<title>Repas avec Erik Meijer</title>
			<link>http://www.dotnetguru2.org/sami/index.php/2008/02/25/repas_avec_erik_meijer</link>
			<pubDate>Mon, 25 Feb 2008 00:00:11 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">.NET</category>			<guid isPermaLink="false">824@http://www.dotnetguru2.org/</guid>
						<description>&lt;p&gt;A l'avenir, je publierai des billets ici sur blogs@dng mais aussi sur ce nouveau blog h&amp;#233;berg&amp;#233; sur dng-consulting.com et s'appuyant sur la toute nouvelle version du moteur de blog b2evolution (exceptionnel). Ce dernier couvrira un spectre de sujets beaucoup plus large que le seul cadre .NET. J'y publierai aussi s&amp;#251;rement plus souvent sans le risque de monopoliser la frontpage &amp;#224; mes camarades.&lt;br /&gt;
Voici le billet inaugural -&gt; &lt;a href=&quot;http://www.dng-consulting.com/blogs/&quot;&gt;Repas avec Eric Meijer&lt;/a&gt;. Bonne lecture.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.dotnetguru2.org/sami/index.php/2008/02/25/repas_avec_erik_meijer&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>A l'avenir, je publierai des billets ici sur blogs@dng mais aussi sur ce nouveau blog h&#233;berg&#233; sur dng-consulting.com et s'appuyant sur la toute nouvelle version du moteur de blog b2evolution (exceptionnel). Ce dernier couvrira un spectre de sujets beaucoup plus large que le seul cadre .NET. J'y publierai aussi s&#251;rement plus souvent sans le risque de monopoliser la frontpage &#224; mes camarades.<br />
Voici le billet inaugural -> <a href="http://www.dng-consulting.com/blogs/">Repas avec Eric Meijer</a>. Bonne lecture.</p><div class="item_footer"><p><small><a href="http://www.dotnetguru2.org/sami/index.php/2008/02/25/repas_avec_erik_meijer">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dotnetguru2.org/sami/index.php/2008/02/25/repas_avec_erik_meijer#comments</comments>
			<wfw:commentRss>http://www.dotnetguru2.org/sami/index.php?tempskin=_rss2&#38;disp=comments&#38;p=824</wfw:commentRss>
		</item>
				<item>
			<title>Retours Symposium DNG et DDD</title>
			<link>http://www.dotnetguru2.org/sami/index.php/2008/02/13/retours_symposium_dng</link>
			<pubDate>Wed, 13 Feb 2008 22:11:41 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">.NET</category>			<guid isPermaLink="false">818@http://www.dotnetguru2.org/</guid>
						<description>&lt;p&gt;Les retours et r&amp;#233;actions suite au dernier Symposium ont &amp;#233;t&amp;#233; nombreux. Certains m&amp;#8217;ont &amp;#233;galement fait part de leurs impressions par mail. J&amp;#8217;avais promis de donner quelques explications sur l&amp;#8217;aspect logistique et les quelques difficult&amp;#233;s de la matin&amp;#233;e. Je r&amp;#233;pondrais ensuite au duo &lt;a href=&quot;http://fabien.bezagu.free.fr/index.php?Domain-driven-design&quot;&gt;Fabien/BodySplash&lt;/a&gt; sur ma session DDD. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;Logistique g&amp;#233;n&amp;#233;rale et cas particulier de la session DDD&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;La session DDD est d&amp;#233;cid&amp;#233;ment celle qui fait le plus couler de pixels. Pour rappel, cette session que j&amp;#8217;animais avait lieu &amp;#224; 11h juste apr&amp;#232;s la session pl&amp;#233;ni&amp;#232;re. Tr&amp;#232;s vite en arrivant sur les lieues le matin, nous nous sommes rendus compte avec &lt;a href=&quot;http://blogs.msdn.com/fmerand&quot;&gt;Fran&amp;#231;ois Merand&lt;/a&gt; c&amp;#244;t&amp;#233; MS que l&amp;#8217;organisation des TechDays avait buggu&amp;#233; en attribuant une salle de 120 places. Pour rappel, les 3 derniers Symposium ont eu une affluence variant de 300 &amp;#224; 700 personnes. Il &amp;#233;tait difficile d&amp;#8217;imaginer qu&amp;#8217;autant de fid&amp;#232;les aient rendu les armes sous les assauts marketing de la machine TechDays. Lorsque la salle s'est remplit en 3mn apr&amp;#232;s la session pl&amp;#233;ni&amp;#232;re nous avons compris qu&amp;#8217;une partie importante du public allait devoir &amp;#234;tre refoul&amp;#233;e par l&amp;#8217;h&amp;#244;tesse d&amp;#8217;accueil. A cet instant, plus d&amp;#8217;une  trentaine de personnes se tenaient debout ou assis &amp;#224; m&amp;#234;me le sol pendant que quelques VIP trustaient les premiers rangs.  &lt;/p&gt;

&lt;p&gt;Bien entendu on pourra toujours arguer qu&amp;#8217;il est pr&amp;#233;f&amp;#233;rable d&amp;#8217;avoir une salle pleine &amp;#224; craquer et refuser du monde plut&amp;#244;t qu&amp;#8217;une salle &amp;#224; moiti&amp;#233; vide. Pour le p&amp;#233;dagogue que je suis, refouler ne serait-ce qu&amp;#8217;une personne est quelque chose de difficilement concevable,  vous l&amp;#8217;entendrez s&amp;#251;rement au ton un peu irrit&amp;#233; lors de la publication des webcasts. Apr&amp;#232;s coup, la session DDD a d&amp;#251; refuser entre 60 et 100 personnes.  Croyez-moi, j&amp;#8217;en suis sinc&amp;#232;rement d&amp;#233;sol&amp;#233;.&lt;/p&gt;

&lt;p&gt;Il y aussi ceux qui m&amp;#8217;ont fait le reproche d&amp;#8217;avoir noy&amp;#233; la marque du Symposium dans celle des TechDays. Il est vrai que la session DDD n&amp;#8217;apparaissait pas en tant que session &amp;#233;tiquet&amp;#233;e Symposium et qu&amp;#8217;il a fallu constamment changer de salle tout au long de la journ&amp;#233;e. On ne peut que le regretter mais s&amp;#8217;associer &amp;#224; la logistique des TechDays &amp;#233;tait aussi l&amp;#8217;opportunit&amp;#233; de toucher un public plus large que les habituels fid&amp;#232;les. A noter que Microsoft m&amp;#8217;a gentiment propos&amp;#233; de rejouer la DDD plus tard dans la semaine. Une proposition que j&amp;#8217;ai du d&amp;#233;cliner faute de vol, en p&amp;#233;riode de gr&amp;#232;ve. &lt;/p&gt;

&lt;p&gt;Sur le reste de la journ&amp;#233;e, l&amp;#8217;ensemble des sessions &amp;#233;taient pleines sans avoir jamais eu (&amp;#224; ma connaissance) &amp;#224; fermer de portes. &lt;/p&gt;

&lt;p&gt;Concernant enfin les sujets trait&amp;#233;s lors de la journ&amp;#233;e, vos retours me confortent dans l&amp;#8217;id&amp;#233;e qu&amp;#8217;ils &amp;#233;taient pertinents. C&amp;#8217;est finalement l&amp;#224; le plus important. Ce Symposium a aussi permit de faire d&amp;#233;couvrir de nouvelles t&amp;#234;tes, comme celle &lt;a href=&quot;http://blogpro.toutantic.net/&quot;&gt;d&amp;#8217;Aurelien&lt;/a&gt; avec la session ROA. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;Session DDD et billets de Fabien/BodySplash &lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Pour revenir maintenant &amp;#224; des consid&amp;#233;rations plus techniques et s&amp;#251;rement moins sensibles que l&amp;#8217;organisation du Symposium, j&amp;#8217;ai promis de r&amp;#233;pondre aux &lt;a href=&quot;http://fabien.bezagu.free.fr/index.php?2008/02/12/11-symposium-dng-2008-domain-driven-design-flop&quot;&gt;critiques constructives&lt;/a&gt; formul&amp;#233;es par le duo Fabien/BodySplash sur le contenu de la session DDD. C&amp;#8217;est un peu long mais le sujet vaut la peine d&amp;#8217;&amp;#234;tre d&amp;#233;battu.  &lt;/p&gt;

&lt;p&gt;Pour avoir lu les billets en question et les avoir publi&amp;#233; sur DNG, si j&amp;#8217;y r&amp;#233;ponds c&amp;#8217;est que je trouve les remarques argument&amp;#233;es m&amp;#234;me si le terme &amp;#171; flop &amp;#187; me semble disons, un peu inadapt&amp;#233; (pour rester courtois :-)).&lt;/p&gt;

&lt;p&gt; La discussion qui suit pr&amp;#233;figure d&amp;#8217;une certaine mani&amp;#232;re de l&amp;#8217;ambiance g&amp;#233;n&amp;#233;rale qui r&amp;#232;gne autour du sujet DDD et des probl&amp;#233;matiques (techniques) que cette approche aura &amp;#224; g&amp;#233;rer dans les semaines &amp;#224; venir.&lt;/p&gt;

&lt;p&gt;Cela fait environ 4 ans que je suis de pr&amp;#232;s l&amp;#8217;approche DDD, depuis la sortie du Evans finalement. Je dois dire que la premi&amp;#232;re fois que j&amp;#8217;ai lu ce livre, j&amp;#8217;ai sursaut&amp;#233; au plafond en me disant &amp;#171; jamais je ne conseillerais &amp;#224; quiconque de mettre en &amp;#339;uvre ce genre de choses &amp;#187;. Et de fil en aiguille, quelques ann&amp;#233;es plus tard j&amp;#8217;avoue avoir un peu chang&amp;#233; d&amp;#8217;avis en m&amp;#8217;apercevant qu&amp;#8217;Evans avait vu juste sur un certain nombre de points. Le domaine deviendrait un &amp;#233;l&amp;#233;ment central d&amp;#8217;une application fortement coupl&amp;#233;e (je ne parle pas de SOA ou d&amp;#8217;urbanisation qui se situe &amp;#224; un niveau plus haut) et &lt;a href=&quot;http://domaindrivendesign.org/discussion/messageboardarchive/UbiquitousLanguage.html&quot;&gt;l&amp;#8217;ubiquitous langage&lt;/a&gt;, un alli&amp;#233; de poids pour la formalisation du besoin MOE/MOA. &lt;/p&gt;

&lt;p&gt;Lorsque les temples communautaires (que ce soit Java ou .NET) ont commenc&amp;#233; &amp;#224; inviter en 2007 les adeptes du DDD pour parler du sujet, j&amp;#8217;ai compris qu&amp;#8217;une nouvelle tendance s&amp;#8217;amor&amp;#231;ait. Il se trouvait que cette communaut&amp;#233; partageait aussi un certain nombre de valeurs avec les communaut&amp;#233;s dites &amp;#171; agiles &amp;#187;, le refactoring, le TDD mais aussi le mapping O/R.&lt;/p&gt;

&lt;p&gt;Parler DDD au Symposium me paraissait du coup in&amp;#233;luctable tant la communaut&amp;#233; Francophone dans ce domaine &amp;#233;tait inexistante.&lt;br /&gt;
De l&amp;#8217;avis de tous, les deux seuls ouvrages sur DDD publi&amp;#233;s &amp;#224; ce jour en 5 ans sont d&amp;#8217;une complexit&amp;#233; effroyable m&amp;#234;me pour un expert du domaine. J&amp;#8217;avoue avoir relu 3 fois l&amp;#8217;Evans et quasiment autant de fois le Nilsson en .NET. Je n&amp;#8217;ai jamais entendu deux personnes &amp;#233;voquer le sujet de la m&amp;#234;me mani&amp;#232;re. Et pour cause, le DDD laisse trop de place &amp;#224; la subjectivit&amp;#233;. Et je ne parle pas des multiples n&amp;#233;ologismes cr&amp;#233;&amp;#233;s parfois de toute pi&amp;#232;ce par Evans pour introduire des termes tels que les agr&amp;#233;gats, les repositories, les value object ou les factories. Des notions qui ont bien entendu un sens tr&amp;#232;s pr&amp;#233;cis dans la philosophie DDD mais autant de sens technique utilis&amp;#233; &amp;#224; tord et &amp;#224; travers.&lt;br /&gt;
 &lt;br /&gt;
Du coup, soit je traitais le sujet DDD &amp;#224; la mode pure Evans, soit je donnais ma vision du DDD (celle qui me semble la plus pragmatique) pour tenter de convaincre le maximum de personnes qu&amp;#8217;il y avait tout de m&amp;#234;me des choses pertinentes dans le DDD. Charge ensuite &amp;#224; chacun d&amp;#8217;y aller en fonction de sa sensibilit&amp;#233; ou de s&amp;#8217;arr&amp;#234;ter en posant ses limites. J&amp;#8217;ai pr&amp;#233;f&amp;#233;r&amp;#233; la seconde option car elle correspondait mieux &amp;#224; ma vision du DDD. &lt;/p&gt;

&lt;p&gt;J&amp;#8217;ai pass&amp;#233; des ann&amp;#233;es &amp;#224; lutter contre le syndrome du DTO et de ce que j&amp;#8217;appelle la mode des entit&amp;#233;s de services. Cette approche, que je consid&amp;#232;re aujourd&amp;#8217;hui comme &amp;#171; vieille &amp;#233;cole &amp;#187; consiste &amp;#224; cr&amp;#233;er des objets m&amp;#233;tier type Facture, Commandes, Client et &amp;#224; y ins&amp;#233;rer le maximum de code technique. Lorsque 80% de ce code est de type infrastructure, pour &amp;#234;tre pr&amp;#233;cis, des acc&amp;#232;s en base, les probl&amp;#232;mes techniques surviennent tr&amp;#232;s vite. Par d&amp;#233;finition mais aussi il est vrai par conviction, je consid&amp;#232;re qu&amp;#8217;une entit&amp;#233; ne doit pas &amp;#234;tre associ&amp;#233;e &amp;#224; une quelconque API Technique, ce f&amp;#251;t le sujet de ma derni&amp;#232;re session Symposium en 2005 et je n&amp;#8217;en d&amp;#233;mordrais pas. Lorsqu'une entit&amp;#233; de service ne peut &amp;#234;tre v&amp;#233;hicul&amp;#233;e sur la couche de pr&amp;#233;sentation, le d&amp;#233;veloppeur la copie g&amp;#233;n&amp;#233;ralement dans un ValueObject.&lt;/p&gt;

&lt;p&gt;Par ailleurs, nous sommes nombreux dans la communaut&amp;#233; &amp;#224; penser que le DDD se trompe en voulant &amp;#224; tout prix s&amp;#8217;appuyer sur des Repositories. Le premier &amp;#224; avoir trait&amp;#233; ce probl&amp;#232;me est Christian Bauer, co-cr&amp;#233;ateur d&amp;#8217;Hibernate avec son fameux billet : &lt;a href=&quot;http://tinyurl.com/3a22qg&quot;&gt;&amp;#171; Repository Pattern vs. Transparent Persistence &amp;#187;&lt;/a&gt;. Il explique tr&amp;#232;s concr&amp;#232;tement, exemple &amp;#224; l&amp;#8217;appui que le domaine doit rester &amp;#171; clean &amp;#187;. &lt;i&gt; I think this pattern is a step backwards and should not be recommended.  Keep the domain model implementation clean, testable, and reusable: no security checks, transaction demarcation, or explicit data store access in any of these classes.&lt;/i&gt; C&amp;#8217;est aussi mon avis. Gavin King son collistier, enfonce le clou dans &lt;a href=&quot;http://tinyurl.com/2l5uhg&quot;&gt;ce billet (Still Confused about Repositories)&lt;/a&gt; : &lt;i&gt;Do we /really/ need another stupid layer in our already horribly over-engineered Java applications?&lt;/i&gt;. La &lt;a href=&quot;http://www.fabiokung.com/2007/11/12/comments-to-gavin-king-about-ddd-and-repositories/&quot;&gt;r&amp;#233;ponse donn&amp;#233;e&lt;/a&gt; par Fabio Kung  montre &amp;#224; quel point subsiste cette forme d'hypocrisie dans le DDD qui consiste &amp;#224; ne pas appeler un chat un chat. Il illustre une DAO d&amp;#8217;un c&amp;#244;t&amp;#233; et un Repository de l&amp;#8217;autre. Jugez-en par vous-m&amp;#234;me, seul le nom de la classe change et conclut par &lt;i&gt;&amp;#171; But err&amp;#8230; what&amp;#8217;s the difference? Just the name? YES! But the names are important, right?&amp;#8221;&lt;/i&gt;. Les noms sont peut-&amp;#234;tre importants, mais pas au point de cr&amp;#233;er une nouvelle couche. Cet exemple montre &amp;#224; lui seul le paradoxe de cette couche du domaine qui s&amp;#8217;appuie sur des DAO, pardon des repositories pour r&amp;#233;cup&amp;#233;rer des donn&amp;#233;es mais refuse l'appellation DAO. &lt;br /&gt;
 &lt;br /&gt;
Je ne parle m&amp;#234;me pas des probl&amp;#232;mes d&amp;#8217;Eager ou Lazy Fetching qu&amp;#8217;engendre cette d&amp;#233;marche qui se r&amp;#233;sume souvent par &amp;#171; qui peut le plus peut le moins &amp;#187;. Cette proximit&amp;#233; Domaine/DAO emp&amp;#234;che de v&amp;#233;hiculer une entit&amp;#233; de mani&amp;#232;re s&amp;#233;rialis&amp;#233;e sur le poste client et ouvre la porte au syndrome du DTO Evil. Les Repository renvoient des collections d&amp;#8217;entit&amp;#233;s ou des agr&amp;#233;gats et la combinaison des strat&amp;#233;gies de fetching (je r&amp;#233;cup&amp;#232;re un client et ses lignes, un client sans ses lignes, un client et ses factures, etc...) aboutissent in&amp;#233;luctablement &amp;#224; du N+1 Select puisqu'aucun service ne pr&amp;#233;charge au pr&amp;#233;alable les donn&amp;#233;es. J'ai cherch&amp;#233; tr&amp;#232;s longtemps une sorte de &quot;sample&quot; ou de &quot;PetShop&quot; DDD, la seule application disponible sur domaindrivendesign.org est un convertisseur de monnaie. Pas tr&amp;#232;s &quot;business case&quot;.&lt;/p&gt;

&lt;p&gt;Le contexte de ma pr&amp;#233;sentation et mes griefs &amp;#224; l&amp;#8217;encontre du DDD &amp;#233;tant pos&amp;#233;es, je peux quoter les critiques formul&amp;#233;es par Fabien et Body Splash.&lt;/p&gt;

&lt;p&gt;Commen&amp;#231;ons par BodySplash :&lt;br /&gt;
&lt;i&gt;&amp;#171; Critiquer une conf&amp;#233;rence de Sami Jaber est un exercice p&amp;#233;rilleux &amp;#187;&lt;/i&gt;. Quelle id&amp;#233;e ! La critique constructive est souvent rare, il ne faut pas s'en priver.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&amp;#171; Du coup, &amp;#224; se concentrer sur la technique, l'ami Sami passe &amp;#224; c&amp;#244;t&amp;#233; de l'int&amp;#233;r&amp;#234;t de DDD, et en plus se m&amp;#233;lange les pinceaux dans les concepts. &amp;#187; &lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Apr&amp;#232;s le contexte que je viens de poser, on comprendra ais&amp;#233;ment que laisser de c&amp;#244;t&amp;#233; la technique dans toute architecture ne peut-&amp;#234;tre que vou&amp;#233; &amp;#224; l&amp;#8217;&amp;#233;chec. &lt;/p&gt;

&lt;p&gt;&lt;i&gt;&amp;#171; Il existe en fait 3 types de service d&amp;#233;finit par Evans: les services d'application (interface, export excel), les services d'infrastructure (envoi de mail) et les services du domaine qui r&amp;#233;pondent &amp;#224; un m&amp;#233;tier bien pr&amp;#233;cis (transfert d'argent entre deux comptes par exemple) &amp;#187;&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt; Cet exemple a &amp;#233;t&amp;#233; donn&amp;#233; par les deux blogs. Effectivement, c&amp;#8217;est ce que Evans dit et c&amp;#8217;est aussi ce que je regrette. Lorsqu&amp;#8217;on souhaite envoyer un mail, il faut &amp;#234;tre dans la couche d&amp;#8217;infrastructure. En revanche, pour faire  un export Excel, il faut &amp;#234;tre dans la couche services d&amp;#8217;application. Tr&amp;#232;s honn&amp;#234;tement, comment peut-on imaginer une seconde d&amp;#233;finir des couches d&amp;#8217;architecture avec des exemples aussi l&amp;#233;gers (le Nilsson reprend d'ailleurs exactement les m&amp;#234;mes exemples). Comment fait-on lorsqu&amp;#8217;on souhaite envoyer un mail contenant un export Excel ? &lt;/p&gt;

&lt;p&gt;Une couche ne se d&amp;#233;finit par seulement par des cas fonctionnels, mais aussi par des d&amp;#233;pendances binaires, une architecture physique et logique, un couplage par interface. L&amp;#8217;export Excel est-il c&amp;#244;t&amp;#233; client ou c&amp;#244;t&amp;#233; domaine ? Est-il transactionnel ? Il existe des dizaines de cas o&amp;#249; cette approche atteint ces limites. Je revendique donc l&amp;#8217;explication donn&amp;#233;e pour la couche de service vu sa totale subjectivit&amp;#233;.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&amp;#171; Si on en croit Sami Jaber, tout ce qui est sous une racine d'agr&amp;#233;gat est une value object. Faux. &amp;#187; &lt;/i&gt;&lt;br /&gt;
Les webcast seront publi&amp;#233;es en Mars de m&amp;#233;moire, il m&amp;#8217;est difficile de r&amp;#233;pondre &amp;#224; des choses que je n&amp;#8217;ai pas dites. Le slide 15 montre les objets Customer et Order comme des entit&amp;#233;s avec une identit&amp;#233; (la composition, donc les VO concernent les objets de l&amp;#8217;agr&amp;#233;gat) &lt;/p&gt;

&lt;p&gt;&lt;i&gt;&amp;#171; Une autre confusion est de comparer les repositories aux DAL &amp;#187;&lt;/i&gt;. Je pense avoir suffisamment d&amp;#233;montr&amp;#233; qu&amp;#8217;&amp;#224; part le nom de la classe, on peut qualifier le Repository d&amp;#8217;entrep&amp;#244;t, &amp;#231;a n&amp;#8217;en fait pas autre chose qu&amp;#8217;une DAO.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&amp;#171; Dans une deuxi&amp;#232;me moiti&amp;#233; de session, Sami Jaber a pr&amp;#233;sent&amp;#233; une mani&amp;#232;re int&amp;#233;ressante de tenter d'automatiser le binding entre les objets du mod&amp;#232;le et la couche pr&amp;#233;sentation. L'id&amp;#233;e est de placer des attributs par exemple sur nos setter des objets du mod&amp;#232;le, et on peut imaginer un framework de pr&amp;#233;sentation capable de lire par r&amp;#233;flexion ces attributs pour automatiquement g&amp;#233;n&amp;#233;rer les validateurs qui vont bien &amp;#187;&lt;/i&gt;.&lt;br /&gt;
 Pourquoi syst&amp;#233;matiquement recopier c&amp;#244;t&amp;#233; IHM ce qui existe d&amp;#233;j&amp;#224; c&amp;#244;t&amp;#233; Entit&amp;#233;. Bindons nos entit&amp;#233;s, c&amp;#8217;est peut-&amp;#234;tre anti-DDD Evans like, mais largement plus  pragmatique que faire de la r&amp;#233;flection et du DTO &amp;#224; tout va. &lt;/p&gt;

&lt;p&gt;&lt;i&gt;&amp;#171; il n'existe pas de simple application CRUD &amp;#187;&lt;/i&gt;.&lt;br /&gt;
Peut-&amp;#234;tre pas &amp;#171; simples &amp;#187;, mais  pas si complexes, s&amp;#251;rement. Une application peut avoir du m&amp;#233;tier sans que cela justifie d&amp;#8217;empiler des couches &amp;#224; tord et &amp;#224; travers. On en a assez souffert ces cinq derni&amp;#232;res ann&amp;#233;es.  &lt;/p&gt;

&lt;p&gt;Pour finir et faire &amp;#233;cho &amp;#224; Fabien :&lt;br /&gt;
&lt;i&gt;&amp;#171; Au del&amp;#224; de ce que Sami a dit, c'est surtout ce qu'il n'a pas dit qui me g&amp;#234;ne. Je sens bien qu'il n'adh&amp;#232;re pas du tout &amp;#224; DDD &amp;#187;&lt;/i&gt;.&lt;br /&gt;
Fabien, j&amp;#8217;adh&amp;#232;re sinc&amp;#232;rement au fondements pragmatiques du DDD et la place centrale que le domaine doit jouer dans les applications de demain. Mais je rejette les d&amp;#233;lires d&amp;#8217;architectes en mal de couches qui ont plomb&amp;#233; tant de projets ces derni&amp;#232;res ann&amp;#233;es. Dans la m&amp;#234;me lign&amp;#233;e que Gavin King et Christian Bauer qui l&amp;#8217;expliquent d&amp;#8217;ailleurs tr&amp;#232;s bien.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&amp;#171; Ce langage n'est pas, comme il le dit, un jargon sp&amp;#233;cifique du projet &amp;#187;&lt;/i&gt;.&lt;br /&gt;
M&amp;#234;me remarque que pr&amp;#233;c&amp;#233;demment cf Page 11 de mon slideshare, il est bien pr&amp;#233;cis&amp;#233; que c'est un langage technique entre MOA/MOE.&lt;br /&gt;
 &lt;br /&gt;
&lt;i&gt;&amp;#171; Les entit&amp;#233;s du mod&amp;#232;le ne sont pas forc&amp;#233;ment expos&amp;#233;es aussi brutalement &amp;#224; une couche de pr&amp;#233;sentation; la mise en place d'un couche applicative est parfois indispensable, ce qui, dans une approche du &quot;tout bind&amp;#233;&quot; est infaisable &amp;#187;&lt;/i&gt;.&lt;br /&gt;
Lorsqu&amp;#8217;une entit&amp;#233; r&amp;#233;pond &amp;#224; un besoin de pr&amp;#233;sentation, on l&amp;#8217;utilise. Lorsqu&amp;#8217;une entit&amp;#233; ne r&amp;#233;pond pas au visuel d&amp;#8217;une IHM, on utilise un Value Object contrairement &amp;#224; une d&amp;#233;marche syst&amp;#233;matique qui consiste &amp;#224; cloner &amp;#224; tout va des grappes d&amp;#8217;objets. Sur une application de gestion &amp;#171; traditionnelle &amp;#187;, plus de 80% des &amp;#233;crans peuvent bind&amp;#233;s sur des entit&amp;#233;s. Sans sacrifier le Design, le gain en termes de productivit&amp;#233; est &amp;#233;norme. Lorsqu'on essaie de forcer le DDD dans sa forme la plus extr&amp;#232;me contre les r&amp;#233;alit&amp;#233;s projets, on arrive aux &amp;#233;checs que tu cites toi m&amp;#234;me dans ce &lt;a href=&quot;http://fabien.bezagu.free.fr/index.php?2008/01/23/6-aveu-d-echec&quot;&gt;billet&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Pour finir le d&amp;#233;bat, Fabien et BodySplash, je comprends votre d&amp;#233;ception par rapport au fait que je n&amp;#8217;ai pas soutenu DDD sans r&amp;#233;serve dans cette session. Mais &quot;ne pas soutenir&quot; ne signifie pas &quot;ne pas comprendre&quot; ou &quot;sortir des &amp;#233;normit&amp;#233;s&quot;. Avec cette r&amp;#233;ponse, j&amp;#8217;imagine que le contexte est plus clair. Si ce n&amp;#8217;est pas le cas, je vous invite tous les deux, &amp;#224; r&amp;#233;diger un article que je publierais avec grand plaisir sur DNG pour continuer le d&amp;#233;bat. &lt;a href=&quot;http://www.linkedin.com/pub/3/964/2B7&quot;&gt;Steve Degosserie&lt;/a&gt;, qui a assist&amp;#233; &amp;#224; la session m&amp;#8217;a propos&amp;#233; de traiter le sujet de mani&amp;#232;re plus pouss&amp;#233;e dans un futur article. N&amp;#8217;h&amp;#233;sitez pas &amp;#224; en faire de m&amp;#234;me.&lt;/p&gt;

&lt;p&gt;Sami&lt;/p&gt;
&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.dotnetguru2.org/sami/index.php/2008/02/13/retours_symposium_dng&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Les retours et r&#233;actions suite au dernier Symposium ont &#233;t&#233; nombreux. Certains m&#8217;ont &#233;galement fait part de leurs impressions par mail. J&#8217;avais promis de donner quelques explications sur l&#8217;aspect logistique et les quelques difficult&#233;s de la matin&#233;e. Je r&#233;pondrais ensuite au duo <a href="http://fabien.bezagu.free.fr/index.php?Domain-driven-design">Fabien/BodySplash</a> sur ma session DDD. </p>

<p><b>Logistique g&#233;n&#233;rale et cas particulier de la session DDD</b></p>

<p>La session DDD est d&#233;cid&#233;ment celle qui fait le plus couler de pixels. Pour rappel, cette session que j&#8217;animais avait lieu &#224; 11h juste apr&#232;s la session pl&#233;ni&#232;re. Tr&#232;s vite en arrivant sur les lieues le matin, nous nous sommes rendus compte avec <a href="http://blogs.msdn.com/fmerand">Fran&#231;ois Merand</a> c&#244;t&#233; MS que l&#8217;organisation des TechDays avait buggu&#233; en attribuant une salle de 120 places. Pour rappel, les 3 derniers Symposium ont eu une affluence variant de 300 &#224; 700 personnes. Il &#233;tait difficile d&#8217;imaginer qu&#8217;autant de fid&#232;les aient rendu les armes sous les assauts marketing de la machine TechDays. Lorsque la salle s'est remplit en 3mn apr&#232;s la session pl&#233;ni&#232;re nous avons compris qu&#8217;une partie importante du public allait devoir &#234;tre refoul&#233;e par l&#8217;h&#244;tesse d&#8217;accueil. A cet instant, plus d&#8217;une  trentaine de personnes se tenaient debout ou assis &#224; m&#234;me le sol pendant que quelques VIP trustaient les premiers rangs.  </p>

<p>Bien entendu on pourra toujours arguer qu&#8217;il est pr&#233;f&#233;rable d&#8217;avoir une salle pleine &#224; craquer et refuser du monde plut&#244;t qu&#8217;une salle &#224; moiti&#233; vide. Pour le p&#233;dagogue que je suis, refouler ne serait-ce qu&#8217;une personne est quelque chose de difficilement concevable,  vous l&#8217;entendrez s&#251;rement au ton un peu irrit&#233; lors de la publication des webcasts. Apr&#232;s coup, la session DDD a d&#251; refuser entre 60 et 100 personnes.  Croyez-moi, j&#8217;en suis sinc&#232;rement d&#233;sol&#233;.</p>

<p>Il y aussi ceux qui m&#8217;ont fait le reproche d&#8217;avoir noy&#233; la marque du Symposium dans celle des TechDays. Il est vrai que la session DDD n&#8217;apparaissait pas en tant que session &#233;tiquet&#233;e Symposium et qu&#8217;il a fallu constamment changer de salle tout au long de la journ&#233;e. On ne peut que le regretter mais s&#8217;associer &#224; la logistique des TechDays &#233;tait aussi l&#8217;opportunit&#233; de toucher un public plus large que les habituels fid&#232;les. A noter que Microsoft m&#8217;a gentiment propos&#233; de rejouer la DDD plus tard dans la semaine. Une proposition que j&#8217;ai du d&#233;cliner faute de vol, en p&#233;riode de gr&#232;ve. </p>

<p>Sur le reste de la journ&#233;e, l&#8217;ensemble des sessions &#233;taient pleines sans avoir jamais eu (&#224; ma connaissance) &#224; fermer de portes. </p>

<p>Concernant enfin les sujets trait&#233;s lors de la journ&#233;e, vos retours me confortent dans l&#8217;id&#233;e qu&#8217;ils &#233;taient pertinents. C&#8217;est finalement l&#224; le plus important. Ce Symposium a aussi permit de faire d&#233;couvrir de nouvelles t&#234;tes, comme celle <a href="http://blogpro.toutantic.net/">d&#8217;Aurelien</a> avec la session ROA. </p>

<p><b>Session DDD et billets de Fabien/BodySplash </b></p>

<p>Pour revenir maintenant &#224; des consid&#233;rations plus techniques et s&#251;rement moins sensibles que l&#8217;organisation du Symposium, j&#8217;ai promis de r&#233;pondre aux <a href="http://fabien.bezagu.free.fr/index.php?2008/02/12/11-symposium-dng-2008-domain-driven-design-flop">critiques constructives</a> formul&#233;es par le duo Fabien/BodySplash sur le contenu de la session DDD. C&#8217;est un peu long mais le sujet vaut la peine d&#8217;&#234;tre d&#233;battu.  </p>

<p>Pour avoir lu les billets en question et les avoir publi&#233; sur DNG, si j&#8217;y r&#233;ponds c&#8217;est que je trouve les remarques argument&#233;es m&#234;me si le terme &#171; flop &#187; me semble disons, un peu inadapt&#233; (pour rester courtois :-)).</p>

<p> La discussion qui suit pr&#233;figure d&#8217;une certaine mani&#232;re de l&#8217;ambiance g&#233;n&#233;rale qui r&#232;gne autour du sujet DDD et des probl&#233;matiques (techniques) que cette approche aura &#224; g&#233;rer dans les semaines &#224; venir.</p>

<p>Cela fait environ 4 ans que je suis de pr&#232;s l&#8217;approche DDD, depuis la sortie du Evans finalement. Je dois dire que la premi&#232;re fois que j&#8217;ai lu ce livre, j&#8217;ai sursaut&#233; au plafond en me disant &#171; jamais je ne conseillerais &#224; quiconque de mettre en &#339;uvre ce genre de choses &#187;. Et de fil en aiguille, quelques ann&#233;es plus tard j&#8217;avoue avoir un peu chang&#233; d&#8217;avis en m&#8217;apercevant qu&#8217;Evans avait vu juste sur un certain nombre de points. Le domaine deviendrait un &#233;l&#233;ment central d&#8217;une application fortement coupl&#233;e (je ne parle pas de SOA ou d&#8217;urbanisation qui se situe &#224; un niveau plus haut) et <a href="http://domaindrivendesign.org/discussion/messageboardarchive/UbiquitousLanguage.html">l&#8217;ubiquitous langage</a>, un alli&#233; de poids pour la formalisation du besoin MOE/MOA. </p>

<p>Lorsque les temples communautaires (que ce soit Java ou .NET) ont commenc&#233; &#224; inviter en 2007 les adeptes du DDD pour parler du sujet, j&#8217;ai compris qu&#8217;une nouvelle tendance s&#8217;amor&#231;ait. Il se trouvait que cette communaut&#233; partageait aussi un certain nombre de valeurs avec les communaut&#233;s dites &#171; agiles &#187;, le refactoring, le TDD mais aussi le mapping O/R.</p>

<p>Parler DDD au Symposium me paraissait du coup in&#233;luctable tant la communaut&#233; Francophone dans ce domaine &#233;tait inexistante.<br />
De l&#8217;avis de tous, les deux seuls ouvrages sur DDD publi&#233;s &#224; ce jour en 5 ans sont d&#8217;une complexit&#233; effroyable m&#234;me pour un expert du domaine. J&#8217;avoue avoir relu 3 fois l&#8217;Evans et quasiment autant de fois le Nilsson en .NET. Je n&#8217;ai jamais entendu deux personnes &#233;voquer le sujet de la m&#234;me mani&#232;re. Et pour cause, le DDD laisse trop de place &#224; la subjectivit&#233;. Et je ne parle pas des multiples n&#233;ologismes cr&#233;&#233;s parfois de toute pi&#232;ce par Evans pour introduire des termes tels que les agr&#233;gats, les repositories, les value object ou les factories. Des notions qui ont bien entendu un sens tr&#232;s pr&#233;cis dans la philosophie DDD mais autant de sens technique utilis&#233; &#224; tord et &#224; travers.<br />
 <br />
Du coup, soit je traitais le sujet DDD &#224; la mode pure Evans, soit je donnais ma vision du DDD (celle qui me semble la plus pragmatique) pour tenter de convaincre le maximum de personnes qu&#8217;il y avait tout de m&#234;me des choses pertinentes dans le DDD. Charge ensuite &#224; chacun d&#8217;y aller en fonction de sa sensibilit&#233; ou de s&#8217;arr&#234;ter en posant ses limites. J&#8217;ai pr&#233;f&#233;r&#233; la seconde option car elle correspondait mieux &#224; ma vision du DDD. </p>

<p>J&#8217;ai pass&#233; des ann&#233;es &#224; lutter contre le syndrome du DTO et de ce que j&#8217;appelle la mode des entit&#233;s de services. Cette approche, que je consid&#232;re aujourd&#8217;hui comme &#171; vieille &#233;cole &#187; consiste &#224; cr&#233;er des objets m&#233;tier type Facture, Commandes, Client et &#224; y ins&#233;rer le maximum de code technique. Lorsque 80% de ce code est de type infrastructure, pour &#234;tre pr&#233;cis, des acc&#232;s en base, les probl&#232;mes techniques surviennent tr&#232;s vite. Par d&#233;finition mais aussi il est vrai par conviction, je consid&#232;re qu&#8217;une entit&#233; ne doit pas &#234;tre associ&#233;e &#224; une quelconque API Technique, ce f&#251;t le sujet de ma derni&#232;re session Symposium en 2005 et je n&#8217;en d&#233;mordrais pas. Lorsqu'une entit&#233; de service ne peut &#234;tre v&#233;hicul&#233;e sur la couche de pr&#233;sentation, le d&#233;veloppeur la copie g&#233;n&#233;ralement dans un ValueObject.</p>

<p>Par ailleurs, nous sommes nombreux dans la communaut&#233; &#224; penser que le DDD se trompe en voulant &#224; tout prix s&#8217;appuyer sur des Repositories. Le premier &#224; avoir trait&#233; ce probl&#232;me est Christian Bauer, co-cr&#233;ateur d&#8217;Hibernate avec son fameux billet : <a href="http://tinyurl.com/3a22qg">&#171; Repository Pattern vs. Transparent Persistence &#187;</a>. Il explique tr&#232;s concr&#232;tement, exemple &#224; l&#8217;appui que le domaine doit rester &#171; clean &#187;. <i> I think this pattern is a step backwards and should not be recommended.  Keep the domain model implementation clean, testable, and reusable: no security checks, transaction demarcation, or explicit data store access in any of these classes.</i> C&#8217;est aussi mon avis. Gavin King son collistier, enfonce le clou dans <a href="http://tinyurl.com/2l5uhg">ce billet (Still Confused about Repositories)</a> : <i>Do we /really/ need another stupid layer in our already horribly over-engineered Java applications?</i>. La <a href="http://www.fabiokung.com/2007/11/12/comments-to-gavin-king-about-ddd-and-repositories/">r&#233;ponse donn&#233;e</a> par Fabio Kung  montre &#224; quel point subsiste cette forme d'hypocrisie dans le DDD qui consiste &#224; ne pas appeler un chat un chat. Il illustre une DAO d&#8217;un c&#244;t&#233; et un Repository de l&#8217;autre. Jugez-en par vous-m&#234;me, seul le nom de la classe change et conclut par <i>&#171; But err&#8230; what&#8217;s the difference? Just the name? YES! But the names are important, right?&#8221;</i>. Les noms sont peut-&#234;tre importants, mais pas au point de cr&#233;er une nouvelle couche. Cet exemple montre &#224; lui seul le paradoxe de cette couche du domaine qui s&#8217;appuie sur des DAO, pardon des repositories pour r&#233;cup&#233;rer des donn&#233;es mais refuse l'appellation DAO. <br />
 <br />
Je ne parle m&#234;me pas des probl&#232;mes d&#8217;Eager ou Lazy Fetching qu&#8217;engendre cette d&#233;marche qui se r&#233;sume souvent par &#171; qui peut le plus peut le moins &#187;. Cette proximit&#233; Domaine/DAO emp&#234;che de v&#233;hiculer une entit&#233; de mani&#232;re s&#233;rialis&#233;e sur le poste client et ouvre la porte au syndrome du DTO Evil. Les Repository renvoient des collections d&#8217;entit&#233;s ou des agr&#233;gats et la combinaison des strat&#233;gies de fetching (je r&#233;cup&#232;re un client et ses lignes, un client sans ses lignes, un client et ses factures, etc...) aboutissent in&#233;luctablement &#224; du N+1 Select puisqu'aucun service ne pr&#233;charge au pr&#233;alable les donn&#233;es. J'ai cherch&#233; tr&#232;s longtemps une sorte de "sample" ou de "PetShop" DDD, la seule application disponible sur domaindrivendesign.org est un convertisseur de monnaie. Pas tr&#232;s "business case".</p>

<p>Le contexte de ma pr&#233;sentation et mes griefs &#224; l&#8217;encontre du DDD &#233;tant pos&#233;es, je peux quoter les critiques formul&#233;es par Fabien et Body Splash.</p>

<p>Commen&#231;ons par BodySplash :<br />
<i>&#171; Critiquer une conf&#233;rence de Sami Jaber est un exercice p&#233;rilleux &#187;</i>. Quelle id&#233;e ! La critique constructive est souvent rare, il ne faut pas s'en priver.</p>

<p><i>&#171; Du coup, &#224; se concentrer sur la technique, l'ami Sami passe &#224; c&#244;t&#233; de l'int&#233;r&#234;t de DDD, et en plus se m&#233;lange les pinceaux dans les concepts. &#187; </i></p>

<p>Apr&#232;s le contexte que je viens de poser, on comprendra ais&#233;ment que laisser de c&#244;t&#233; la technique dans toute architecture ne peut-&#234;tre que vou&#233; &#224; l&#8217;&#233;chec. </p>

<p><i>&#171; Il existe en fait 3 types de service d&#233;finit par Evans: les services d'application (interface, export excel), les services d'infrastructure (envoi de mail) et les services du domaine qui r&#233;pondent &#224; un m&#233;tier bien pr&#233;cis (transfert d'argent entre deux comptes par exemple) &#187;</i>.</p>

<p> Cet exemple a &#233;t&#233; donn&#233; par les deux blogs. Effectivement, c&#8217;est ce que Evans dit et c&#8217;est aussi ce que je regrette. Lorsqu&#8217;on souhaite envoyer un mail, il faut &#234;tre dans la couche d&#8217;infrastructure. En revanche, pour faire  un export Excel, il faut &#234;tre dans la couche services d&#8217;application. Tr&#232;s honn&#234;tement, comment peut-on imaginer une seconde d&#233;finir des couches d&#8217;architecture avec des exemples aussi l&#233;gers (le Nilsson reprend d'ailleurs exactement les m&#234;mes exemples). Comment fait-on lorsqu&#8217;on souhaite envoyer un mail contenant un export Excel ? </p>

<p>Une couche ne se d&#233;finit par seulement par des cas fonctionnels, mais aussi par des d&#233;pendances binaires, une architecture physique et logique, un couplage par interface. L&#8217;export Excel est-il c&#244;t&#233; client ou c&#244;t&#233; domaine ? Est-il transactionnel ? Il existe des dizaines de cas o&#249; cette approche atteint ces limites. Je revendique donc l&#8217;explication donn&#233;e pour la couche de service vu sa totale subjectivit&#233;.</p>

<p><i>&#171; Si on en croit Sami Jaber, tout ce qui est sous une racine d'agr&#233;gat est une value object. Faux. &#187; </i><br />
Les webcast seront publi&#233;es en Mars de m&#233;moire, il m&#8217;est difficile de r&#233;pondre &#224; des choses que je n&#8217;ai pas dites. Le slide 15 montre les objets Customer et Order comme des entit&#233;s avec une identit&#233; (la composition, donc les VO concernent les objets de l&#8217;agr&#233;gat) </p>

<p><i>&#171; Une autre confusion est de comparer les repositories aux DAL &#187;</i>. Je pense avoir suffisamment d&#233;montr&#233; qu&#8217;&#224; part le nom de la classe, on peut qualifier le Repository d&#8217;entrep&#244;t, &#231;a n&#8217;en fait pas autre chose qu&#8217;une DAO.</p>

<p><i>&#171; Dans une deuxi&#232;me moiti&#233; de session, Sami Jaber a pr&#233;sent&#233; une mani&#232;re int&#233;ressante de tenter d'automatiser le binding entre les objets du mod&#232;le et la couche pr&#233;sentation. L'id&#233;e est de placer des attributs par exemple sur nos setter des objets du mod&#232;le, et on peut imaginer un framework de pr&#233;sentation capable de lire par r&#233;flexion ces attributs pour automatiquement g&#233;n&#233;rer les validateurs qui vont bien &#187;</i>.<br />
 Pourquoi syst&#233;matiquement recopier c&#244;t&#233; IHM ce qui existe d&#233;j&#224; c&#244;t&#233; Entit&#233;. Bindons nos entit&#233;s, c&#8217;est peut-&#234;tre anti-DDD Evans like, mais largement plus  pragmatique que faire de la r&#233;flection et du DTO &#224; tout va. </p>

<p><i>&#171; il n'existe pas de simple application CRUD &#187;</i>.<br />
Peut-&#234;tre pas &#171; simples &#187;, mais  pas si complexes, s&#251;rement. Une application peut avoir du m&#233;tier sans que cela justifie d&#8217;empiler des couches &#224; tord et &#224; travers. On en a assez souffert ces cinq derni&#232;res ann&#233;es.  </p>

<p>Pour finir et faire &#233;cho &#224; Fabien :<br />
<i>&#171; Au del&#224; de ce que Sami a dit, c'est surtout ce qu'il n'a pas dit qui me g&#234;ne. Je sens bien qu'il n'adh&#232;re pas du tout &#224; DDD &#187;</i>.<br />
Fabien, j&#8217;adh&#232;re sinc&#232;rement au fondements pragmatiques du DDD et la place centrale que le domaine doit jouer dans les applications de demain. Mais je rejette les d&#233;lires d&#8217;architectes en mal de couches qui ont plomb&#233; tant de projets ces derni&#232;res ann&#233;es. Dans la m&#234;me lign&#233;e que Gavin King et Christian Bauer qui l&#8217;expliquent d&#8217;ailleurs tr&#232;s bien.</p>

<p><i>&#171; Ce langage n'est pas, comme il le dit, un jargon sp&#233;cifique du projet &#187;</i>.<br />
M&#234;me remarque que pr&#233;c&#233;demment cf Page 11 de mon slideshare, il est bien pr&#233;cis&#233; que c'est un langage technique entre MOA/MOE.<br />
 <br />
<i>&#171; Les entit&#233;s du mod&#232;le ne sont pas forc&#233;ment expos&#233;es aussi brutalement &#224; une couche de pr&#233;sentation; la mise en place d'un couche applicative est parfois indispensable, ce qui, dans une approche du "tout bind&#233;" est infaisable &#187;</i>.<br />
Lorsqu&#8217;une entit&#233; r&#233;pond &#224; un besoin de pr&#233;sentation, on l&#8217;utilise. Lorsqu&#8217;une entit&#233; ne r&#233;pond pas au visuel d&#8217;une IHM, on utilise un Value Object contrairement &#224; une d&#233;marche syst&#233;matique qui consiste &#224; cloner &#224; tout va des grappes d&#8217;objets. Sur une application de gestion &#171; traditionnelle &#187;, plus de 80% des &#233;crans peuvent bind&#233;s sur des entit&#233;s. Sans sacrifier le Design, le gain en termes de productivit&#233; est &#233;norme. Lorsqu'on essaie de forcer le DDD dans sa forme la plus extr&#232;me contre les r&#233;alit&#233;s projets, on arrive aux &#233;checs que tu cites toi m&#234;me dans ce <a href="http://fabien.bezagu.free.fr/index.php?2008/01/23/6-aveu-d-echec">billet</a>. </p>

<p>Pour finir le d&#233;bat, Fabien et BodySplash, je comprends votre d&#233;ception par rapport au fait que je n&#8217;ai pas soutenu DDD sans r&#233;serve dans cette session. Mais "ne pas soutenir" ne signifie pas "ne pas comprendre" ou "sortir des &#233;normit&#233;s". Avec cette r&#233;ponse, j&#8217;imagine que le contexte est plus clair. Si ce n&#8217;est pas le cas, je vous invite tous les deux, &#224; r&#233;diger un article que je publierais avec grand plaisir sur DNG pour continuer le d&#233;bat. <a href="http://www.linkedin.com/pub/3/964/2B7">Steve Degosserie</a>, qui a assist&#233; &#224; la session m&#8217;a propos&#233; de traiter le sujet de mani&#232;re plus pouss&#233;e dans un futur article. N&#8217;h&#233;sitez pas &#224; en faire de m&#234;me.</p>

<p>Sami</p>
<div class="item_footer"><p><small><a href="http://www.dotnetguru2.org/sami/index.php/2008/02/13/retours_symposium_dng">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dotnetguru2.org/sami/index.php/2008/02/13/retours_symposium_dng#comments</comments>
			<wfw:commentRss>http://www.dotnetguru2.org/sami/index.php?tempskin=_rss2&#38;disp=comments&#38;p=818</wfw:commentRss>
		</item>
				<item>
			<title>Code ouvert, oui mais  ...</title>
			<link>http://www.dotnetguru2.org/sami/index.php/2008/01/20/code_ouvert_oui_mais</link>
			<pubDate>Sun, 20 Jan 2008 15:08:56 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">.NET</category>			<guid isPermaLink="false">811@http://www.dotnetguru2.org/</guid>
						<description>&lt;p&gt;Bonjour &amp;#224; tous et bonne ann&amp;#233;e 2008 avec beaucoup de retard. J'en profite aussi pour remercier ceux qui m'ont gentiment envoy&amp;#233; un mail ou pass&amp;#233; un coup de fil. &lt;/p&gt;

&lt;p&gt;L'ann&amp;#233;e 2008 s'annonce tr&amp;#232;s riche, pour &lt;a href=&quot;http://www.dotnetguru.org&quot;&gt;DNG.org&lt;/a&gt; mais aussi pour &lt;a href=&quot;http://www.dng-consulting.com/&quot;&gt;DNG-Consulting&lt;/a&gt;, lequel a tendance &amp;#224; prendre en ce moment beaucoup de place sur les quelques slots r&amp;#233;serv&amp;#233;s &amp;#224; mon activit&amp;#233; de webmaster DNG.&lt;/p&gt;

&lt;p&gt;Mais promis, parmi mes nouvelles r&amp;#233;solutions, celle de blogguer plus, continuer &amp;#224; publier sur DNG ou ailleurs (j'en profite pour vous informer qu'un article sur le DDD sortira dans un prochain hors s&amp;#233;rie du magazine &lt;a href=&quot;http://www.programmez.com&quot;&gt;Programmez&lt;/a&gt;), celle ne de pas vous faire regretter le prochain Symposium DNG (tr&amp;#232;s prenant). Et celle enfin d'organiser un s&amp;#233;minaire technique tr&amp;#232;s particulier qui me tient &amp;#224; coeur et dont je livrerai quelques d&amp;#233;tails courant F&amp;#233;vrier. &lt;/p&gt;

&lt;p&gt;2008 sera une ann&amp;#233;e tr&amp;#232;s sp&amp;#233;ciale pour moi car c'est d'une certaine mani&amp;#232;re un retour aux sources. Contrairement aux ann&amp;#233;es pr&amp;#233;c&amp;#233;dentes (tr&amp;#232;s &quot;&amp;#233;vang&amp;#233;lisantes&quot;), mon activit&amp;#233; sera focalis&amp;#233;e &amp;#224; 80% sur du d&amp;#233;veloppement et la mise en pratique des nombreuses id&amp;#233;es/bonnes pratiques formalis&amp;#233;es plus ou moins dans ma t&amp;#234;te depuis des ann&amp;#233;es. Que ce soit sur la partie serveur (EJB3, SOA, WCF) ou cliente (GWT, Volta, Swing, etc..), je ferais partager tout au long de l'ann&amp;#233;e ces bonnes pratiques, &amp;#224; commencer par le Symposium DNG qui sera un avant-go&amp;#251;t de la conf&amp;#233;rence suivante.  &lt;/p&gt;

&lt;p&gt;Sinon, pour ne pas donner &amp;#224; ce billet un parfum d'auto-actualit&amp;#233; pseudo nombriliste, je voulais rebondir sur la &lt;a href=&quot;http://tinyurl.com/2cfh5w&quot;&gt;derni&amp;#232;re annonce de Microsoft&lt;/a&gt; (relay&amp;#233;e par Scott Guthrie) d&amp;#233;voilant tr&amp;#232;s officiellement les manipulations &amp;#224; suivre pour profiter du code source du Framework .NET. &lt;/p&gt;

&lt;p&gt;Ces manipulations marchent parfaitement sur mon poste, j'ai enfin pu lire le code source de la classe &lt;i&gt;Control.cs&lt;/i&gt; du namespace &lt;i&gt;System.Windows.Forms&lt;/i&gt; sans avoir l'impression de violer une quelconque licence (cf Reflector). En revanche, je trouve que cette ouverture n'est pas encore suffisante ou plut&amp;#244;t trop contraignante. Pour b&amp;#233;n&amp;#233;ficier de cet acc&amp;#232;s, le poste de d&amp;#233;veloppement doit :&lt;br /&gt;
- Poss&amp;#233;der une connexion Internet ouverte en permanence&lt;br /&gt;
- &amp;#234;tre en session de Debug avec &lt;a href=&quot;http://www.dotnetguru2.org/sami/media/loadsymbols.jpg&quot;&gt;la pile d'ex&amp;#233;cution affich&amp;#233;e dans une console&lt;/a&gt; sur la classe du Framework qu'on souhaite visualiser&lt;br /&gt;
- T&amp;#233;l&amp;#233;charger un &quot;patch&quot; particulier pour VS.NET&lt;/p&gt;

&lt;p&gt;Il faut avouer que pour quelqu'un qui cherche &amp;#224; comprendre du code source en passant d'une classe &amp;#224; l'autre, on fait plus simple. D'autant plus que la m&amp;#234;me op&amp;#233;ration sous Eclipse se r&amp;#233;sume &amp;#224; un &quot;Attach Source Code&quot; sur une archive (l'&amp;#233;quivalent d'une DLL .NET) suivi d'un simple control+click ouvrant automatiquement le code source sur la m&amp;#233;thode ou classe en question.&lt;/p&gt;

&lt;p&gt;Du coup, j'ai essay&amp;#233; d'analyser la mani&amp;#232;re dont Visual Studio s'y prenait pour r&amp;#233;cup&amp;#233;rer ce code source. Le tout en pla&amp;#231;ant un proxy entre VS.NET 2008 et le &quot;Web&quot; dans une session Fiddler. &lt;/p&gt;

&lt;p&gt;Les r&amp;#233;sultats de &lt;a href=&quot;http://www.dotnetguru2.org/sami/media/fiddler.jpg&quot;&gt;l'analyse &lt;/a&gt;Fiddler sont plut&amp;#244;t &amp;#233;tonnants, ils nous indiquent que le serveur de source est ReferenceSource.microsoft.com et que les sources sont plac&amp;#233;s hi&amp;#233;rarchiquement suivant une convention de nommage plut&amp;#244;t complexe. Autant dire qu'on est loin d'un serveur SVN, CVS ou TFS (Team Foundation Server). Autre aspect plut&amp;#244;t d&amp;#233;routant, lorsqu'on acc&amp;#232;de via un navigateur &amp;#224; ce repository, toute requ&amp;#234;te se solde par un status code 400, une page blanche en quelque sorte. &lt;/p&gt;

&lt;p&gt;Microsoft a donc prot&amp;#233;g&amp;#233; ces sources pour que seul Visual Studio puisse y acc&amp;#233;der avec une cl&amp;#233; priv&amp;#233;e particuli&amp;#232;re (plac&amp;#233;e dans le cookie RSCCAuth). Lorsqu'on essaye la premi&amp;#232;re fois de t&amp;#233;l&amp;#233;charger un fichier, une page d&amp;#233;di&amp;#233;e &amp;#224; la licence s'affiche. Apr&amp;#232;s acceptation, un cookie est g&amp;#233;n&amp;#233;r&amp;#233; et servira de cl&amp;#233; d'acc&amp;#232;s.&lt;br /&gt;
Autant dire que pour une ouverture annonc&amp;#233;e en fanfare, on aurait pu s'attendre &amp;#224; quelque chose de plus &quot;Ouvert&quot; justement ;-).&lt;/p&gt;

&lt;p&gt;Bref, tout cela m'a donn&amp;#233; une id&amp;#233;e (et oui encore!). Reflector s'est fait une r&amp;#233;putation mondiale sur la d&amp;#233;compilation de code source. On pourrait imaginer un plugin VS.NET qui, sur l'appui de la touche F3 (Go To Definition) irait r&amp;#233;cup&amp;#233;rer la cl&amp;#233; Visual Studio g&amp;#233;n&amp;#233;r&amp;#233;e par d&amp;#233;faut pour ensuite enclencher un GET HTTP sur le serveur ReferenceSource. Ce plugin (pas tr&amp;#232;s complexe &amp;#224; d&amp;#233;velopper) serait une aubaine absolue pour nombre de d&amp;#233;veloppeurs et s'appuierait surtout sur la base d'origine de Microsoft.&lt;/p&gt;

&lt;p&gt;D'ailleurs, peut-&amp;#234;tre que Microsoft lui m&amp;#234;me pourrait nous le fournir ?&lt;/p&gt;

&lt;p&gt;A bon entendeur...&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Mise &amp;#224; jour&lt;/b&gt;: bon j'avoue ne pas avoir pu r&amp;#233;sister &amp;#224; l'envie de proof of concepter l'AddIn en question. Ca marche plut&amp;#244;t bien et &amp;#224; priori sans ex&amp;#233;cuter les op&amp;#233;rations list&amp;#233;es sur le site de ScottGu.&lt;br /&gt;
Lancez le &lt;a href=&quot;http://www.dotnetguru2.org/sami/media/SetupNetExplorer.msi&quot;&gt;setupNetExplorer.msi&lt;/a&gt;, une entr&amp;#233;e de menu appara&amp;#238;t dans Tools, une fois activ&amp;#233; l'Add-In t&amp;#233;l&amp;#233;charge la classe Control.cs sur le site de Microsoft avec un cookie d'authentification qui semble fonctionner dans tous les cas. Voici le &lt;a href=&quot;http://www.dotnetguru2.org/sami/media/SourceExplorer.zip&quot;&gt;code source&lt;/a&gt; pour ceux qui souhaiteraient industrialiser le prototype, il n'y a plus qu'&amp;#224; enrichir la base de donn&amp;#233;es des codes sources t&amp;#233;l&amp;#233;chargeables et cabler l'appui sur la touche F3. Avec le disclaimer d'usage sur les responsabilit&amp;#233;s de l'auteur hein ;-) &lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.dotnetguru2.org/sami/index.php/2008/01/20/code_ouvert_oui_mais&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Bonjour &#224; tous et bonne ann&#233;e 2008 avec beaucoup de retard. J'en profite aussi pour remercier ceux qui m'ont gentiment envoy&#233; un mail ou pass&#233; un coup de fil. </p>

<p>L'ann&#233;e 2008 s'annonce tr&#232;s riche, pour <a href="http://www.dotnetguru.org">DNG.org</a> mais aussi pour <a href="http://www.dng-consulting.com/">DNG-Consulting</a>, lequel a tendance &#224; prendre en ce moment beaucoup de place sur les quelques slots r&#233;serv&#233;s &#224; mon activit&#233; de webmaster DNG.</p>

<p>Mais promis, parmi mes nouvelles r&#233;solutions, celle de blogguer plus, continuer &#224; publier sur DNG ou ailleurs (j'en profite pour vous informer qu'un article sur le DDD sortira dans un prochain hors s&#233;rie du magazine <a href="http://www.programmez.com">Programmez</a>), celle ne de pas vous faire regretter le prochain Symposium DNG (tr&#232;s prenant). Et celle enfin d'organiser un s&#233;minaire technique tr&#232;s particulier qui me tient &#224; coeur et dont je livrerai quelques d&#233;tails courant F&#233;vrier. </p>

<p>2008 sera une ann&#233;e tr&#232;s sp&#233;ciale pour moi car c'est d'une certaine mani&#232;re un retour aux sources. Contrairement aux ann&#233;es pr&#233;c&#233;dentes (tr&#232;s "&#233;vang&#233;lisantes"), mon activit&#233; sera focalis&#233;e &#224; 80% sur du d&#233;veloppement et la mise en pratique des nombreuses id&#233;es/bonnes pratiques formalis&#233;es plus ou moins dans ma t&#234;te depuis des ann&#233;es. Que ce soit sur la partie serveur (EJB3, SOA, WCF) ou cliente (GWT, Volta, Swing, etc..), je ferais partager tout au long de l'ann&#233;e ces bonnes pratiques, &#224; commencer par le Symposium DNG qui sera un avant-go&#251;t de la conf&#233;rence suivante.  </p>

<p>Sinon, pour ne pas donner &#224; ce billet un parfum d'auto-actualit&#233; pseudo nombriliste, je voulais rebondir sur la <a href="http://tinyurl.com/2cfh5w">derni&#232;re annonce de Microsoft</a> (relay&#233;e par Scott Guthrie) d&#233;voilant tr&#232;s officiellement les manipulations &#224; suivre pour profiter du code source du Framework .NET. </p>

<p>Ces manipulations marchent parfaitement sur mon poste, j'ai enfin pu lire le code source de la classe <i>Control.cs</i> du namespace <i>System.Windows.Forms</i> sans avoir l'impression de violer une quelconque licence (cf Reflector). En revanche, je trouve que cette ouverture n'est pas encore suffisante ou plut&#244;t trop contraignante. Pour b&#233;n&#233;ficier de cet acc&#232;s, le poste de d&#233;veloppement doit :<br />
- Poss&#233;der une connexion Internet ouverte en permanence<br />
- &#234;tre en session de Debug avec <a href="http://www.dotnetguru2.org/sami/media/loadsymbols.jpg">la pile d'ex&#233;cution affich&#233;e dans une console</a> sur la classe du Framework qu'on souhaite visualiser<br />
- T&#233;l&#233;charger un "patch" particulier pour VS.NET</p>

<p>Il faut avouer que pour quelqu'un qui cherche &#224; comprendre du code source en passant d'une classe &#224; l'autre, on fait plus simple. D'autant plus que la m&#234;me op&#233;ration sous Eclipse se r&#233;sume &#224; un "Attach Source Code" sur une archive (l'&#233;quivalent d'une DLL .NET) suivi d'un simple control+click ouvrant automatiquement le code source sur la m&#233;thode ou classe en question.</p>

<p>Du coup, j'ai essay&#233; d'analyser la mani&#232;re dont Visual Studio s'y prenait pour r&#233;cup&#233;rer ce code source. Le tout en pla&#231;ant un proxy entre VS.NET 2008 et le "Web" dans une session Fiddler. </p>

<p>Les r&#233;sultats de <a href="http://www.dotnetguru2.org/sami/media/fiddler.jpg">l'analyse </a>Fiddler sont plut&#244;t &#233;tonnants, ils nous indiquent que le serveur de source est ReferenceSource.microsoft.com et que les sources sont plac&#233;s hi&#233;rarchiquement suivant une convention de nommage plut&#244;t complexe. Autant dire qu'on est loin d'un serveur SVN, CVS ou TFS (Team Foundation Server). Autre aspect plut&#244;t d&#233;routant, lorsqu'on acc&#232;de via un navigateur &#224; ce repository, toute requ&#234;te se solde par un status code 400, une page blanche en quelque sorte. </p>

<p>Microsoft a donc prot&#233;g&#233; ces sources pour que seul Visual Studio puisse y acc&#233;der avec une cl&#233; priv&#233;e particuli&#232;re (plac&#233;e dans le cookie RSCCAuth). Lorsqu'on essaye la premi&#232;re fois de t&#233;l&#233;charger un fichier, une page d&#233;di&#233;e &#224; la licence s'affiche. Apr&#232;s acceptation, un cookie est g&#233;n&#233;r&#233; et servira de cl&#233; d'acc&#232;s.<br />
Autant dire que pour une ouverture annonc&#233;e en fanfare, on aurait pu s'attendre &#224; quelque chose de plus "Ouvert" justement ;-).</p>

<p>Bref, tout cela m'a donn&#233; une id&#233;e (et oui encore!). Reflector s'est fait une r&#233;putation mondiale sur la d&#233;compilation de code source. On pourrait imaginer un plugin VS.NET qui, sur l'appui de la touche F3 (Go To Definition) irait r&#233;cup&#233;rer la cl&#233; Visual Studio g&#233;n&#233;r&#233;e par d&#233;faut pour ensuite enclencher un GET HTTP sur le serveur ReferenceSource. Ce plugin (pas tr&#232;s complexe &#224; d&#233;velopper) serait une aubaine absolue pour nombre de d&#233;veloppeurs et s'appuierait surtout sur la base d'origine de Microsoft.</p>

<p>D'ailleurs, peut-&#234;tre que Microsoft lui m&#234;me pourrait nous le fournir ?</p>

<p>A bon entendeur...</p>

<p><b>Mise &#224; jour</b>: bon j'avoue ne pas avoir pu r&#233;sister &#224; l'envie de proof of concepter l'AddIn en question. Ca marche plut&#244;t bien et &#224; priori sans ex&#233;cuter les op&#233;rations list&#233;es sur le site de ScottGu.<br />
Lancez le <a href="http://www.dotnetguru2.org/sami/media/SetupNetExplorer.msi">setupNetExplorer.msi</a>, une entr&#233;e de menu appara&#238;t dans Tools, une fois activ&#233; l'Add-In t&#233;l&#233;charge la classe Control.cs sur le site de Microsoft avec un cookie d'authentification qui semble fonctionner dans tous les cas. Voici le <a href="http://www.dotnetguru2.org/sami/media/SourceExplorer.zip">code source</a> pour ceux qui souhaiteraient industrialiser le prototype, il n'y a plus qu'&#224; enrichir la base de donn&#233;es des codes sources t&#233;l&#233;chargeables et cabler l'appui sur la touche F3. Avec le disclaimer d'usage sur les responsabilit&#233;s de l'auteur hein ;-) </p><div class="item_footer"><p><small><a href="http://www.dotnetguru2.org/sami/index.php/2008/01/20/code_ouvert_oui_mais">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dotnetguru2.org/sami/index.php/2008/01/20/code_ouvert_oui_mais#comments</comments>
			<wfw:commentRss>http://www.dotnetguru2.org/sami/index.php?tempskin=_rss2&#38;disp=comments&#38;p=811</wfw:commentRss>
		</item>
				<item>
			<title>Dalvik et la licence Java</title>
			<link>http://www.dotnetguru2.org/sami/index.php/2007/12/04/dalvik_et_la_licence_java</link>
			<pubDate>Tue, 04 Dec 2007 22:03:27 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">.NET</category>			<guid isPermaLink="false">793@http://www.dotnetguru2.org/</guid>
						<description>&lt;p&gt;Je quote une question que m'a pos&amp;#233; &lt;a href=&quot;http://www.dotnetguru.org/articles/teched2007/TechEd2007.htm&quot;&gt;Lionel&lt;/a&gt; et &amp;#224; laquelle j'ai r&amp;#233;pondu en priv&amp;#233; mais vu qu'on me la repos&amp;#233; plusieurs fois je me suis dis qu'elle avait peut-&amp;#234;tre mieux sa place sur ce blog. &lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
(...)&lt;br /&gt;
Salut Sami,&lt;br /&gt;
&lt;br /&gt;
Info ou Intox : tout &amp;#231;a me parait assez obscur : &lt;a href=&quot;http://www.ddj.com/blog/javablog/archives/2007/11/google_android.html&quot;&gt;&lt;a href=&quot;http://www.ddj.com/blog/javablog/archives/2007/11/google_android.html&quot;&gt;http://www.ddj.com/blog/javablog/archives/2007/11/google_android.html&lt;/a&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#231;a te parlera surement plus &amp;#224; toi ?&lt;br /&gt;
(...)&lt;br /&gt;
&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;L'annonce d'Android est effectivement &quot;obscure&quot; pour bons nombres d'entre nous. En d&amp;#233;voilant ce SDK destin&amp;#233; au d&amp;#233;veloppement d'applications Java sur le terminal mobile de Google, l'&amp;#233;diteur a brouill&amp;#233; pas mal de cartes. Android SDK est plus qu'un ensemble d'API. C'est un environnement de d&amp;#233;veloppement et d'ex&amp;#233;cution.   &lt;br /&gt;
Un environnement de d&amp;#233;veloppement constitu&amp;#233; d'un sous ensemble de J2SE et d'API natives li&amp;#233;es &amp;#224; la plateforme d'ex&amp;#233;cution de l'Android, un Linux 2.6 int&amp;#233;grant un scheduler, un gestionnaire de m&amp;#233;moire, un gestionnaire r&amp;#233;seau (3G/Wifi/Bluetooth...), etc. Ce Framework applicatif a &amp;#233;t&amp;#233; con&amp;#231;u de telle sorte que le hardware n'est jamais directement coupl&amp;#233; aux API d'Android et du SDK Java.&lt;br /&gt;
 &lt;br /&gt;
Si la nouvelle plateforme mobile de Google s'arr&amp;#234;tait l&amp;#224;, tout cela serait somme toute banale. La particularit&amp;#233; d'Android SDK tient en effet dans l'environnement d'ex&amp;#233;cution, plus commun&amp;#233;ment appel&amp;#233; Dalvik. Contrairement &amp;#224; ce que j'ai pu lire ici ou l&amp;#224;, Dalvik n'est pas une JVM dans le vrai sens du terme. En effet, Google r&amp;#233;alise du post-processing du Byte-code Java &quot;standard&quot; pour le transformer dans un byte-code optimis&amp;#233; (le .dex) qui sera ensuite interpr&amp;#233;t&amp;#233; par une JVM sp&amp;#233;cialis&amp;#233;e sans phase de JIT. L'optimisation est li&amp;#233;e au fait que le byte-code en question s'appuie sur &lt;a href=&quot;http://lua-users.org/lists/lua-l/2007-11/msg00362.html&quot;&gt;les registres&lt;/a&gt; l&amp;#224; ou la JVM ou la CLR de Microsoft s'appuient sur la pile (et les variables locales). Les registres sont bien plus rapides que la pile mais moins souples. Google a aussi optimis&amp;#233; les appels natifs et au vu de l'h&amp;#233;t&amp;#233;rog&amp;#233;n&amp;#233;it&amp;#233; de la plateforme, ce gain sera plus qu'apr&amp;#233;ciable au moment d'interroger les drivers bluetooth ou Wifi.  &lt;/p&gt;

&lt;p&gt;Bref, Dalvik est un vrai pied de nez &amp;#224; J2ME (qui n'a jamais r&amp;#233;ellement perc&amp;#233; chez les puristes du mobile) et prouve qu'on peut enrichir Java tout en y ajoutant des extensions propri&amp;#233;taires.&lt;br /&gt;
Il y a quelques ann&amp;#233;es, je me rappelle qu'un certain Microsoft avait tent&amp;#233; le m&amp;#234;me genre de holdup en g&amp;#233;n&amp;#233;rant du byte-code MSIL (compatible avec la CLR de Microsoft). Ce langage s'appelait J++ ou J# et reprenait la syntaxe du J2SE avec quelques API propri&amp;#233;taires (notamment les MFC). Quand on connait la suite des &amp;#233;v&amp;#232;nements et les lourdes amendes que Microsoft a d&amp;#251; payer, on comprendra tr&amp;#232;s mal que Google s'en sorte sans une &amp;#233;gratignure. Le march&amp;#233; du Mobile est un march&amp;#233; hautement strat&amp;#233;gique, un accord commercial n'est pas exclu entre les deux firmes m&amp;#234;me si j'ai du mal &amp;#224; cerner l&amp;#224; o&amp;#249; Sun pourrait trouver son b&amp;#233;n&amp;#233;fice ...&lt;/p&gt;

&lt;p&gt;Une affaire &amp;#224; suivre donc.&lt;/p&gt;

&lt;p&gt;PS : &lt;a href=&quot;http://timepedia.blogspot.com/2007/11/gwt-and-android-marriage-made-in-heaven.html&quot;&gt;A lire&lt;/a&gt;. Timepedia prouve avec ce prototype que GWT sait aussi g&amp;#233;n&amp;#233;rer du Java compatible Android. &lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.dotnetguru2.org/sami/index.php/2007/12/04/dalvik_et_la_licence_java&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Je quote une question que m'a pos&#233; <a href="http://www.dotnetguru.org/articles/teched2007/TechEd2007.htm">Lionel</a> et &#224; laquelle j'ai r&#233;pondu en priv&#233; mais vu qu'on me la repos&#233; plusieurs fois je me suis dis qu'elle avait peut-&#234;tre mieux sa place sur ce blog. <br />
<i><br />
(...)<br />
Salut Sami,<br />
<br />
Info ou Intox : tout &#231;a me parait assez obscur : <a href="http://www.ddj.com/blog/javablog/archives/2007/11/google_android.html"><a href="http://www.ddj.com/blog/javablog/archives/2007/11/google_android.html">http://www.ddj.com/blog/javablog/archives/2007/11/google_android.html</a></a><br />
<br />
&#231;a te parlera surement plus &#224; toi ?<br />
(...)<br />
</i></p>

<p>L'annonce d'Android est effectivement "obscure" pour bons nombres d'entre nous. En d&#233;voilant ce SDK destin&#233; au d&#233;veloppement d'applications Java sur le terminal mobile de Google, l'&#233;diteur a brouill&#233; pas mal de cartes. Android SDK est plus qu'un ensemble d'API. C'est un environnement de d&#233;veloppement et d'ex&#233;cution.   <br />
Un environnement de d&#233;veloppement constitu&#233; d'un sous ensemble de J2SE et d'API natives li&#233;es &#224; la plateforme d'ex&#233;cution de l'Android, un Linux 2.6 int&#233;grant un scheduler, un gestionnaire de m&#233;moire, un gestionnaire r&#233;seau (3G/Wifi/Bluetooth...), etc. Ce Framework applicatif a &#233;t&#233; con&#231;u de telle sorte que le hardware n'est jamais directement coupl&#233; aux API d'Android et du SDK Java.<br />
 <br />
Si la nouvelle plateforme mobile de Google s'arr&#234;tait l&#224;, tout cela serait somme toute banale. La particularit&#233; d'Android SDK tient en effet dans l'environnement d'ex&#233;cution, plus commun&#233;ment appel&#233; Dalvik. Contrairement &#224; ce que j'ai pu lire ici ou l&#224;, Dalvik n'est pas une JVM dans le vrai sens du terme. En effet, Google r&#233;alise du post-processing du Byte-code Java "standard" pour le transformer dans un byte-code optimis&#233; (le .dex) qui sera ensuite interpr&#233;t&#233; par une JVM sp&#233;cialis&#233;e sans phase de JIT. L'optimisation est li&#233;e au fait que le byte-code en question s'appuie sur <a href="http://lua-users.org/lists/lua-l/2007-11/msg00362.html">les registres</a> l&#224; ou la JVM ou la CLR de Microsoft s'appuient sur la pile (et les variables locales). Les registres sont bien plus rapides que la pile mais moins souples. Google a aussi optimis&#233; les appels natifs et au vu de l'h&#233;t&#233;rog&#233;n&#233;it&#233; de la plateforme, ce gain sera plus qu'apr&#233;ciable au moment d'interroger les drivers bluetooth ou Wifi.  </p>

<p>Bref, Dalvik est un vrai pied de nez &#224; J2ME (qui n'a jamais r&#233;ellement perc&#233; chez les puristes du mobile) et prouve qu'on peut enrichir Java tout en y ajoutant des extensions propri&#233;taires.<br />
Il y a quelques ann&#233;es, je me rappelle qu'un certain Microsoft avait tent&#233; le m&#234;me genre de holdup en g&#233;n&#233;rant du byte-code MSIL (compatible avec la CLR de Microsoft). Ce langage s'appelait J++ ou J# et reprenait la syntaxe du J2SE avec quelques API propri&#233;taires (notamment les MFC). Quand on connait la suite des &#233;v&#232;nements et les lourdes amendes que Microsoft a d&#251; payer, on comprendra tr&#232;s mal que Google s'en sorte sans une &#233;gratignure. Le march&#233; du Mobile est un march&#233; hautement strat&#233;gique, un accord commercial n'est pas exclu entre les deux firmes m&#234;me si j'ai du mal &#224; cerner l&#224; o&#249; Sun pourrait trouver son b&#233;n&#233;fice ...</p>

<p>Une affaire &#224; suivre donc.</p>

<p>PS : <a href="http://timepedia.blogspot.com/2007/11/gwt-and-android-marriage-made-in-heaven.html">A lire</a>. Timepedia prouve avec ce prototype que GWT sait aussi g&#233;n&#233;rer du Java compatible Android. </p><div class="item_footer"><p><small><a href="http://www.dotnetguru2.org/sami/index.php/2007/12/04/dalvik_et_la_licence_java">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dotnetguru2.org/sami/index.php/2007/12/04/dalvik_et_la_licence_java#comments</comments>
			<wfw:commentRss>http://www.dotnetguru2.org/sami/index.php?tempskin=_rss2&#38;disp=comments&#38;p=793</wfw:commentRss>
		</item>
				<item>
			<title>Serialisation et WCF</title>
			<link>http://www.dotnetguru2.org/sami/index.php/2007/11/28/serialisation_et_wcf</link>
			<pubDate>Tue, 27 Nov 2007 23:17:38 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">.NET</category>			<guid isPermaLink="false">790@http://www.dotnetguru2.org/</guid>
						<description>&lt;p&gt;Je viens de publier quelques &lt;a href=&quot;http://www.dotnetguru.org/modules.php?op=modload&amp;amp;name=News&amp;amp;file=article&amp;amp;sid=1003&amp;amp;mode=thread&amp;amp;order=0&amp;amp;thold=0&quot;&gt;pointeurs&lt;/a&gt; sur des articles d'une valeur inestimable pour tout d&amp;#233;veloppeur .NET. Le sujet de la s&amp;#233;rialisation et du transfert de contrats de donn&amp;#233;es avec WCF lorsqu'on utilise des Entit&amp;#233;s sera au coeur des probl&amp;#233;matiques WCF dans les ann&amp;#233;es &amp;#224; venir. Je voulais couvrir ce sujet plus en profondeur sur DNG mais &lt;a href=&quot;http://oakleafblog.blogspot.com/2007/11/serializing-object-graphs-with-and.html&quot;&gt;OakLeaf&lt;/a&gt; m'a devanc&amp;#233; (et je les remercie d'une certaine mani&amp;#232;re car ils viennent de me faire gagner un heure ou deux de r&amp;#233;daction ;-)). &lt;/p&gt;

&lt;p&gt;Ce qu'il faut retenir, ce sont les diff&amp;#233;rents modes de DCS propos&amp;#233;s par WCF. Pour simuler un couplage fort entre un client/serveur .NET (mode shared type), le NDCS est un passage oblig&amp;#233;. Pour le reste, il vaut mieux &amp;#233;viter de transf&amp;#233;rer des entit&amp;#233;s et pr&amp;#233;f&amp;#233;rer des messages de type DTO.&lt;/p&gt;

&lt;p&gt;Entre .NET Remoting et WCF, je trouve que MS est pass&amp;#233; d'un extr&amp;#234;me &amp;#224; l'autre...&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.dotnetguru2.org/sami/index.php/2007/11/28/serialisation_et_wcf&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Je viens de publier quelques <a href="http://www.dotnetguru.org/modules.php?op=modload&amp;name=News&amp;file=article&amp;sid=1003&amp;mode=thread&amp;order=0&amp;thold=0">pointeurs</a> sur des articles d'une valeur inestimable pour tout d&#233;veloppeur .NET. Le sujet de la s&#233;rialisation et du transfert de contrats de donn&#233;es avec WCF lorsqu'on utilise des Entit&#233;s sera au coeur des probl&#233;matiques WCF dans les ann&#233;es &#224; venir. Je voulais couvrir ce sujet plus en profondeur sur DNG mais <a href="http://oakleafblog.blogspot.com/2007/11/serializing-object-graphs-with-and.html">OakLeaf</a> m'a devanc&#233; (et je les remercie d'une certaine mani&#232;re car ils viennent de me faire gagner un heure ou deux de r&#233;daction ;-)). </p>

<p>Ce qu'il faut retenir, ce sont les diff&#233;rents modes de DCS propos&#233;s par WCF. Pour simuler un couplage fort entre un client/serveur .NET (mode shared type), le NDCS est un passage oblig&#233;. Pour le reste, il vaut mieux &#233;viter de transf&#233;rer des entit&#233;s et pr&#233;f&#233;rer des messages de type DTO.</p>

<p>Entre .NET Remoting et WCF, je trouve que MS est pass&#233; d'un extr&#234;me &#224; l'autre...</p><div class="item_footer"><p><small><a href="http://www.dotnetguru2.org/sami/index.php/2007/11/28/serialisation_et_wcf">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dotnetguru2.org/sami/index.php/2007/11/28/serialisation_et_wcf#comments</comments>
			<wfw:commentRss>http://www.dotnetguru2.org/sami/index.php?tempskin=_rss2&#38;disp=comments&#38;p=790</wfw:commentRss>
		</item>
				<item>
			<title>Deboguer le Paint</title>
			<link>http://www.dotnetguru2.org/sami/index.php/2007/11/12/deboguer_le_paint</link>
			<pubDate>Mon, 12 Nov 2007 20:59:16 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">J2EE</category>			<guid isPermaLink="false">782@http://www.dotnetguru2.org/</guid>
						<description>&lt;p&gt;Quand je pense aux heures pass&amp;#233;es parfois &amp;#224; deviner quand et comment un composant Swing est dessin&amp;#233; ou redessin&amp;#233; &amp;#224; l'&amp;#233;cran (&amp;#233;v&amp;#232;nement paint() ou paintComponent()). Voici un petit deboggueur visuel qui devrait &amp;#234;tre rembours&amp;#233; par la s&amp;#233;curit&amp;#233; sociale. M&amp;#234;me &amp;#224; titre d'information, c'est toujours rigolo de savoir quel partie d'un &amp;#233;cran est redessin&amp;#233; lorsqu'on &amp;#233;volue dans une application. A quand la m&amp;#234;me chose en WinForms ?&lt;br /&gt;
-&gt; &lt;a href=&quot;http://weblogs.java.net/blog/alexfromsun/archive/2007/11/debug_swing_rep.html&quot;&gt;Debug Swing repainting&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.dotnetguru2.org/sami/index.php/2007/11/12/deboguer_le_paint&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Quand je pense aux heures pass&#233;es parfois &#224; deviner quand et comment un composant Swing est dessin&#233; ou redessin&#233; &#224; l'&#233;cran (&#233;v&#232;nement paint() ou paintComponent()). Voici un petit deboggueur visuel qui devrait &#234;tre rembours&#233; par la s&#233;curit&#233; sociale. M&#234;me &#224; titre d'information, c'est toujours rigolo de savoir quel partie d'un &#233;cran est redessin&#233; lorsqu'on &#233;volue dans une application. A quand la m&#234;me chose en WinForms ?<br />
-> <a href="http://weblogs.java.net/blog/alexfromsun/archive/2007/11/debug_swing_rep.html">Debug Swing repainting</a></p><div class="item_footer"><p><small><a href="http://www.dotnetguru2.org/sami/index.php/2007/11/12/deboguer_le_paint">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dotnetguru2.org/sami/index.php/2007/11/12/deboguer_le_paint#comments</comments>
			<wfw:commentRss>http://www.dotnetguru2.org/sami/index.php?tempskin=_rss2&#38;disp=comments&#38;p=782</wfw:commentRss>
		</item>
			</channel>
</rss>
