<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">David Rousset</title><subtitle type="html">aka Luke CloudWalker</subtitle><id>http://blogs.msdn.com/davrous/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/davrous/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2009-05-04T17:59:00Z</updated><entry><title>Quoi de neuf dans IE 9 ?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/11/19/quoi-de-neuf-dans-ie-9.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/11/19/quoi-de-neuf-dans-ie-9.aspx</id><published>2009-11-19T01:24:25Z</published><updated>2009-11-19T01:24:25Z</updated><content type="html">&lt;p&gt;Je me suis occupé de regrouper l’ensemble des nouveautés d’Internet Explorer 9 pour le développeur sur un billet publié sur le blog français d’IE : &lt;a title="http://blogs.msdn.com/iefrance/archive/2009/11/19/pdc09-aper-u-des-nouveaut-s-d-internet-explorer-9-pour-les-d-veloppeurs.aspx" href="http://blogs.msdn.com/iefrance/archive/2009/11/19/pdc09-aper-u-des-nouveaut-s-d-internet-explorer-9-pour-les-d-veloppeurs.aspx"&gt;http://blogs.msdn.com/iefrance/archive/2009/11/19/pdc09-aper-u-des-nouveaut-s-d-internet-explorer-9-pour-les-d-veloppeurs.aspx&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;IE revient donc en force et ça fait plaisir !&lt;/p&gt;  &lt;p&gt;Bien sûr, le keynote du 2ème jour m’a fait ultra plaisir avec la présentation des nouvelles fonctionnalités apportées par &lt;a href="http://silverlight.net/getstarted/silverlight-4-beta/"&gt;Silverlight 4 Beta&lt;/a&gt;. Les démos étaient tout simplement bluffantes. J’y reviendrais dans un prochain billet.&lt;/p&gt;  &lt;p&gt;En attendant, n’hésitez pas à lire mon billet sur IE 9. Vous pourriez être (agréablement ?) surpris !&lt;/p&gt;  &lt;p&gt;David&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9924968" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="PDC09" scheme="http://blogs.msdn.com/davrous/archive/tags/PDC09/default.aspx" /><category term="Internet Explorer 9" scheme="http://blogs.msdn.com/davrous/archive/tags/Internet+Explorer+9/default.aspx" /></entry><entry><title>Web Application Toolkit : tirez parti des nouveautés d’Internet Explorer 8 sur vos sites en 1 clin d’œil</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/11/13/web-application-toolkit-tirez-parti-des-nouveaut-s-d-internet-explorer-8-sur-vos-sites-en-1-clin-d-il.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/11/13/web-application-toolkit-tirez-parti-des-nouveaut-s-d-internet-explorer-8-sur-vos-sites-en-1-clin-d-il.aspx</id><published>2009-11-13T17:28:17Z</published><updated>2009-11-13T17:28:17Z</updated><content type="html">&lt;p&gt;Internet Explorer 8 apporte de nombreuses améliorations et innovations : de nouvelles expériences utilisateur (telles que &lt;strong&gt;webslice&lt;/strong&gt;, &lt;strong&gt;accélérateur&lt;/strong&gt;, &lt;strong&gt;visual search&lt;/strong&gt;, intégration dans Windows 7 et support du multi-touch), une excellente compatibilité avec la norme CSS 2.1, un moteur de rendu plus rapide, des tabs isolés (un par processus) pour améliorer la stabilité, un mode de navigation dit “In-Private” et de nombreuses caractéristiques tournées vers la sécurité faisant de lui certainement &lt;a href="http://nsslabs.com/test-reports/NSS%20Labs%20Browser%20Security%20-%20Socially%20Engineered%20Malware%20Q3%202009.pdf"&gt;le navigateur le plus sûr du marché&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Pour ma part, je vous propose de nous concentrer ici sur les nouveautés autour de l’expérience utilisateur et du travail à effectuer par le développeur web. Nous avions déjà consacré à ce sujet un dossier IE8 pour les développeurs sur MSDN : &lt;a title="http://msdn.microsoft.com/fr-fr/ie/msdn.dossier-ie8.aspx" href="http://msdn.microsoft.com/fr-fr/ie/msdn.dossier-ie8.aspx"&gt;http://msdn.microsoft.com/fr-fr/ie/msdn.dossier-ie8.aspx&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Depuis, nous avons publié un toolkit particulièrement intéressant. Il vous propose de vous simplifier encore plus la tâche en vous livrant des contrôles ASP.NET prêt à déposés sur votre page web. Ces derniers exposent alors facilement un webslice, un accélérateur ou un visual search. Ce même toolkit propose également une application relativement “élaborée” mettant en œuvre ces contrôles. Cela vous donne alors une idée du résultat que vous pouvez mettre en place sur vos propres sites web. Vous pouvez également en profiter pour vous inspirer du code source. L’ensemble est téléchargeable à l’adresse suivante : &lt;a title="http://code.msdn.microsoft.com/WebAppToolkitIE8" href="http://code.msdn.microsoft.com/WebAppToolkitIE8"&gt;http://code.msdn.microsoft.com/WebAppToolkitIE8&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Pour vous aider à mieux comprendre le potentiel caché derrière ces nouveautés, j’ai porté l’application de démo fournie avec ce toolkit sur Windows Azure ici : &lt;a href="http://ie8demo.cloudapp.net"&gt;http://ie8demo.cloudapp.net&lt;/a&gt; . Si vous vous rendez sur ce site à l’aide du navigateur Internet Explorer 8, vous pourrez alors tester ces nouvelles fonctionnalités. Il y a même un joli WebSlice faisant appel à Silverlight 3 à découvrir !&lt;/p&gt;  &lt;p&gt;Voici une idée du rendu visuel des 3 éléments fournis sur le site ie8demo :&lt;/p&gt; &lt;a title="ie8toolkitscreenshot de d_rousset, sur Flickr" href="http://ie8demo.cloudapp.net/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="ie8toolkitscreenshot" src="http://farm3.static.flickr.com/2767/4100913054_e8ddb4822d.jpg" width="500" height="387" /&gt;&lt;/a&gt;   &lt;p&gt;Découvrons comment obtenir la même chose en vidéo dans ce 1er webcast (double-cliquez pour le plein écran) :&lt;/p&gt; &lt;iframe style="width: 500px; height: 375px" src="http://silverlight.services.live.com/invoke/94157/Demo%20WebAppToolkit%20for%20IE8/iframe.html" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;Pour mettre en place le même genre de résultat sur votre site, rien de plus simple. Une fois le toolkit téléchargé, je vous propose de partir de cette solution Visual Studio 2008 simplifiée (extraite du projet &lt;em&gt;IE8WebControls - All&lt;/em&gt;) :&lt;/p&gt; &lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-0ee4bd0f5ea745c6.skydrive.live.com/embedicon.aspx/.Public/DemoWebAppToolkitIE8.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;Ensuite, il ne reste plus qu’à “drag’n’dropper” ces fameux contrôles, à remplir quelques propriétés et le tour est joué ! Voici ce qu’il faut faire en vidéo :&lt;/p&gt; &lt;iframe style="width: 500px; height: 375px" src="http://silverlight.services.live.com/invoke/94157/Demo%20WebAppToolkit%20for%20IE8%20-%20Part%202/iframe.html" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;Simple n’est-ce pas ?&lt;/p&gt;  &lt;p&gt;En complément au dossier MSDN IE8 dont je vous parlais plus haut et à ce Web Application Toolkit, je vous conseille vivement la session suivante des Microsoft Days 2009 : &lt;a href="http://www.microsoft.com/france/vision/msdays09/Webcast.aspx?EID=0d4549f8-5f49-4004-bd7e-233a1fa6a0ab"&gt;[MsDays09] - Internet Explorer 8 côté developpement&lt;/a&gt; réalisée par nos experts Français du support d’escalade. Ils ont pensé à des scénarios d’accélérateurs et webslices intéressants. Par ailleurs, vous découvrirez tout ce qu’un développeur doit savoir autour d’IE8. Elle complète ainsi une session que nos amis d’Ucaya avaient réalisé aux &lt;a href="http://www.microsoft.com/france/vision/mstechdays09/Webcast.aspx?EID=ec19917b-872e-42a3-af37-25495acf6b05"&gt;TechDays 2009&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/stanislas"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="4053721348_df4b3662e9[1]" border="0" alt="4053721348_df4b3662e9[1]" src="http://farm4.static.flickr.com/3501/4053721348_df4b3662e9.jpg" width="240" height="107" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Pour conclure, je vous invite à lire les articles écrit par mon collègue Stan sur IE 8 autour de la sécurité, du déploiement et de l’administration du navigateur dans l’entreprise :    &lt;br /&gt;    &lt;br /&gt;- &lt;a href="http://blogs.technet.com/stanislas/archive/2009/09/15/vue-d-ensemble-d-internet-explorer-8-pour-l-entreprise-en-moins-de-22-min.aspx"&gt;Vue d'ensemble d'Internet Explorer 8 pour l'entreprise en moins de 22 min&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://blogs.technet.com/stanislas/archive/2009/10/28/d-ploiement-d-internet-explorer-8-0-dans-l-entreprise-partie-1-introduction.aspx"&gt;Déploiement d'Internet Explorer 8.0 dans l'entreprise - partie 1 : introduction&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://blogs.technet.com/stanislas/archive/2009/10/29/d-ploiement-d-internet-explorer-8-0-dans-l-entreprise-partie-2.aspx"&gt;Déploiement d'Internet Explorer 8.0 dans l'entreprise - partie 2&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://blogs.technet.com/stanislas/archive/2009/11/06/d-ploiement-d-internet-explorer-8-0-dans-l-entreprise-partie-3.aspx"&gt;Déploiement d'Internet Explorer 8.0 dans l'entreprise - partie 3&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://blogs.technet.com/stanislas/archive/2008/08/27/vie-privee-et-internet-explorer-8-nouvelles-fonctions.aspx"&gt;Vie privee et Internet Explorer 8 : nouvelles fonctions&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://blogs.technet.com/stanislas/archive/2009/11/13/filtre-smartscreen-dans-internet-explorer-8-0-partie-1.aspx"&gt;Filtre Smartscreen dans Internet Explorer 8.0 - partie 1&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Il n’y a tout simplement aucun autre navigateur proposant une telle richesse pour l’administration dans l’entreprise.&lt;/p&gt;  &lt;p&gt;David&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9922075" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="Internet Explorer 8" scheme="http://blogs.msdn.com/davrous/archive/tags/Internet+Explorer+8/default.aspx" /><category term="ASPNET" scheme="http://blogs.msdn.com/davrous/archive/tags/ASPNET/default.aspx" /></entry><entry><title>Retrouvez l’ensemble des vidéos et présentations des Microsoft Days 2009</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/11/06/retrouvez-l-ensemble-des-vid-os-et-pr-sentations-des-microsoft-days-2009.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/11/06/retrouvez-l-ensemble-des-vid-os-et-pr-sentations-des-microsoft-days-2009.aspx</id><published>2009-11-06T18:35:00Z</published><updated>2009-11-06T18:35:00Z</updated><content type="html">&lt;A title="header_ms_days de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4080370545/" mce_href="http://www.flickr.com/photos/35281337@N05/4080370545/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=header_ms_days src="http://farm3.static.flickr.com/2540/4080370545_fb7f3c53bf_o.jpg" width=800 height=173 mce_src="http://farm3.static.flickr.com/2540/4080370545_fb7f3c53bf_o.jpg"&gt;&lt;/A&gt; 
&lt;P&gt;Les voici enfin toutes réunies ici : &lt;A title=http://www.lancements-microsoft.fr/webcasts href="http://www.lancements-microsoft.fr/webcasts" mce_href="http://www.lancements-microsoft.fr/webcasts"&gt;http://www.lancements-microsoft.fr/webcasts&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Pour ma part, outre la plénière, j’ai animé les sessions suivantes:&lt;/P&gt;
&lt;P&gt;1 - &lt;A href="http://www.microsoft.com/france/vision/msdays09/Webcast.aspx?EID=1a3286f2-36af-4830-a13b-eb4b03533062" mce_href="http://www.microsoft.com/france/vision/msdays09/Webcast.aspx?EID=1a3286f2-36af-4830-a13b-eb4b03533062"&gt;[MsDays09] - Silverlight 3 : nouveautés et scénarios entreprise avec .NET RIA Services&lt;/A&gt; &lt;BR&gt;2 - &lt;A href="http://www.microsoft.com/france/vision/msdays09/Webcast.aspx?EID=b46f5256-54ee-476d-bcc9-0abf8c3637d6" mce_href="http://www.microsoft.com/france/vision/msdays09/Webcast.aspx?EID=b46f5256-54ee-476d-bcc9-0abf8c3637d6"&gt;[MsDays09] - Développement ASP.NET et ASP.NET MVC&lt;/A&gt; lorsque mon collègue &lt;A href="http://blog.couzy.com/" mce_href="http://blog.couzy.com/"&gt;Pierre Couzy&lt;/A&gt; n’était pas disponible&amp;nbsp; &lt;BR&gt;3 - &lt;A href="http://www.microsoft.com/france/vision/msdays09/Webcast.aspx?EID=bcadbb36-8c30-4429-9296-2a3359e16f20" mce_href="http://www.microsoft.com/france/vision/msdays09/Webcast.aspx?EID=bcadbb36-8c30-4429-9296-2a3359e16f20"&gt;[MsDays09] - Le Cloud Computing et le Système d'Information : Enjeux, opportunités et mise oeuvre&lt;/A&gt; avec mon collègue &lt;A href="http://blogs.technet.com/dcaro" mce_href="http://blogs.technet.com/dcaro"&gt;Damien Caro&lt;/A&gt; &lt;BR&gt;4 - &lt;A href="http://www.microsoft.com/france/vision/msdays09/Webcast.aspx?EID=3171c8a8-e5e3-41c1-a1d0-a10287b82f93" mce_href="http://www.microsoft.com/france/vision/msdays09/Webcast.aspx?EID=3171c8a8-e5e3-41c1-a1d0-a10287b82f93"&gt;[MsDays09] – CloudyPizza ou comment utiliser Windows Azure et Microsoft Online Services pour gérer la croissance de mon entreprise&lt;/A&gt; toujours en compagnie de Damien. &lt;/P&gt;
&lt;P&gt;Sachant que mon &lt;A href="http://blogs.msdn.com/davrous/archive/2009/10/26/cloudy-pizza-une-application-silverlight-3-net-ria-services-indexable-dans-les-nuages.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/10/26/cloudy-pizza-une-application-silverlight-3-net-ria-services-indexable-dans-les-nuages.aspx"&gt;post précédent&lt;/A&gt; rendre dans le détails de ce qui est montré en démonstration dans les sessions Silverlight 3 et Windows Azure/Microsoft Online Services où &lt;A href="http://cloudypizza.cloudapp.net/" mce_href="http://cloudypizza.cloudapp.net/"&gt;Cloudy Pizza&lt;/A&gt; se retrouve être la base de nos explications.&lt;/P&gt;
&lt;P&gt;David&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9918728" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="Microsoft Days" scheme="http://blogs.msdn.com/davrous/archive/tags/Microsoft+Days/default.aspx" /></entry><entry><title>Cloudy Pizza : une application Silverlight 3 .NET RIA Services indexable dans les nuages !</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/10/26/cloudy-pizza-une-application-silverlight-3-net-ria-services-indexable-dans-les-nuages.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/10/26/cloudy-pizza-une-application-silverlight-3-net-ria-services-indexable-dans-les-nuages.aspx</id><published>2009-10-26T19:41:26Z</published><updated>2009-10-26T19:41:26Z</updated><content type="html">&lt;p&gt;Pour ceux qui ont assisté aux Microsoft Days 2009 (que ce soit à Paris ou en région) aux sessions plénières ou aux sessions sur le cloud computing, vous avez pu découvrir ma magnifique application nommée “Cloudy Pizza”. Sous un air pas très sérieux, je me suis en fait amusé à inclure pas mal de notions intéressantes. Je vous propose ainsi de voir ensemble l’ensemble des fonctionnalités que j’ai mis en place et nous essaierons au travers de prochains billets de voir en détail comment les implémenter.&lt;/p&gt;  &lt;p&gt;Voici en vrac ce que j’ai mis dedans: application Silverlight 3 &lt;font color="#400080"&gt;&lt;strong&gt;SEO Friendly&lt;/strong&gt;&lt;/font&gt; (indexable par les moteurs de recherches), &lt;font color="#400080"&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-1-4.aspx"&gt;.NET RIA Services&lt;/a&gt;&lt;/strong&gt;&lt;/font&gt; connectée à une source &lt;font color="#400080"&gt;&lt;strong&gt;SQL Azure&lt;/strong&gt;&lt;/font&gt;, hébergement dans &lt;font color="#400080"&gt;&lt;strong&gt;Windows Azure&lt;/strong&gt;&lt;/font&gt;, utilisation de &lt;font color="#400080"&gt;&lt;strong&gt;Membership Provider ASP.NET branchés sur le storage Azure&lt;/strong&gt;&lt;/font&gt;, écriture du code en suivant le pattern &lt;font color="#400080"&gt;&lt;strong&gt;MVVM&lt;/strong&gt;&lt;/font&gt; (Model View View-Model) et framework de pages dynamiques en fonction du statut de l’authentification. Pour terminer, lorsque l’on commande une pizza (vous pouvez le faire en vous créant un compte sur mon application), une ressource est réservée sur &lt;font color="#400080"&gt;&lt;strong&gt;Exchange Online&lt;/strong&gt;&lt;/font&gt; (faisant parti de la suite BPOS pour Business Productivity Online Suite) et un email de confirmation vous est envoyé. L’idée est venue de &lt;a href="http://blogs.technet.com/dcaro/"&gt;Damien Caro&lt;/a&gt; qui souhaitait pouvoir utiliser Exchange Online pour réserver automatiquement un parc de motos/mobylettes pour les livraisons. Ensuite, les livreurs de pizzas reçoivent automatiquement les commandes à livrer sur leur mobile synchronisé à Exchange. Il m’a donc aidé à écrire le code sur cette partie. &lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;font color="#008080"&gt;&lt;strong&gt;Liens directs vers les sections :&lt;/strong&gt;&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="#seo"&gt;1 - Une application Silverlight 3 indexable par les moteurs de recherches ?&lt;/a&gt;     &lt;br /&gt;&lt;a href="#azure"&gt;2 - Un hébergement dans le cloud pour répondre à la charge de manière élastique&lt;/a&gt;     &lt;br /&gt;&lt;a href="#azuredev"&gt;3 - Quels sont les impacts d’Azure sur le développement ?&lt;/a&gt;     &lt;br /&gt;&lt;a href="#dynpages"&gt;4 - Des pages dynamiques en fonction du rôle et du niveau d’authentification&lt;/a&gt;     &lt;br /&gt;&lt;a href="#bpos"&gt;5 - L’utilisation d’Exchange Online via ses WebServices&lt;/a&gt;     &lt;br /&gt;&lt;a href="#mvvm"&gt;6 - M-V-VM ?&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;u&gt;&lt;font color="#008080"&gt;Vous pouvez tester l’application ici :&lt;/font&gt;&lt;/u&gt;&lt;/em&gt;&amp;#160;&lt;font color="#800000"&gt;&lt;strong&gt;--&amp;gt;&lt;/strong&gt;&lt;/font&gt; &lt;a href="http://cloudypizza.cloudapp.net"&gt;&lt;font size="3"&gt;http://cloudypizza.cloudapp.net&lt;/font&gt;&lt;/a&gt; &lt;font color="#800000"&gt;&lt;strong&gt;&amp;lt;--&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;a name="seo"&gt;   &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Une application Silverlight 3 indexable par les moteurs de recherches ?&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/a&gt;  &lt;p&gt;Bien sûr ! Je suis en fait parti du sample “&lt;a href="http://code.msdn.microsoft.com/RiaServices/Release/ProjectReleases.aspx?ReleaseId=2390"&gt;Silverlight Store&lt;/a&gt;” qui jette les bases de la construction d’une application Silverlight 3 indexable par les moteurs de recherches. Cela consiste en fait à utiliser la productivité amenée par .NET RIA Services pour nous aider à :&lt;/p&gt;  &lt;p&gt;- générer un contenu alternatif en HTML via ASP.NET    &lt;br /&gt;- générer facilement le robots.txt et sitemap.aspx utilisés par les moteurs de recherches     &lt;br /&gt;- coupler la même URL à 2 expériences différentes : ASP.NET ou Silverlight 3. Pour cela, on utilise intelligemment le moteur de routing d’ASP.NET avec celui de Silverlight 3. &lt;/p&gt;  &lt;p&gt;Le sample Silverlight Store était basé sur un contenu XML. Je me suis donc simplement occupé de le transformer pour me connecter à une source SQL Server puis SQL Azure. Le passage de SQL Server à SQL Azure étant particulièrement simple puis qu’il a fallu uniquement changer ma chaîne de connexion pour que mon modèle Entity Framework se mette à discuter avec SQL Azure plutôt avec mon instance locale SQL Express 2008. &lt;/p&gt;  &lt;p&gt;Alors comment ça marche? L’idée est de partir d’une master page ASP.NET dans laquelle on inclut la référence à notre application Silverlight. Ainsi, 2 routes s’offrent aux navigateurs lorsque l’on se connecte sur le site sur la même URL:&lt;/p&gt;  &lt;p&gt;- Route 1 : le plug-in Silverlight n’est pas installé ou pas supporté par le navigateur (iPhone par exemple), on affiche alors un contenu HTML    &lt;br /&gt;- Route 2 : le plug-in Silverlight est disponible, on bascule sur l’expérience riche RIA&lt;/p&gt;  &lt;p&gt;Par exemple, prenez le cas de cette URL complète : &lt;a title="http://cloudypizza.cloudapp.net/Pizza.aspx?Name=Pizza+des+indecis" href="http://cloudypizza.cloudapp.net/Pizza.aspx?Name=Pizza+des+indecis"&gt;http://cloudypizza.cloudapp.net/Pizza.aspx?Name=Pizza+des+indecis&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Avec le plug-in Silverlight 3 activé, vous noterez 2 choses:&lt;/p&gt; &lt;a title="cloudpizzapost001 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4047109880/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost001" src="http://farm3.static.flickr.com/2546/4047109880_940050e3be_o.jpg" width="660" height="464" /&gt;&lt;/a&gt;   &lt;p&gt;- vous arrivez directement sur la bonne fiche produit. Le framework de routing d’ASP.NET a donc passé la main au moteur de navigation de Silverlight pour que ce dernier aille directement sur le produit “Pizza des indecis”    &lt;br /&gt;- l’URL n’a rien de spécifique à Silverlight&lt;/p&gt;  &lt;p&gt;Du coup, si on désactive le plug-in Silverlight, on arrive sur ce type de contenu:&lt;/p&gt; &lt;a title="cloudpizzapost002 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4046364885/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost002" src="http://farm3.static.flickr.com/2683/4046364885_a1d6791281_o.jpg" width="485" height="436" /&gt;&lt;/a&gt;   &lt;p&gt;Contenu parfaitement compréhensible par un moteur de recherche! Par ailleurs, cela a également l’avantage de proposer un rendu alternatif de qualité aux navigateurs ne supportant pas encore Silverlight.&lt;/p&gt;  &lt;p&gt;De plus, pour aider les moteurs de recherches, vous pouvez analyser le contenu produit par ces 2 URLs: &lt;a title="http://cloudypizza.cloudapp.net/robots.txt" href="http://cloudypizza.cloudapp.net/robots.txt"&gt;http://cloudypizza.cloudapp.net/robots.txt&lt;/a&gt; &amp;amp; &lt;a title="http://cloudypizza.cloudapp.net/Sitemap.aspx" href="http://cloudypizza.cloudapp.net/Sitemap.aspx"&gt;http://cloudypizza.cloudapp.net/Sitemap.aspx&lt;/a&gt;. Le sitemap étant généré dynamiquement en fonction du catalogue produit présent dans notre base de données bien sûr. Pour cela, on utilise un contrôle répéteur d’ASP.NET branché sur le contenu de la base via .NET RIA Services.&lt;/p&gt;  &lt;p&gt;Ainsi, une fois ce travail proprement effectué, vous pouvez effectuer des recherches dans votre moteur de recherche préféré pour retrouver mes pizzas si appétissantes. Par exemple, sur Google : &lt;a title="http://www.google.com/search?hl=fr&amp;amp;source=hp&amp;amp;q=pizza+des+jedis" href="http://www.google.com/search?hl=fr&amp;amp;source=hp&amp;amp;q=pizza+des+jedis"&gt;http://www.google.com/search?hl=fr&amp;amp;source=hp&amp;amp;q=pizza+des+jedis&lt;/a&gt;, 1er hit pour la pizza des jedis ! Je suis super fier ! :) (je sais, il peut apparaître bizarre d’être fier de ce genre de chose). Pareil sur Bing : &lt;a title="http://www.bing.com/search?setflight=0&amp;amp;mkt=fr-fr&amp;amp;q=pizza+frdpe" href="http://www.bing.com/search?setflight=0&amp;amp;mkt=fr-fr&amp;amp;q=pizza+frdpe"&gt;http://www.bing.com/search?setflight=0&amp;amp;mkt=fr-fr&amp;amp;q=pizza+frdpe&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Pour terminer sur ce chapitre, si l’indexation d’applications Silverlight 3 vous intéresse, nous avons travaillé sur la rédaction d’un livre blanc avec notre partenaire Referencement.com que vous pouvez récupérer &lt;a href="http://msdn.microsoft.com/fr-fr/silverlight/msdn.silverlight.referencement.aspx"&gt;ici&lt;/a&gt;.&lt;/p&gt; &lt;a name="azure"&gt;   &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Un hébergement dans le cloud pour répondre à la charge de manière élastique&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/a&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Qu’est ce que le cloud computing en quelques mots? C’est la mise à disposition d’une plateforme de services (PaaS ou Platform as a Service) sous la forme de Data Centers répartis sur la planète vous offrant principalement 2 caractéristiques :&lt;/p&gt;  &lt;p&gt;1 – Héberger ou exécuter votre application (.NET ou PHP) sur des serveurs maintenus, mis à jour, répliqués, géo-localisés (Amérique du nord, Europe, Asie) et sécurisés par un opérateur (Microsoft dans le cas de Windows Azure). Vous n’avez donc plus à vous soucier de la maintenance et de la disponibilité des serveurs hébergeant vos applications.    &lt;br /&gt;2 – Capable de supporter une forte montée en charge en vous mettant à disposition un nombre conséquent de machines sur lesquelles vous pouvez déployer &lt;u&gt;rapidement et très facilement&lt;/u&gt; votre application. De manière analogue, cette plateforme vous permet également de &lt;u&gt;facilement dé-provisionner les machines&lt;/u&gt; que vous vous êtes alloués. C’est ce que l’on appelle l’élasticité : pouvoir suivre de manière très fine la courbe de charge de votre application.&lt;/p&gt;  &lt;p&gt;Voici ainsi 2 illustrations issues du futur coach MSDN sur Windows Azure qui sera bientôt publié ici : &lt;a title="http://msdn.microsoft.com/fr-fr/msdn.coach.aspx" href="http://msdn.microsoft.com/fr-fr/msdn.coach.aspx"&gt;http://msdn.microsoft.com/fr-fr/msdn.coach.aspx&lt;/a&gt;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="350"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="175"&gt;&lt;a title="cloudpizzapost004 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4047110112/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost004" src="http://farm3.static.flickr.com/2586/4047110112_58ced8f3da_o.jpg" width="375" height="282" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="175"&gt;&lt;a title="cloudpizzapost005 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4046365129/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost005" src="http://farm3.static.flickr.com/2627/4046365129_f5496a0648_o.jpg" width="375" height="282" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Sur la 1ère, on voit la vue de l’utilisation d’un data center en fonction de la charge. On s’aperçoit alors que nous ne sommes jamais pleinement efficace sur l’utilisation des ressources allouées. Soit on a trop de serveurs sur les bras et ils deviennent sous-utilisés avec l’impact financier que cela comporte : frais de maintenance, administration, amortissement, etc. Soit on a pas assez de serveurs et l’application n’est plus capable de répondre à la charge : timeout et perte d’exploitation/business. &lt;/p&gt;  &lt;p&gt;L’idéal serait donc de pouvoir dynamiquement s’ajuster à la charge mesurée sur notre application et donc de suivre de manière très fine cette courbe. C’est ce qu’il se produit avec la 2ème vue grâce à l’utilisation du cloud computing. &lt;/p&gt;  &lt;p&gt;Dans le cas de Windows Azure, jetons un œil sur le &lt;a href="http://windows.azure.com"&gt;portail d’administration&lt;/a&gt; où se trouve hébergée Cloudy Pizza :&lt;/p&gt; &lt;a title="cloudpizzapost003 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4046364969/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost003" src="http://farm3.static.flickr.com/2449/4046364969_6697338ec2_o.jpg" width="750" height="631" /&gt;&lt;/a&gt;   &lt;p&gt;On observe 3 choses particulièrement intéressantes liées à notre plateforme de cloud computing:&lt;/p&gt;  &lt;p&gt;- un environnement de pré-production (Staging) disponible nativement nous permettant, pour très peu de frais, de tester la nouvelle version de notre application avant de la basculer en production vers la gauche via le bouton circulaire du centre.    &lt;br /&gt;- le nombre d’instances dédiées à chacun de nos environnements. Ici 1 instance pour la production et 2 instances pour la pré-prod     &lt;br /&gt;- la localisation géographique de notre application&lt;/p&gt;  &lt;p&gt;Tentons maintenant de raisonner à travers des scénarios d’usage mettant en valeur cette élasticité. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Une pré-production efficace, réelle et pas chère&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Imaginons un instant que vous soyez propriétaire d’un data center dans lequel vous hébergez votre application. Que faire pour mettre un place un environnement de pré-production ? Si l’on souhaite en effet être dans un environnement identique à la production, il faudrait potentiellement investir dans un 2ème data center dans lequel on pourrait sereinement tester la prochaine version ou mise à jour de l’application avant de basculer vers la production. L’avantage de la plateforme Windows Azure est que cet environnement de pré-production vous est proposé par défaut. Testez votre nouvelle application sur le nombre souhaité d’instances, validez que tout se déroule comme prévu et basculer en production. Une fois l’ancienne production inversée avec la pré-production, vous pouvez dé-provisionner les machines virtuelles de la version N-1. L’avantage? Vous n’aurez payé uniquement ce que vous aurez consommé pendant les phases de recettes/tests de la pré-production. Vous n’avez ainsi pas à maintenir et payer une pré-production “en dure” de manière systématique. Voici un des premiers avantage de cette fameuse élasticité. &lt;/p&gt;  &lt;p&gt;Par ailleurs, la bascule entre la pré-production et la production est immédiate. C’est certainement loin d’être le cas si vous avez 2 data centers sous la main. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Une montée en charge réactive et facile &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Prenons un exemple désagréable. Imaginons que vous soyez responsable de la mise en production du site de déclaration de l’impôts sur le revenu. Votre pic de charge se fera sans doute aux alentours du mois d’avril/mai où l’ensemble des contribuables vont se rendre sur le site pour effectuer leur déclaration. Il faut donc prévoir le coup en terme de capacité en provisionnant un ensemble de serveurs capables de prendre en charge le pic et éviter d’avoir des utilisateurs citoyens mécontents de l’inaccessibilité du service. Cependant, une fois le pic de charge passé, l’activité du site gérant les déclaration va devenir très faible le reste de l’année. En effet, nous n’avons pas trop tendance à traîner sur le site des impôts une fois la déclaration faite.&lt;/p&gt;  &lt;p&gt;Cet exemple se prête en fait très bien à la notion d’élasticité. Nous utilisons aussi fréquemment l’exemple d’un site d’e-commerce lançant une opération de promotion (à Noël par exemple). La charge devient plus élevée sur les fêtes de fin d’année et baisse drastiquement au mois de Janvier. &lt;/p&gt;  &lt;p&gt;La plateforme Windows Azure répond très bien à ce besoin. Pour augmenter ou diminuer le nombre d'instances (de machines virtuelles) que vous souhaitez allouer à votre application, il suffit de cliquer sur le bouton “Configure” et de changer le paramètre :&lt;/p&gt;  &lt;p&gt;&lt;font color="#400080"&gt;&lt;strong&gt;&amp;lt;Instances count=&amp;quot;1&amp;quot; /&amp;gt;&lt;/strong&gt; &lt;font color="#000000"&gt;vers&lt;/font&gt; &lt;strong&gt;&amp;lt;Instances count=&amp;quot;10&amp;quot; /&amp;gt; &lt;/strong&gt;&lt;/font&gt;&lt;font color="#000000"&gt;par exemple.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Quelques minutes plus tard, 9 nouveaux serveurs auront été automatiquement provisionnées, votre application aura été publiée sur ces nouveaux serveurs et le load balancing sera mis en place pour répartir les requêtes sur l’ensemble de ces 10 serveurs. Tout cela en ne changeant finalement qu’un simple compteur. De manière analogue, le “deprovisionning” est aussi simple à gérer. C’est donc bien cela qu’apporte cette PaaS : un ensemble de services pour vous faciliter la vie et vous faire gagner en efficacité. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;La géo-localisation facilitée &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Continuons à rêver et imaginons cette fois-ci que notre application rencontre un succès planétaire. Si l’on héberge notre application sur un data center en France, les clients asiatiques ou américains auront une expérience dégradée par rapport à la clientèle française. Comment alors gérer cette situation ? Il faudrait fabriquer et déployer un data center dans ces nouvelles zones géographiques, déployer notre solution sur ces nouveaux sites, maintenir ces serveurs et gérer la redondances des données. &lt;/p&gt;  &lt;p&gt;A nouveau, ce scénario est nativement couvert par Windows Azure. Actuellement, 6 data centers sont prévus répartis sur la planète. La mise à disposition de notre application sur d’autres data centers sera donc aussi simple que l’augmentation du nombre d’instances : entièrement automatisée.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Combien ça coute ?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Le “business model” a été présenté cet été et est disponible ici : &lt;a title="http://blogs.msdn.com/windowsazure/archive/2009/07/14/confirming-commercial-availability-and-announcing-business-model.aspx" href="http://blogs.msdn.com/windowsazure/archive/2009/07/14/confirming-commercial-availability-and-announcing-business-model.aspx"&gt;http://blogs.msdn.com/windowsazure/archive/2009/07/14/confirming-commercial-availability-and-announcing-business-model.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3 métriques sont donc importantes à retenir : l’utilisation CPU, le stockage et la bande passante. &lt;/p&gt;  &lt;p&gt;Vous verrez ainsi qu’il ne faut pas obligatoirement aujourd’hui partir sur le cloud computing car le prix peut apparaître élevé par rapport à une solution de hosting classique si les services supplémentaires proposés par Windows Azure ne s’appliquent pas dans votre cas : élasticité simplifiée, pré-production facilitée et géo-localisation. A vous de sortir vos calculettes pour définir à partir de quel moment il est plus rentable d’héberger vous-mêmes votre solution ou de la pousser dans les nuages d’Azure. &lt;/p&gt;  &lt;p&gt;Par contre, si vous avez besoin de manière ponctuelle d’un nombre important de ressources, Windows Azure apparaîtra comme une solution de 1er choix.&lt;/p&gt;  &lt;p&gt;Plus d’infos sur Windows Azure :&lt;/p&gt;  &lt;p&gt;- le centre de développement MSDN : &lt;a href="http://msdn.microsoft.com/fr-fr/azure/"&gt;http://msdn.microsoft.com/fr-fr/azure/&lt;/a&gt;     &lt;br /&gt;- Ze Cloud : &lt;a title="http://www.zecloud.fr/" href="http://www.zecloud.fr/"&gt;http://www.zecloud.fr/&lt;/a&gt;&lt;/p&gt; &lt;a name="azuredev"&gt;   &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Quels sont les impacts d’Azure sur le développement ?&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/a&gt;  &lt;p&gt;Revenons à Cloudy Pizza et tentons d’analyser les impacts qu’Azure a eu sur le développement. &lt;/p&gt;  &lt;p&gt;Finalement, très peu ! Pour quelles raisons ? Tout simplement car le .NET Framework 3.5 SP1 est nativement hébergé dans Windows Azure et que je peux donc souvent déployer telle quelle une application ASP.NET. Par ailleurs, SQL Azure est une version de SQL 2008 hébergée par Microsoft. Il y a cependant quelques petites subtilités à connaître en fonction des scénarios. Si le sujet vous intéresse, mon collègue Pierre Couzy a fait une série de posts sur le sujet sur son blog : &lt;a title="http://blog.couzy.com/" href="http://blog.couzy.com/"&gt;http://blog.couzy.com/&lt;/a&gt; D’ailleurs, il indique également comment héberger votre application PHP dans Windows Azure. J’en avais déjà parlé pour ma part dans un &lt;a href="http://blogs.msdn.com/davrous/archive/2009/05/04/r-flexions-sur-l-utilisation-de-php-dans-le-monde-microsoft-et-sur-ses-int-r-ts.aspx"&gt;post précédent&lt;/a&gt;. De plus, je ne serais aussi que trop vous conseiller de parcourir l’ensembles des posts et vidéos de Patrick Guimonet ici : &lt;a title="http://blogs.technet.com/patricg/archive/2009/10/09/premiers-pas-avec-sql-azure-les-vid-os-sont-en-ligne.aspx" href="http://blogs.technet.com/patricg/archive/2009/10/09/premiers-pas-avec-sql-azure-les-vid-os-sont-en-ligne.aspx"&gt;http://blogs.technet.com/patricg/archive/2009/10/09/premiers-pas-avec-sql-azure-les-vid-os-sont-en-ligne.aspx&lt;/a&gt; qui vous guidera de la création de la base à la migration des données d’une instance locale vers SQL Azure.&lt;/p&gt;  &lt;p&gt;Dans mon cas, je n’ai eu qu’à recréer une base de données à travers le portail d’administration de SQL Azure, de créer un schéma similaire à celui de ma base de données SQL Express 2008 et d’injecter les mêmes données. Une fois l’opération faîte, restait plus qu’à changer la chaîne de connexion. Dans mon cas, rien d’autre à faire !&lt;/p&gt;  &lt;p&gt;Voici la tête du portail d’administration :&lt;/p&gt; &lt;a title="cloudpizzapost006 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4047555924/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost006" src="http://farm3.static.flickr.com/2480/4047555924_3408f4dc27_o.jpg" width="725" height="332" /&gt;&lt;/a&gt;   &lt;p&gt;Et voici à quoi ressemblent les chaînes de connexion :&lt;/p&gt; &lt;a title="cloudpizzapost007 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4047556028/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost007" src="http://farm3.static.flickr.com/2567/4047556028_115f05b074_o.jpg" width="718" height="105" /&gt;&lt;/a&gt;   &lt;p&gt;Alors c’est tout, il faut juste changer la chaîne de connexion dans tous les cas ? &lt;/p&gt;  &lt;p&gt;Non, cela serait malhonnête de ma part de tenter de vous faire croire cela. Si votre application ASP.NET ne fait jamais appel au système de fichiers local à la machine qui l’héberge, vous pourrez alors porter votre application logiquement telle quelle. Cependant, que se passe-t-il lorsque vous avez besoin de discuter avec le système de fichiers ?&lt;/p&gt;  &lt;p&gt;Dans le cas d’une application hébergée dans Windows Azure, il faut pouvoir gérer le cas où notre code va être distribué sur plusieurs serveurs. Si notre application tourne sur 100 serveurs, hors de question de discuter directement avec une instance particulière. En effet, si l’utilisateur arrive d’abord sur l’instance 2, que l’on stocke des données sur cette instance et que le moment d’après l’utilisateur arrive sur l’instance 58, comment allez-vous synchroniser l’état entre les instances ?&lt;/p&gt; &lt;a title="cloudpizzapost015 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4049575051/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost015" src="http://farm3.static.flickr.com/2432/4049575051_a366f0a230_o.jpg" width="446" height="306" /&gt;&lt;/a&gt;   &lt;p&gt;Pour éviter cela, nous allons utiliser un système de fichiers distribués basé sur une architecture à base de &lt;em&gt;Blob&lt;/em&gt; pour le stockage binaire des fichiers et &lt;em&gt;Table&lt;/em&gt; pour stocker des informations diverses et variées. La notion de Table ne doit pas être comparée aux tables d’une base de données relationnelles. C’est une structure en tableau à plat que l’on peut par contre requêter via un provider LINQ. Toutes ces notions vous seront détaillées dans le coach MSDN. J’en avais également déjà fait mention dans un &lt;a href="http://blogs.msdn.com/davrous/archive/2009/02/11/revenons-en-d-tails-sur-l-application-azure-mesh-du-keynote-techdays-2009-partie-1-windows-azure.aspx"&gt;post précédent&lt;/a&gt; lorsque je présentais l’architecture de l’application que nous avions montrée en plénière des TechDays 2009.&lt;/p&gt;  &lt;p&gt;L’avantage du stockage de Windows Azure est que l’on y accède via HTTP REST depuis n’importe laquelle de nos instances. Comme on peut le voir sur le schéma précédent, nos 10 instances discutent avec le même stockage centralisé/distribué. Voici par exemple les URLs correspondantes pour Cloudy Pizza sur le portail d’administration:&lt;/p&gt; &lt;a title="cloudpizzapost008 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4046931213/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost008" src="http://farm3.static.flickr.com/2519/4046931213_f7a19d4d03_o.jpg" width="739" height="384" /&gt;&lt;/a&gt;   &lt;p&gt;Mais vu que les données de mes fiches produits de Pizza, les commandes et les informations sur les utilisateurs sont stockées dans SQL Azure, à quoi m’a servi ce fameux “Azure Storage” ?&lt;/p&gt; &lt;a title="cloudpizzapost009 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4047720326/"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost009" align="left" src="http://farm3.static.flickr.com/2679/4047720326_779cf81345_o.jpg" width="187" height="188" /&gt;&lt;/a&gt;   &lt;p&gt;Comme je suis parti du template de projet Silverlight 3 “Business Application”, j’ai la possibilité de pouvoir créer des utilisateurs et de me loguer sur l’application. En effet, le template propose cela nativement comme j’ai déjà pu en parler dans ce &lt;a href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-2-4.aspx"&gt;post précédent&lt;/a&gt; sur l’introduction à .NET RIA Services. Cela mets alors en place une authentification ASP.NET par formulaire relayée ensuite vers le client Silverlight grâce à .NET RIA Services. Or, cette authentification ASP.NET est basée sur les Membership Provider connectés par défaut vers l’instance locale de SQL Express sur une base nommée aspnetdb. &lt;/p&gt;  &lt;p&gt;Dans Windows Azure, nous n’avons pas d’instance locale de SQL Server pour gérer nos utilisateurs. Par contre, le système de Membership Provider d’ASP.NET est extensible et rien ne nous empêche de le brancher sur quelque chose d’autre. Dans mon cas, je l’ai donc simplement branché sur le stockage d’Azure en utilisant un sample du Windows Azure SDK nommé ASPProvider. Ensuite, il ne reste plus qu’à modifier le web.config pour qu’il utilise ces nouveaux providers:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;authentication &lt;/span&gt;&lt;span style="color: red"&gt;mode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Forms&lt;/span&gt;&amp;quot; &lt;span style="color: blue"&gt;/&amp;gt;

&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;anonymousIdentification &lt;/span&gt;&lt;span style="color: red"&gt;enabled&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot; &lt;span style="color: blue"&gt;/&amp;gt;

&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;membership &lt;/span&gt;&lt;span style="color: red"&gt;defaultProvider&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;TableStorageMembershipProvider&lt;/span&gt;&amp;quot; 
            &lt;span style="color: red"&gt;userIsOnlineTimeWindow&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;20&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;providers&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;clear &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;TableStorageMembershipProvider&lt;/span&gt;&amp;quot; 
         &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Microsoft.Samples.ServiceHosting.AspProviders.TableStorageMembershipProvider&lt;/span&gt;&amp;quot; 
         &lt;span style="color: red"&gt;description&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Membership provider using table storage&lt;/span&gt;&amp;quot; 
         &lt;span style="color: red"&gt;applicationName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;CloudyPizza.Web&lt;/span&gt;&amp;quot; 
         &lt;span style="color: red"&gt;enablePasswordRetrieval&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;false&lt;/span&gt;&amp;quot; 
         &lt;span style="color: red"&gt;enablePasswordReset&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot; 
         &lt;span style="color: red"&gt;requiresQuestionAndAnswer&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;false&lt;/span&gt;&amp;quot; 
         &lt;span style="color: red"&gt;minRequiredPasswordLength&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;1&lt;/span&gt;&amp;quot; 
         &lt;span style="color: red"&gt;minRequiredNonalphanumericCharacters&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;0&lt;/span&gt;&amp;quot; 
         &lt;span style="color: red"&gt;requiresUniqueEmail&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot; 
         &lt;span style="color: red"&gt;passwordFormat&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Hashed&lt;/span&gt;&amp;quot; &lt;span style="color: blue"&gt;/&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;providers&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;membership&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;

&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;roleManager &lt;/span&gt;&lt;span style="color: red"&gt;enabled&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot; 
             &lt;span style="color: red"&gt;defaultProvider&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;TableStorageRoleProvider&lt;/span&gt;&amp;quot; 
             &lt;span style="color: red"&gt;cacheRolesInCookie&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot; 
             &lt;span style="color: red"&gt;cookieName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;.ASPXROLES&lt;/span&gt;&amp;quot; 
             &lt;span style="color: red"&gt;cookieTimeout&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;30&lt;/span&gt;&amp;quot; 
             &lt;span style="color: red"&gt;cookiePath&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&lt;/span&gt;&amp;quot; 
             &lt;span style="color: red"&gt;cookieRequireSSL&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;false&lt;/span&gt;&amp;quot; 
             &lt;span style="color: red"&gt;cookieSlidingExpiration&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot; 
             &lt;span style="color: red"&gt;cookieProtection&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;All&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;providers&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;clear &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;TableStorageRoleProvider&lt;/span&gt;&amp;quot; 
         &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Microsoft.Samples.ServiceHosting.AspProviders.TableStorageRoleProvider&lt;/span&gt;&amp;quot; 
         &lt;span style="color: red"&gt;description&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Role provider using table storage&lt;/span&gt;&amp;quot; 
         &lt;span style="color: red"&gt;applicationName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;CloudyPizza.Web&lt;/span&gt;&amp;quot; &lt;span style="color: blue"&gt;/&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;providers&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;roleManager&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;L’ensemble est alors transparent pour le client Silverlight 3 qui discute avec une couche d’abstraction gérée par .NET RIA Services. Vous pouvez donc très bien imaginer écrire vos propres providers connectés à n’importe laquelle de vos sources de données.&lt;/p&gt;

&lt;p&gt;En complément, je vous invite à lire ces 2 excellents articles traitant de la migration d’une application hébergée de manière “classique” vers Azure écrits par &lt;a href="http://www.dotmim.com/blogs/mim/"&gt;Sébastien Pertus&lt;/a&gt; :&lt;/p&gt;

&lt;p&gt;- Plateforme Azure : Migrer ! : &lt;a title="http://www.techheadbrothers.com/Articles.aspx/plateforme-azure-migrer" href="http://www.techheadbrothers.com/Articles.aspx/plateforme-azure-migrer"&gt;http://www.techheadbrothers.com/Articles.aspx/plateforme-azure-migrer&lt;/a&gt; 

  &lt;br /&gt;- Plateforme Azure : Migrez ! Part II : &lt;a title="http://www.techheadbrothers.com/Articles.aspx/plateforme-azure-migrez-part-ii" href="http://www.techheadbrothers.com/Articles.aspx/plateforme-azure-migrez-part-ii"&gt;http://www.techheadbrothers.com/Articles.aspx/plateforme-azure-migrez-part-ii&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pour reprendre un schéma de Sébastien, à ce stade, le diagramme de Cloudy Pizza ressemble à cela :&lt;/p&gt;

&lt;table border="0" cellspacing="0" cellpadding="2" width="551"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top" width="549"&gt;
        &lt;p align="center"&gt;&lt;a href="http://www.techheadbrothers.com/content/cfc49beb-6279-40dc-ad75-b96fc6bf0f36/image1.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image1[1]" border="0" alt="image1[1]" src="http://blogs.msdn.com/blogfiles/davrous/WindowsLiveWriter/Cloudy.NETRIAServicesdanslesnuagesdAzure_D96C/image1%5B1%5D_3.png" width="560" height="271" /&gt;&lt;/a&gt; 

          &lt;br /&gt;© Tech Head Brothers&lt;/p&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;&lt;a name="dynpages"&gt;&lt;strong&gt;&lt;font size="4"&gt;Des pages dynamiques en fonction du rôle et du niveau d’authentification&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Analysons un peu ce qu’il se passe lorsque l’on se connecte au site via le bouton “login”. Vous êtes prompté pour vous loguer :&lt;/p&gt;
&lt;a title="cloudpizzapost010 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4049521698/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost010" src="http://farm3.static.flickr.com/2801/4049521698_13fa889880_o.jpg" width="519" height="270" /&gt;&lt;/a&gt; 

&lt;p&gt;Loguez-vous avec un compte déjà créé ou créez vous un compte en cliquant sur “Register Now”. Une fois authentifié, vous noterez l’apparition de nouveaux onglets/options dans la barre de menu de l’application Silverlight de manière dynamique :&lt;/p&gt;

&lt;table border="0" cellspacing="0" cellpadding="2" width="603"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top" width="175"&gt;
        &lt;p align="center"&gt;&lt;a title="cloudpizzapost011 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4049521714/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost011" src="http://farm4.static.flickr.com/3505/4049521714_27f5c079cc_o.jpg" width="183" height="58" /&gt;&lt;/a&gt; 

          &lt;br /&gt;&lt;em&gt;&lt;font size="1"&gt;Avant authentification…&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;
      &lt;/td&gt;

      &lt;td valign="top" width="426"&gt;
        &lt;p align="center"&gt;&lt;a title="cloudpizzapost012 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4049521740/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost012" src="http://farm3.static.flickr.com/2605/4049521740_d8b89a70ec_o.jpg" width="445" height="61" /&gt;&lt;/a&gt; 

          &lt;br /&gt;&lt;font size="1"&gt;&lt;em&gt;…après authentification : de nouveaux choix disponibles&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Une fois authentifié, vous pouvez donc passer une commande un cliquant sur “&lt;em&gt;basket&lt;/em&gt;” : un email de confirmation vous sera envoyé vers l’adresse email que vous aurez entré pendant le “&lt;em&gt;Register Now&lt;/em&gt;”. Si vous cliquez sur “&lt;em&gt;orders&lt;/em&gt;”, vous verrez la liste des commandes déjà effectuées. Pour commander, cliquez sur les images de pizza. Cela ajoutera une ligne de commande. Choisissez alors la quantité et le type :&lt;/p&gt;
&lt;a title="cloudpizzapost013 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4048803949/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost013" src="http://farm4.static.flickr.com/3507/4048803949_65ab5a3edf_o.jpg" width="739" height="351" /&gt;&lt;/a&gt; 

&lt;p&gt;Pour mettre en place les pages dynamiques, j’ai réutilisé la logique exposée par Brad dans &lt;a href="http://blogs.msdn.com/brada/archive/2009/09/09/silverlight-3-navigation-even-more-on-dynamically-loaded-pages.aspx"&gt;ce post là&lt;/a&gt;. Dans son cas, il utilisait MEF et une réflexion coté serveur de packages XAP pour dynamiquement ajouter de nouvelles pages. Dans mon cas, j’ai coupé la partie MEF pour simplifier et mis en place une logique purement cliente. J’y reviendrais dans mon prochain post. Ensuite, les pages sont affichées en fonction de l’état de l’authentification ou du niveau de rôle (Administrateur, etc.). Tout cela en tagguant simplement les pages des bons attributs. &lt;/p&gt;
&lt;a name="bpos"&gt;
  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;L’utilisation d’Exchange Online via ses WebServices&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/a&gt;

&lt;p&gt;Quand Damien est arrivé avec ses aspirations d’IT Pro et convaincu qu’un développeur est une espèce de magicien capable de coder n’importe quoi grâce à du VBScript, j’ai eu un peu peur. :) Heureusement, autant IT Pro qu’il soit, il est moins bête qu’il en a l’air. Pour preuve, je l’ai déjà vu jouer avec Visual Studio (Respect !). Enfin, bon, on s’écarte du sujet. &lt;/p&gt;

&lt;p&gt;Dans une vie passée, je savais très bien coder des applications discutant avec Exchange 2007 via les WebServices qu’il expose. Mais quiz de cet Exchange Online ? Vais-je devoir tout réapprendre et coder de manière différente ? Fort heureusement non ! C’est l’avantage de la symétrie que Microsoft propose entre le monde de l’entreprise et notre offre de cloud computing. Un développeur sachant manipuler les WebServices d’Exchange 2007 ne sera pas perdu avec ceux exposés par Exchange Online pour la simple et bonne raison que… ce sont les mêmes ! Exchange Online est donc bien un Exchange hébergé et maintenu par Microsoft avec lequel je peux travailler en tant que développeur de manière transparente.&lt;/p&gt;

&lt;p&gt;On retrouve donc cette symétrie des produits et des compétences dans les 2 mondes tel qu’illustré par le diagramme suivant :&lt;/p&gt;
&lt;a title="cloudpizzapost016 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4050517386/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost016" src="http://farm3.static.flickr.com/2713/4050517386_79444f8443_o.jpg" width="424" height="376" /&gt;&lt;/a&gt; 

&lt;p&gt;Dans Cloudy Pizza, j’ai donc tout simplement fait mon ajout de référence Web depuis l’URL qui va bien depuis les nuages : &lt;a title="https://red002.mail.emea.microsoftonline.com/EWS/Exchange.asmx" href="https://red002.mail.emea.microsoftonline.com/EWS/Exchange.asmx"&gt;https://red002.mail.emea.microsoftonline.com/EWS/Exchange.asmx&lt;/a&gt; et la génération du proxy client s’est faite de manière habituelle. Ensuite, j’ai pu réutiliser tels quels les exemples fournis dans MSDN comme ceux-là par exemple:&lt;/p&gt;

&lt;p&gt;- Creating E-mail Messages (Exchange Web Services) : &lt;a title="http://msdn.microsoft.com/en-us/library/aa563009.aspx" href="http://msdn.microsoft.com/en-us/library/aa563009.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa563009.aspx&lt;/a&gt; 

  &lt;br /&gt;- Getting User Availability (Exchange Web Services) : &lt;a title="http://msdn.microsoft.com/en-us/library/aa494212.aspx" href="http://msdn.microsoft.com/en-us/library/aa494212.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa494212.aspx&lt;/a&gt; 

  &lt;br /&gt;- Creating Appointments (Exchange Web Services) : &lt;a title="http://msdn.microsoft.com/en-us/library/aa563060.aspx" href="http://msdn.microsoft.com/en-us/library/aa563060.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa563060.aspx&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Ni plus, ni moins. &lt;/p&gt;
&lt;a name="mvvm"&gt;
  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;M-V-VM ?&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/a&gt;

&lt;p&gt;Le pattern MVVM (pour Model View View-Model) apporte une approche “à la MVC” particulièrement intéressante pour le monde de WPF ou Silverlight lorsqu’il s’agit d’industrialisation des développements. Mais, comme MVC, il ne sera pas à utiliser de manière systématique. Avec &lt;a href="http://blogs.msdn.com/mitsufu"&gt;Mitsu&lt;/a&gt;, nous l’avons largement couvert lors de la journée des “Mercredis du développement”&amp;#160; à l’aide de nos acolytes &lt;a href="http://www.simonferquel.net/blog/"&gt;Simon&lt;/a&gt; d’Access-IT et &lt;a href="http://blog.tekigo.com"&gt;Nicolas&lt;/a&gt; de Tekigo. Cette journée sera bientôt disponible en webcasts : &lt;a title="http://blogs.msdn.com/mitsufu/archive/2009/09/04/mdd-industrialisation-des-d-veloppements-n-tiers-avec-wpf-et-silverlight.aspx" href="http://blogs.msdn.com/mitsufu/archive/2009/09/04/mdd-industrialisation-des-d-veloppements-n-tiers-avec-wpf-et-silverlight.aspx"&gt;http://blogs.msdn.com/mitsufu/archive/2009/09/04/mdd-industrialisation-des-d-veloppements-n-tiers-avec-wpf-et-silverlight.aspx&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Un développement MVVM vous apportera de nombreux bénéfices comme des tests unitaires performants et adaptés, des vues XAML uniquement dédiées à l’affichage et faisant appel de manière très agréable au binding, etc. &lt;/p&gt;
&lt;a title="cloudpizzapost014 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/4050274782/"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="cloudpizzapost014" src="http://farm3.static.flickr.com/2671/4050274782_8cebdb695f_o.jpg" width="508" height="327" /&gt;&lt;/a&gt; 

&lt;p&gt;En Français, je vous conseille la lecture de ce post de Simon : &lt;a title="http://www.simonferquel.net/blog/archive/2009/03/25/silverlight-silverlight-3--ria-services--mvvm-et-testabiliteacute.aspx" href="http://www.simonferquel.net/blog/archive/2009/03/25/silverlight-silverlight-3--ria-services--mvvm-et-testabiliteacute.aspx"&gt;http://www.simonferquel.net/blog/archive/2009/03/25/silverlight-silverlight-3--ria-services--mvvm-et-testabiliteacute.aspx&lt;/a&gt; , notre star du testing Silverlight et de MVVM. ;-)&lt;/p&gt;

&lt;p&gt;En Anglais, notre architecte Nikhil a fait une série de posts très intéressante sur ce sujet : &lt;/p&gt;

&lt;p&gt;- &lt;a title="http://www.nikhilk.net/NET-RIA-Services-ViewModel-Pattern.aspx" href="http://www.nikhilk.net/NET-RIA-Services-ViewModel-Pattern.aspx"&gt;http://www.nikhilk.net/NET-RIA-Services-ViewModel-Pattern.aspx&lt;/a&gt; 

  &lt;br /&gt;- &lt;a title="http://www.nikhilk.net/NET-RIA-Services-ViewModel-Pattern-2.aspx" href="http://www.nikhilk.net/NET-RIA-Services-ViewModel-Pattern-2.aspx"&gt;http://www.nikhilk.net/NET-RIA-Services-ViewModel-Pattern-2.aspx&lt;/a&gt; 

  &lt;br /&gt;- &lt;a title="http://www.nikhilk.net/Silverlight-ViewModel-Pattern.aspx" href="http://www.nikhilk.net/Silverlight-ViewModel-Pattern.aspx"&gt;http://www.nikhilk.net/Silverlight-ViewModel-Pattern.aspx&lt;/a&gt; 

  &lt;br /&gt;- &lt;a title="http://www.nikhilk.net/Silverlight-ViewModel-MVC.aspx" href="http://www.nikhilk.net/Silverlight-ViewModel-MVC.aspx"&gt;http://www.nikhilk.net/Silverlight-ViewModel-MVC.aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pour l’instant, Microsoft ne propose pas vraiment de template de projet pour faire du MVVM sous Silverlight comme on peut le trouver pour WPF à travers le toolkit ou comme avec ASP.NET MVC. Cependant, il commence à éclore quelques initiatives intéressantes comme celle-ci que je vous conseille : &lt;a title="http://www.galasoft.ch/mvvm/getstarted/" href="http://www.galasoft.ch/mvvm/getstarted/"&gt;http://www.galasoft.ch/mvvm/getstarted/&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s coming next ?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Voilà pour ce tour d’horizon de Cloudy Pizza finalement assez long. J’ai prévu de publier le code mais il faut d’abord que je travaille à la résolution de quelques bugs et à l’amélioration de certaines parties dont je ne suis pas encore très fier. ;-)&lt;/p&gt;

&lt;p&gt;Stay tuned pour des posts plus techniques et plus détaillés. Le prochain sera dédié à la sécurité autour de .NET RIA Services et à la mise en place de pages dynamiques avec une astuce intéressante.&lt;/p&gt;

&lt;p&gt;David&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9913129" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="Microsoft Days" scheme="http://blogs.msdn.com/davrous/archive/tags/Microsoft+Days/default.aspx" /><category term=".NET Framework 3.5 SP1" scheme="http://blogs.msdn.com/davrous/archive/tags/.NET+Framework+3.5+SP1/default.aspx" /><category term="Azure" scheme="http://blogs.msdn.com/davrous/archive/tags/Azure/default.aspx" /><category term="ASPNET" scheme="http://blogs.msdn.com/davrous/archive/tags/ASPNET/default.aspx" /><category term="Silverlight 3" scheme="http://blogs.msdn.com/davrous/archive/tags/Silverlight+3/default.aspx" /><category term=".NET RIA Services" scheme="http://blogs.msdn.com/davrous/archive/tags/.NET+RIA+Services/default.aspx" /><category term="SQL Azure" scheme="http://blogs.msdn.com/davrous/archive/tags/SQL+Azure/default.aspx" /><category term="MVVM" scheme="http://blogs.msdn.com/davrous/archive/tags/MVVM/default.aspx" /><category term="SEO" scheme="http://blogs.msdn.com/davrous/archive/tags/SEO/default.aspx" /><category term="BPOS" scheme="http://blogs.msdn.com/davrous/archive/tags/BPOS/default.aspx" /></entry><entry><title>Silverlight 3 : ajoutez un behavior d’effets physiques à vos éléments</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/09/29/silverlight-3-ajoutez-un-behavior-d-effets-physiques-vos-l-ments.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/09/29/silverlight-3-ajoutez-un-behavior-d-effets-physiques-vos-l-ments.aspx</id><published>2009-09-29T15:43:00Z</published><updated>2009-09-29T15:43:00Z</updated><content type="html">&lt;P&gt;Si vous cliquez sur mon image en costard ci-dessous qu’adore Mitsu, vous verrez qu’une sorte d’effet physique se met en route là où vous aurez cliqué. J’ai honteusement récupéré le behavior de Nikhil dont il parle ici : &lt;A title=http://www.nikhilk.net/BouncingPlane-Behavior.aspx href="http://www.nikhilk.net/BouncingPlane-Behavior.aspx" mce_href="http://www.nikhilk.net/BouncingPlane-Behavior.aspx"&gt;http://www.nikhilk.net/BouncingPlane-Behavior.aspx&lt;/A&gt;&lt;/P&gt;&lt;IFRAME style="WIDTH: 140px; HEIGHT: 140px" src="http://silverlight.services.live.com/invoke/94157/badgedavrousboucing/iframe.html" frameBorder=0 scrolling=no mce_src="http://silverlight.services.live.com/invoke/94157/badgedavrousboucing/iframe.html"&gt;&lt;/IFRAME&gt;
&lt;P&gt;L’idée des behaviors est très séduisante. Elle propose une collaboration entre les développeurs et les designers encore plus riche. Le développeur conçoit un comportement à appliquer sur un élément (mise en place d’un effet physique, &lt;A href="http://www.davidezordan.net/blog/?p=1367" mce_href="http://www.davidezordan.net/blog/?p=1367"&gt;gestion automatique du multi-touch&lt;/A&gt;, etc.) et le designer peut alors appliquer ce comportement sur ses éléments dans Expression Blend 3 sans avoir à comprendre la moindre ligne de code.&lt;/P&gt;
&lt;P&gt;Pour mieux comprendre, je vous propose donc de créer le même genre de résultat que mon badge ci-dessus (ou à gauche dans le menu) en utilisant Expression Blend 3 et le tout sans coder! Pour cela, récupérez le package ZIP ci-dessous contenant le code source du behavior. Il est également déjà compilé dans le fichier &lt;STRONG&gt;BoucingPlaneBehavior.dll&lt;/STRONG&gt; présent dans&lt;STRONG&gt; \Bin\Release&lt;/STRONG&gt;. Cela vous évite éventuellement d’avoir besoin de Visual Studio.&lt;/P&gt;&lt;IFRAME style="PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfcfc; PADDING-LEFT: 0px; WIDTH: 98px; PADDING-RIGHT: 0px; HEIGHT: 115px; PADDING-TOP: 0px" title=Preview marginHeight=0 src="http://cid-0ee4bd0f5ea745c6.skydrive.live.com/embedicon.aspx/.Public/BoucingPlaneBehavior.zip" frameBorder=0 marginWidth=0 scrolling=no mce_src="http://cid-0ee4bd0f5ea745c6.skydrive.live.com/embedicon.aspx/.Public/BoucingPlaneBehavior.zip"&gt;&lt;/IFRAME&gt;
&lt;P&gt;Copiez la DLL dans le répertoire de votre choix puis ajoutez les entrées suivantes dans la base de registre:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#400040&gt;Windows Registry Editor Version 5.00 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#400040&gt;[HKEY_CURRENT_USER\Software\Microsoft\Expression\Blend\3.0\Toolbox]&lt;/FONT&gt;&lt;FONT color=#400040&gt;[HKEY_CURRENT_USER\Software\Microsoft\Expression\Blend\3.0\Toolbox\Silverlight]&lt;/FONT&gt;&lt;FONT color=#400040&gt;[HKEY_CURRENT_USER\Software\Microsoft\Expression\Blend\3.0\Toolbox\Silverlight\v3.0] &lt;/FONT&gt;&lt;FONT color=#400040&gt;[HKEY_CURRENT_USER\Software\Microsoft\Expression\Blend\3.0\Toolbox\Silverlight\v3.0\BoucingPlaneBehavior] &lt;BR&gt;@="CheminVersLaDll"&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Vous trouverez également un exemple nommé &lt;STRONG&gt;BoucingBehaviors.reg&lt;/STRONG&gt; dans le ZIP que vous pouvez modifier et appliquer sur votre machine. &lt;/P&gt;
&lt;P&gt;L’idée maintenant est d’ajouter un nouveau behavior dans la liste proposée par défaut sous Blend 3. J’ai donc bêtement suivi les indications de notre chère MSDN : &lt;A title=http://msdn.microsoft.com/en-us/library/ee341397(Expression.30).aspx href="http://msdn.microsoft.com/en-us/library/ee341397(Expression.30).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ee341397(Expression.30).aspx"&gt;http://msdn.microsoft.com/en-us/library/ee341397(Expression.30).aspx&lt;/A&gt; . On peut également simplement ajouter une référence à la DLL dans n’importe quel projet si vous voulez éviter d’ajouter ces entrées dans la base de registre. Une fois la référence ajoutée, le behavior sera visible par Blend 3.0. Allez, jouons avec tout cela maintenant.&lt;/P&gt;
&lt;P&gt;Lancez Blend 3.0 et créez un nouveau projet Silverlight 3:&lt;/P&gt;&lt;A title="behavioretape001 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3965750931/" mce_href="http://www.flickr.com/photos/35281337@N05/3965750931/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=behavioretape001 src="http://farm4.static.flickr.com/3529/3965750931_9fcccff14b_o.png" width=685 height=551 mce_src="http://farm4.static.flickr.com/3529/3965750931_9fcccff14b_o.png"&gt;&lt;/A&gt; 
&lt;P&gt;Drag’n’droppez un contrôle image :&lt;/P&gt;&lt;A title="behavioretape002 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3966527464/" mce_href="http://www.flickr.com/photos/35281337@N05/3966527464/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=behavioretape002 src="http://farm3.static.flickr.com/2582/3966527464_632c89556a_o.png" width=820 height=387 mce_src="http://farm3.static.flickr.com/2582/3966527464_632c89556a_o.png"&gt;&lt;/A&gt; 
&lt;P&gt;Spécifiez la source de votre image et ajoutez un petit effet de Pixel Shader de type DropShadow. Si vous ne savez pas comment faire, rendez-vous dans ce &lt;A href="http://blogs.msdn.com/davrous/archive/2009/07/27/tutorial-pour-utiliser-simplement-les-pixel-shaders-avec-silverlight-3.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/07/27/tutorial-pour-utiliser-simplement-les-pixel-shaders-avec-silverlight-3.aspx"&gt;billet&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Rendez-vous dans les Behaviors et vous devriez voir le BouncingPlane si vous n’avez pas loupé l’étape de la base de registre :&lt;/P&gt;&lt;A title="behavioretape003 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3965751421/" mce_href="http://www.flickr.com/photos/35281337@N05/3965751421/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=behavioretape003 src="http://farm3.static.flickr.com/2635/3965751421_dd8180cd35_o.png" width=807 height=648 mce_src="http://farm3.static.flickr.com/2635/3965751421_dd8180cd35_o.png"&gt;&lt;/A&gt; 
&lt;P&gt;Prenez le BouncingPlane et drag’n’droppez le sur l’image dans l’arborescence de contrôles:&lt;/P&gt;&lt;A title="behavioretape004 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3966528028/" mce_href="http://www.flickr.com/photos/35281337@N05/3966528028/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=behavioretape004 src="http://farm3.static.flickr.com/2647/3966528028_a88372ee4d_o.png" width=391 height=269 mce_src="http://farm3.static.flickr.com/2647/3966528028_a88372ee4d_o.png"&gt;&lt;/A&gt; 
&lt;P&gt;Voilà! C’est fini! Lancez l’ensemble en pressant la touche magique F5 et vous pourrez vous aussi cliquer sur vos images (de vos chefs? ;-)) avec un effet de physique:&lt;/P&gt;&lt;A title="behavioretape005 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3965752129/" mce_href="http://www.flickr.com/photos/35281337@N05/3965752129/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=behavioretape005 src="http://farm3.static.flickr.com/2648/3965752129_78f37ae7bc_o.png" width=561 height=539 mce_src="http://farm3.static.flickr.com/2648/3965752129_78f37ae7bc_o.png"&gt;&lt;/A&gt; 
&lt;P&gt;Allez, pour le vous le prouver, voici la réalisation en vidéo en moins d’1 min 30 chrono ! (Double-cliquez pour le plein écran)&lt;/P&gt;&lt;IFRAME style="WIDTH: 500px; HEIGHT: 375px" src="http://silverlight.services.live.com/invoke/94157/BoucingB/iframe.html" frameBorder=0 scrolling=no mce_src="http://silverlight.services.live.com/invoke/94157/BoucingB/iframe.html"&gt;&lt;/IFRAME&gt;
&lt;P&gt;Sur ce, comportez-vous bien.&lt;/P&gt;
&lt;P&gt;David&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9900854" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="Silverlight 3" scheme="http://blogs.msdn.com/davrous/archive/tags/Silverlight+3/default.aspx" /><category term="Behavior" scheme="http://blogs.msdn.com/davrous/archive/tags/Behavior/default.aspx" /><category term="Blend 3" scheme="http://blogs.msdn.com/davrous/archive/tags/Blend+3/default.aspx" /></entry><entry><title>Libération complète du coach Silverlight 3 sur MSDN</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/09/24/lib-ration-compl-te-du-coach-silverlight-3-sur-msdn.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/09/24/lib-ration-compl-te-du-coach-silverlight-3-sur-msdn.aspx</id><published>2009-09-24T18:35:00Z</published><updated>2009-09-24T18:35:00Z</updated><content type="html">&lt;P&gt;Face aux nombreux emails que j’ai reçu me demandant l’accès au reste du &lt;A href="http://msdn.microsoft.com/fr-fr/silverlight/msdn.coachsilverlight.aspx" target=_blank mce_href="http://msdn.microsoft.com/fr-fr/silverlight/msdn.coachsilverlight.aspx"&gt;coach MSDN sur Silverlight 3&lt;/A&gt;, nous avons décidé avec Marine de publier l’ensemble des webcasts que j’avais réalisé.&lt;/P&gt;
&lt;P&gt;Il manque donc encore quelques labs sous forme “écrite” que je me chargerais d’écrire courant du mois d’Octobre. Mais vous pouvez déjà tout suivre sous forme vidéo et vous aurez l’ensemble du code source pour toutes les étapes.&lt;/P&gt;
&lt;P&gt;En effet, je suis bien occupé ces derniers temps à préparer l’évènement des Microsoft Days sur lequel je présenterais Silverlight 3 (ses nouveautés et .NET RIA Services) et des sessions autour du Cloud Computing. Cet évènement aura lieu sur Paris puis sur plusieurs villes en province. Pour tout savoir, voici les pointeurs clés:&lt;/P&gt;
&lt;P&gt;- Rencontres Techniques (RT) pour les développeurs : &lt;A href="http://msdn.microsoft.com/fr-fr/microsoft-days.aspx" mce_href="http://msdn.microsoft.com/fr-fr/microsoft-days.aspx"&gt;http://msdn.microsoft.com/fr-fr/microsoft-days.aspx&lt;/A&gt; &lt;BR&gt;- Rencontres Techniques (RT) pour les ITPros : &lt;A href="http://technet.microsoft.com/fr-fr/microsoft-days.aspx" mce_href="http://technet.microsoft.com/fr-fr/microsoft-days.aspx"&gt;http://technet.microsoft.com/fr-fr/microsoft-days.aspx&lt;/A&gt; &lt;BR&gt;- Rendez-vous Décideurs Informatiques (RDI) : &lt;A href="http://www.microsoft.com/france/entreprises/evenements/rendez-vous-decideurs/" mce_href="http://www.microsoft.com/france/entreprises/evenements/rendez-vous-decideurs/"&gt;http://www.microsoft.com/france/entreprises/evenements/rendez-vous-decideurs/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Je suis également occupé de travailler avec &lt;A href="http://blogs.msdn.com/mitsufu/" target=_blank mce_href="http://blogs.msdn.com/mitsufu/"&gt;Mitsu&lt;/A&gt; sur la journée industrialisation du développement WPF &amp;amp; Silverlight la semaine prochaine. Nous y parlerons de pattern MVVM, de tests unitaires et de l’incontournable .NET RIA Services. Vous pouvez en savoir davantage sur cette journée &lt;A href="http://blogs.msdn.com/mitsufu/archive/2009/09/04/mdd-industrialisation-des-d-veloppements-n-tiers-avec-wpf-et-silverlight.aspx" target=_blank mce_href="http://blogs.msdn.com/mitsufu/archive/2009/09/04/mdd-industrialisation-des-d-veloppements-n-tiers-avec-wpf-et-silverlight.aspx"&gt;ici&lt;/A&gt; et vous inscrire &lt;A href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032425797&amp;amp;Culture=fr-FR" target=_blank mce_href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032425797&amp;amp;Culture=fr-FR"&gt;ici&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;A bientôt !&lt;/P&gt;
&lt;P&gt;David&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9899007" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="Microsoft Days" scheme="http://blogs.msdn.com/davrous/archive/tags/Microsoft+Days/default.aspx" /><category term="Silverlight 3" scheme="http://blogs.msdn.com/davrous/archive/tags/Silverlight+3/default.aspx" /></entry><entry><title>Le nouveau Coach Silverlight 3 est disponible!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/09/11/le-nouveau-coach-silverlight-3-est-disponible.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/09/11/le-nouveau-coach-silverlight-3-est-disponible.aspx</id><published>2009-09-11T10:29:00Z</published><updated>2009-09-11T10:29:00Z</updated><content type="html">&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/davrous/WindowsLiveWriter/LenouveauCoachSilverlight3estdisponible_7A08/bb899456.polaroid%20coach%20silverlight(fr-fr,MSDN.10)%5B1%5D_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/davrous/WindowsLiveWriter/LenouveauCoachSilverlight3estdisponible_7A08/bb899456.polaroid%20coach%20silverlight(fr-fr,MSDN.10)%5B1%5D_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px 5px 0px 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=bb899456.polaroid%20coach%20silverlight(fr-fr,MSDN.10)[1] border=0 alt=bb899456.polaroid%20coach%20silverlight(fr-fr,MSDN.10)[1] align=left src="http://i.msdn.microsoft.com/bb899456.polaroid%20coach%20silverlight(fr-fr,MSDN.10).jpg" width=125 height=162 mce_src="http://i.msdn.microsoft.com/bb899456.polaroid%20coach%20silverlight(fr-fr,MSDN.10).jpg"&gt;&lt;/A&gt; Avant de partir en vacances, je me suis occupé de réaliser une petite série de WebCasts (26 en tout pour près de &lt;STRONG&gt;4h30 de visionnage&lt;/STRONG&gt;) pour vous permettre d’apprendre à prendre en main Silverlight 3. J’ai essayé de vous laisser jouer avec la plupart des grands concepts de Silverlight et des grandes nouveautés de la version 3 : pixel shaders, accélération GPU, binding entre éléments, projection 3D et out of browser. Sans oublier la composante business représentée par les 2 derniers labs sur &lt;A href="http://blogs.msdn.com/davrous/archive/2009/05/29/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-4-4.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/05/29/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-4-4.aspx"&gt;.NET RIA Services&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Nous ferons évoluer la même application au fur et à mesure de l’introduction des concepts afin d’avoir un fil conducteur sympathique.&lt;/P&gt;
&lt;P&gt;Le coach est dors et déjà en ligne ici : &lt;A title=http://msdn.microsoft.com/fr-fr/silverlight/msdn.coachsilverlight.aspx href="http://msdn.microsoft.com/fr-fr/silverlight/msdn.coachsilverlight.aspx" mce_href="http://msdn.microsoft.com/fr-fr/silverlight/msdn.coachsilverlight.aspx"&gt;http://msdn.microsoft.com/fr-fr/silverlight/msdn.coachsilverlight.aspx&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Comme d’habitude, vous trouverez une formule qui marche bien : une vidéo présentant les concepts sur des slides PowerPoint puis une vidéo démontrant le concept à travers un lab réalisé sous Visual Studio 2008. Vous aurez également en complément le code source de départ de chaque lab et le code source d’arrivée si vous suivez bien les étapes. Pour terminer, le lab est livré sous forme écrite en plus de la version vidéo. Vous pouvez donc suivre le lab en fonction de vos préférences vidéo ou écrit (sachant que parfois les 2 sont bien complémentaires).&lt;/P&gt;
&lt;P&gt;Notre marketeuse préférée (Miss &lt;A href="http://mari-net.blogspot.com/" mce_href="http://mari-net.blogspot.com/"&gt;Marine Tranquard&lt;/A&gt;) n’a publié pour l’instant qu’une partie de la série. Elle s’occupera ensuite de publier 2 nouveaux labs par semaine. Nous n’avons pas encore tout publié car je n’ai pas fini d’écrire les labs “écrits”. &lt;/P&gt;
&lt;P&gt;Voici le programme complet pour vous donner une idée de ce qui vous attend (en &lt;FONT color=#008000&gt;&lt;STRONG&gt;vert&lt;/STRONG&gt;&lt;/FONT&gt; les concepts, en &lt;FONT color=#800000&gt;&lt;STRONG&gt;rouge&lt;/STRONG&gt;&lt;/FONT&gt; les Labs):&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&lt;B&gt;001 - Présentation générale de Silverlight 3&lt;/B&gt; :&lt;/FONT&gt; Ce webcast est accessible à tout le monde (même aux ITs ! :)) pour découvrir Silverlight pour la 1&lt;SUP&gt;ère&lt;/SUP&gt; fois ainsi que pour découvrir quelques nouveautés de Silverlight 3 en action. Nous positionnons l’agenda des 26 WebCasts, la technologie et certains contrôles communautaires supplémentaires.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#008000&gt;002 - Les bases d'une application Silverlight :&lt;/FONT&gt;&lt;/B&gt; Nous verrons ici la structure d’une application Silverlight, où elle s’héberge et son format.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#800000&gt;003 - Lab Etape 0 :&lt;/FONT&gt;&lt;/B&gt; création d’une application Silverlight 3 vide de type Navigation Application et analyse de son fonctionnement.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&lt;B&gt;004 - Concepts XAML, Formes de bases et Events&lt;/B&gt;&lt;B&gt; :&lt;/B&gt;&lt;/FONT&gt; Nous verrons ici sommairement ce qu’est que le XAML. Puis nous verrons les basiques, quelques contrôles de bases et la gestion évènementielle. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#800000&gt;005 - Lab Etape 1 :&lt;/FONT&gt;&lt;/B&gt; mise en place de l’application qui va nous servir tout le long des 12 labs. Nous allons ici faire nos premiers pas en XAML et réagir à quelques évènements. Dans un 1er temps, notre application aura pour but l’affichage de vidéos stockées sur un serveur distant.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#008000&gt;006 - Silverlight et la vidéo – WebClient :&lt;/FONT&gt;&lt;/B&gt; Nous découvrirons ici les possibilités média de Silverlight 3 avec la présentation du MediaElement, des formats supportés et une introduction au Smooth Streaming. Nous verrons aussi le principe du WebClient pour les téléchargement asynchrones. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#800000&gt;007 - Lab Etape 2 :&lt;/FONT&gt;&lt;/B&gt; utilisation du MediaElement et du Webclient.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#008000&gt;008 - Styles - Templating – DataBinding :&lt;/FONT&gt;&lt;/B&gt; Silverlight permet de modifier facilement le look &amp;amp; feel d’une application à travers des notions comme le style tout d’abord puis de manière plus étendue comme le templating. Nous verrons également un concept majeure de Silverlight : le databinding.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#800000&gt;009 - Lab - Etape3 :&lt;/FONT&gt;&lt;/STRONG&gt; modification complète de l’application en changeant un dictionnaire de ressource contenant tous les styles, mise en place du templating et du databinding. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#008000&gt;010 - Binding entre elements - Transformation - Projection3D :&lt;/FONT&gt; &lt;/B&gt;Découverte de deux nouveautés de Silverlight 3 : le binding entre éléments et la projection 3D.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#800000&gt;011 - Lab - Etape4 :&lt;/FONT&gt; &lt;/B&gt;utilisation du binding entre éléments : textblock branché à une combobox puis slider branché à une projection 3D sur une vidéo. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#008000&gt;012 - Animations classiques et easing - Moteur physique :&lt;/FONT&gt;&lt;/B&gt; Découverte des possibilités du moteur d’animation de Silverlight 3 dont les nouveautés : les EasingFunctions. Présentation rapide d’un moteur physique open source.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#800000&gt;013 - Lab Etape5 :&lt;/FONT&gt; &lt;/B&gt;Utilisation d’Expression Blend 3 pour créer une animation « classique » puis ensuite élastique (Easing). Nous utiliserons également Blend 3 pour revoir quelques détails cosmétiques de l’application et découvrir l’intérêt de cet outil dans la manipulation du XAML par un designer.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#008000&gt;014 - WCF et Silverlight 3 :&lt;/FONT&gt; &lt;/B&gt;Nous allons découvrir ici comment Silverlight peut communiquer avec un service distant de type WebService ou WCF. Nous verrons aussi quelques subtilités à connaître avec Silverlight dans ce contexte. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#800000&gt;015 - Lab Etape 6 :&lt;/FONT&gt;&lt;/STRONG&gt; création d’un service WCF « compatible Silverlight » et consommation de ce service depuis notre client Silverlight. Analyse du flux avec un outil de traces réseaux simple (Web Development Helper). Utilisation de la sérialisation texte XML puis binaire et comparaison entre les 2.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#008000&gt;016 - SandBox - OpenSaveFileDialog – Quota :&lt;/FONT&gt;&lt;/STRONG&gt; Silverlight tourne au sein du navigateur et dans un contexte dit de « client Web ». Cela implique donc des mécanismes de sécurité particuliers. Revue du SandBoxing et de l’accès aux fichiers de la machine exécutant l’application Silverlight. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#800000&gt;017 - Lab Etape 7 :&lt;/FONT&gt;&lt;/B&gt; utilisation des APIs OpenFileDialog et SaveFileDialog pour lire une vidéo stockée localement et sauvegarder une vidéo distante localement.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#008000&gt;018 - Pixel Shaders :&lt;/FONT&gt;&lt;/B&gt; Silverlight 3 apporte la possibilité de mettre en place des effets appelés Pixel Shaders. Découvrons comment s’en servir et leur principe. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#800000&gt;019 - Lab Etape 8 :&lt;/FONT&gt;&lt;/B&gt; mise en place de pixel shaders de manière très simple via le XAML avec Visual Studio et Blend 3. Mise en place d’un pixel shader par code pour mise en emphase d’une fenêtre modale.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#008000&gt;020 - Accélération Matérielle GPU :&lt;/FONT&gt; &lt;/B&gt;Silverlight 3 est désormais capable de tirer partie du GPU de la carte graphique. Cela n’est pas automatique cependant ! (comme les anti-biotiques). Découvrons les mécanismes d’utilisation. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#800000&gt;021 - Lab Etape 9 :&lt;/FONT&gt;&lt;/B&gt; utilisons la carte graphique pour soulager le processeur et analysons dans quels cas elle est véritablement utilisée ou non. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#008000&gt;022 - Out of browser et autres nouveautés :&lt;/FONT&gt;&lt;/STRONG&gt; Silverlight 3 est capable de rendre une application fonctionnelle en dehors du navigateur en ne faisant quasiment rien. S’ajoute cependant des particularités intéressantes à ce mode dit « Offline ».&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#800000&gt;023 - Lab Etape 10 :&lt;/FONT&gt;&lt;/STRONG&gt; rendons notre application disponible en dehors du navigateur. Nous allons voir ici également comment gérer la mise à jour automatique de notre application.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#008000&gt;024 - Introduction à .NET Ria Services :&lt;/FONT&gt;&lt;/B&gt; .NET RIA Services est un nouveau framework ayant pour objectif d’apporter une expérience RAD (Rapid Application Development) au monde de la RIA. Il va donc grandement simplifier les problématiques de développement n-tiers.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#800000&gt;025 - Lab Etape 11 :&lt;/FONT&gt;&lt;/B&gt; Reprise de notre application et enrichissement en suivant les étapes décrites ici : &lt;A href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-2-4.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-2-4.aspx"&gt;http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-2-4.aspx&lt;/A&gt; pour faire appel à .NET RIA Services et afficher des données d’une base de données dans une grille.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#800000&gt;026 - Lab Etape 12 :&lt;/FONT&gt;&lt;/B&gt; Suivi des étapes décrites ici : &lt;A href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-3-4.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-3-4.aspx"&gt;http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-3-4.aspx&lt;/A&gt; pour gérer le paging, grouping, sorting, la sauvegarde, les child windows et la validation automatique de règles métiers. &lt;/P&gt;
&lt;P&gt;En espérant que tout cela vous serve au mieux!&lt;/P&gt;
&lt;P&gt;David, coach à ses heures perdues&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9894059" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="Silverlight 3" scheme="http://blogs.msdn.com/davrous/archive/tags/Silverlight+3/default.aspx" /><category term="Coach" scheme="http://blogs.msdn.com/davrous/archive/tags/Coach/default.aspx" /></entry><entry><title>Tutorial – apprenez à vaporiser votre blog dans les nuages grâce à BlogEngine.Net et Windows Azure</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/09/10/tutorial-apprenez-vaporiser-votre-blog-dans-les-nuages-gr-ce-blogengine-net-et-windows-azure.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/09/10/tutorial-apprenez-vaporiser-votre-blog-dans-les-nuages-gr-ce-blogengine-net-et-windows-azure.aspx</id><published>2009-09-10T20:29:00Z</published><updated>2009-09-10T20:29:00Z</updated><content type="html">&lt;P&gt;En partant de zéro, je vous propose de voir les étapes à suivre pour mettre en place une plateforme de blog basée sur l’excellent &lt;A href="http://blogengine.codeplex.com/" mce_href="http://blogengine.codeplex.com/"&gt;BlogEngine.Net&lt;/A&gt; au sein de notre plateforme de Cloud Computing Windows Azure. Le but du jeu étant de vous permettre d’arriver au résultat disponible ici : &lt;A href="http://tektekpocket.cloudapp.net/" mce_href="http://tektekpocket.cloudapp.net/"&gt;http://tektekpocket.cloudapp.net/&lt;/A&gt; hébergé dans les nuages.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Pré-requis&lt;/B&gt; à installer sur votre machine avant toutes choses:&lt;/P&gt;
&lt;P&gt;- Visual Studio 2008 SP1, Visual Studio 2010 Beta 1 ou &lt;A href="http://www.microsoft.com/express/download/" mce_href="http://www.microsoft.com/express/download/"&gt;Visual Web Developer 2008 SP1&lt;/A&gt; (gratuit) &lt;BR&gt;- &lt;A href="http://go.microsoft.com/fwlink/?LinkID=130232" mce_href="http://go.microsoft.com/fwlink/?LinkID=130232"&gt;Le SDK d’Azure&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://go.microsoft.com/fwlink/?LinkId=128752" mce_href="http://go.microsoft.com/fwlink/?LinkId=128752"&gt;Les Tools Azure pour Visual Studio 2008 SP1&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;Phase 1 : préparation du coté de la plateforme Windows Azure&lt;/FONT&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;1 – Créez-vous un LiveID (sur &lt;A href="http://www.hotmail.fr/" mce_href="http://www.hotmail.fr"&gt;www.hotmail.fr&lt;/A&gt; par exemple) si vous n’en n’avez pas déjà un puis associez le au portail Azure en vous rendant sur : &lt;A href="http://www.azure.com/" mce_href="http://www.azure.com"&gt;http://www.azure.com&lt;/A&gt; et cliquez sur « Sign In »&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907369608/" mce_href="http://www.flickr.com/photos/35281337@N05/3907369608/"&gt;&lt;IMG alt=3907369608 src="http://static.flickr.com/3247/3907369608_58966a03de.jpg" width=500 height=331 mce_src="http://static.flickr.com/3247/3907369608_58966a03de.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Ensuite choisissez « Windows Azure » :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907369972/" mce_href="http://www.flickr.com/photos/35281337@N05/3907369972/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907369972 src="http://static.flickr.com/2529/3907369972_4fefaaf595.jpg" width=500 height=414 mce_src="http://static.flickr.com/2529/3907369972_4fefaaf595.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Une fois le bon LiveID (ici tektekpocket) choisit, vous pouvez l’associer au portail :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907370084/" mce_href="http://www.flickr.com/photos/35281337@N05/3907370084/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907370084 src="http://static.flickr.com/3441/3907370084_3683358b6c.jpg" width=500 height=183 mce_src="http://static.flickr.com/3441/3907370084_3683358b6c.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907370220/" mce_href="http://www.flickr.com/photos/35281337@N05/3907370220/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907370220 src="http://static.flickr.com/2448/3907370220_f258f0a6c6.jpg" width=500 height=159 mce_src="http://static.flickr.com/2448/3907370220_f258f0a6c6.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Ici, on vous demande un token (une sorte de clé) pour pouvoir continuer. Dans notre cas, nous ne l’avons pas encore demandé alors cliquez sur « Cancel » :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906591695/" mce_href="http://www.flickr.com/photos/35281337@N05/3906591695/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906591695 src="http://static.flickr.com/2451/3906591695_f5a954ae19.jpg" width=500 height=160 mce_src="http://static.flickr.com/2451/3906591695_f5a954ae19.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;2 – Il faut donc générer une clé pour créer une application Windows Azure. Pour cela, rendez-vous ici : &lt;A href="http://www.microsoft.com/azure/register.mspx" mce_href="http://www.microsoft.com/azure/register.mspx"&gt;http://www.microsoft.com/azure/register.mspx&lt;/A&gt; et cliquez sur « Register for Azure Services ». Vous serez conduit sur la plateforme Microsoft Connect :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907370608/" mce_href="http://www.flickr.com/photos/35281337@N05/3907370608/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907370608 src="http://static.flickr.com/2659/3907370608_c386480928.jpg" width=500 height=202 mce_src="http://static.flickr.com/2659/3907370608_c386480928.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Remplissez les différentes informations demandées puis vous arrivez là. Cliquez sur « Clés de produits » puis « Demandez une nouvelle clé de produit » puis « Obtenir la clé » :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906592233/" mce_href="http://www.flickr.com/photos/35281337@N05/3906592233/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906592233 src="http://static.flickr.com/3475/3906592233_1e494fcf35.jpg" width=500 height=371 mce_src="http://static.flickr.com/3475/3906592233_1e494fcf35.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907371076/" mce_href="http://www.flickr.com/photos/35281337@N05/3907371076/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907371076 src="http://static.flickr.com/2529/3907371076_99627d6af3.jpg" width=500 height=215 mce_src="http://static.flickr.com/2529/3907371076_99627d6af3.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907371280/" mce_href="http://www.flickr.com/photos/35281337@N05/3907371280/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907371280 src="http://static.flickr.com/2445/3907371280_b7c2bf4688.jpg" width=500 height=307 mce_src="http://static.flickr.com/2445/3907371280_b7c2bf4688.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Votre clé sera alors générée &lt;STRONG&gt;immédiatement&lt;/STRONG&gt; :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906592609/" mce_href="http://www.flickr.com/photos/35281337@N05/3906592609/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906592609 src="http://static.flickr.com/2471/3906592609_2376c749e5.jpg" width=500 height=190 mce_src="http://static.flickr.com/2471/3906592609_2376c749e5.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Copiez-la dans un endroit sûr, à l’abri du soleil et de l’humidité.&lt;/P&gt;
&lt;P&gt;3 – On peut désormais retourner sur le portail pour utiliser cette clé. Pour cela, rendez-vous dans la partie « Account » puis cliquez sur « Manage My Tokens » puis entrez la clé obtenue ci-dessus dans la zone de texte. Cliquez sur « Claim Token ». Cela vous permettra d’activer l’utilisation du service de calcul (Compute) et de stockage de Windows Azure. Retournez sur « Summary » et cliquez sur le nom du projet (ici PDC08 CTP) :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906592743/" mce_href="http://www.flickr.com/photos/35281337@N05/3906592743/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906592743 src="http://static.flickr.com/2438/3906592743_358782432a.jpg" width=500 height=145 mce_src="http://static.flickr.com/2438/3906592743_358782432a.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Cliquez ensuite sur « + New Service » :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907371676/" mce_href="http://www.flickr.com/photos/35281337@N05/3907371676/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907371676 src="http://static.flickr.com/3436/3907371676_15e09bafff.jpg" width=500 height=219 mce_src="http://static.flickr.com/3436/3907371676_15e09bafff.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Vous arrivez sur cette page. On va commencer par créer un espace de stockage en cliquant sur « Storage Account » :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906593017/" mce_href="http://www.flickr.com/photos/35281337@N05/3906593017/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906593017 src="http://static.flickr.com/2440/3906593017_67842ea902.jpg" width=500 height=235 mce_src="http://static.flickr.com/2440/3906593017_67842ea902.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Remplissez les champs en fonction de vos préférences puis cliquez sur « Next » :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907371900/" mce_href="http://www.flickr.com/photos/35281337@N05/3907371900/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907371900 src="http://static.flickr.com/3524/3907371900_ae3bd4c17e.jpg" width=500 height=257 mce_src="http://static.flickr.com/3524/3907371900_ae3bd4c17e.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Donnez ensuite un nom unique (sous forme d’URL) à votre espace de stockage puis cliquez sur « Create » :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907372044/" mce_href="http://www.flickr.com/photos/35281337@N05/3907372044/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907372044 src="http://static.flickr.com/2615/3907372044_9151602df5.jpg" width=500 height=363 mce_src="http://static.flickr.com/2615/3907372044_9151602df5.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Vous arrivez alors sur cette page récapitulative :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906593481/" mce_href="http://www.flickr.com/photos/35281337@N05/3906593481/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906593481 src="http://static.flickr.com/2489/3906593481_3cc610eb11.jpg" width=500 height=327 mce_src="http://static.flickr.com/2489/3906593481_3cc610eb11.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Pensez à bien noter le nom de votre compte (ici tektek par exemple) et au moins la clé primaire. Nous allons nous en servir plus tard pour BlogEngine.Net. Au pire, vous pourrez toujours revenir vers cette page pour noter à nouveau l’ensemble. &lt;/P&gt;
&lt;P&gt;4 – Une fois l’espace de stockage alloué, il faut indiquer que l’on souhaite également pouvoir utiliser la plateforme d’hébergement d’applications (Hosted Services). Pour cela, revenez à cette page et cliquez sur « Hosted Services » :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907372284/" mce_href="http://www.flickr.com/photos/35281337@N05/3907372284/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907372284 src="http://static.flickr.com/2618/3907372284_7675d527bb.jpg" width=500 height=236 mce_src="http://static.flickr.com/2618/3907372284_7675d527bb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Remplissez à nouveau les informations demandées :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906593707/" mce_href="http://www.flickr.com/photos/35281337@N05/3906593707/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906593707 src="http://static.flickr.com/3534/3906593707_47e458cfbf.jpg" width=500 height=260 mce_src="http://static.flickr.com/3534/3906593707_47e458cfbf.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906593859/" mce_href="http://www.flickr.com/photos/35281337@N05/3906593859/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906593859 src="http://static.flickr.com/2448/3906593859_744b50ba51.jpg" width=500 height=343 mce_src="http://static.flickr.com/2448/3906593859_744b50ba51.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Une fois ces étapes suivies, vous arrivez sur le portail d’administration de la plateforme d’exécution dans le nuage proposant un environnement de pré-production (Staging) et de production.&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906593859/" mce_href="http://www.flickr.com/photos/35281337@N05/3906593859/"&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906593923/" mce_href="http://www.flickr.com/photos/35281337@N05/3906593923/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906593923 src="http://static.flickr.com/2624/3906593923_3f2f572c7b.jpg" width=500 height=314 mce_src="http://static.flickr.com/2624/3906593923_3f2f572c7b.jpg"&gt;&lt;/A&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Les nuages sont prêts à nous accueillir. Revenons quelques temps sur terre avant de s’envoler à nouveau.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT size=3&gt;Phase 2 : téléchargement de BlogEngine version Azure et exécution de la solution dans l’environnement de simulation&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;1 – Téléchargez une version de BlogEngine. NET modifié pour fonctionner sur le storage d’Azure (Table &amp;amp; Blob) ici : &lt;A href="http://kleartouch.codeplex.com/" mce_href="http://kleartouch.codeplex.com/"&gt;http://kleartouch.codeplex.com/&lt;/A&gt; . A noter, pour les spécialistes, que le Membership Provider d’ASP.NET (pour l’authentification des utilisateurs) a également été porté pour fonctionner sur Azure dans le code fourni. &lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906593979/" mce_href="http://www.flickr.com/photos/35281337@N05/3906593979/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906593979 src="http://static.flickr.com/2606/3906593979_b15c8f22fe.jpg" width=334 height=88 mce_src="http://static.flickr.com/2606/3906593979_b15c8f22fe.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;2 – Une fois le fichier ZIP récupéré, il faut le « débloquer » en allant dans les propriétés :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906594145/" mce_href="http://www.flickr.com/photos/35281337@N05/3906594145/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906594145 src="http://static.flickr.com/2650/3906594145_a00e5e29ee.jpg" width=366 height=500 mce_src="http://static.flickr.com/2650/3906594145_a00e5e29ee.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Sinon Visual Studio râlera un peu en disant qu’il a tendance à ne pas faire confiance au contenu. Cela n’empêche pas le bon fonctionnement, mais c’est quand même mieux de faire les choses proprement. ;-)&lt;/P&gt;
&lt;P&gt;3 – Lancez Visual Studio 2008 en mode administrateur et ouvrir le .SLN qui va bien : BlogEngine.Azure.sln&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907372908/" mce_href="http://www.flickr.com/photos/35281337@N05/3907372908/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907372908 src="http://static.flickr.com/3506/3907372908_49261723e4.jpg" width=500 height=180 mce_src="http://static.flickr.com/3506/3907372908_49261723e4.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Note : il est important de lancer Visual Studio 2008 en mode administrateur pour pouvoir lancer la « fabrique » (l’environnement de simulation) d’Azure. Sinon, Visual Studio râlera à nouveau mais cette fois-ci vous empêchera d’aller plus loin lorsque vous tenterez d’exécuter l’application. Sacré VS !&lt;/P&gt;
&lt;P&gt;4 – Dans la version que nous avons récupérée avec &lt;A href="http://blogs.technet.com/stanislas" mce_href="http://blogs.technet.com/stanislas"&gt;Stan&lt;/A&gt;, il y avait un léger souci empêchant la compilation. Pour corriger le problème, il faut enlever un thème qui semble corrompu pour l’instant. Supprimez le répertoire « n3oEco » de l’arborescence du projet BlogEngine dans la fenêtre « Solution Explorer » de Visual Studio 2008 :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906594655/" mce_href="http://www.flickr.com/photos/35281337@N05/3906594655/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906594655 src="http://static.flickr.com/3432/3906594655_87823f7c8a.jpg" width=203 height=273 mce_src="http://static.flickr.com/3432/3906594655_87823f7c8a.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Compilez l’ensemble, vous ne devriez pas avoir d’erreurs de compilations. Vous n’aurez peut-être pas à faire de même si l’auteur du code corrige l’ensemble d’ici là (je m’en vais lui indiquer).&lt;/P&gt;
&lt;P&gt;5 – Il faut préparer l’environnement de simulation local à pouvoir recevoir le schéma de tables retenues par BlogEngine. Tout d’abord, faites bouton-droit sur BlogEngine.Azure et cliquez sur « Create Test Storage Tables ».&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906594387/" mce_href="http://www.flickr.com/photos/35281337@N05/3906594387/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906594387 src="http://static.flickr.com/2502/3906594387_5bcbe358f8.jpg" width=362 height=479 mce_src="http://static.flickr.com/2502/3906594387_5bcbe358f8.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Si tout se passe bien, vous aurez ce gentil message en retour :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907373396/" mce_href="http://www.flickr.com/photos/35281337@N05/3907373396/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907373396 src="http://static.flickr.com/2519/3907373396_0bef2afbea.jpg" width=445 height=189 mce_src="http://static.flickr.com/2519/3907373396_0bef2afbea.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Ensuite, positionnez le projet BlogEngine.Setup comme projet de démarrage :&lt;/P&gt;
&lt;P&gt;&lt;IMG alt=3906594799 src="http://static.flickr.com/2636/3906594799_79abd4d424.jpg" width=312 height=368 mce_src="http://static.flickr.com/2636/3906594799_79abd4d424.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Lancez ensuite (si ce n’est déjà fait), l’environnement de simulation du stockage d’Azure : « Development Storage » :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907373598/" mce_href="http://www.flickr.com/photos/35281337@N05/3907373598/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907373598 src="http://static.flickr.com/2627/3907373598_56727fa8d3.jpg" width=413 height=241 mce_src="http://static.flickr.com/2627/3907373598_56727fa8d3.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Puis vérifiez bien que la base de données « BlogEngineAzure » est celle active par défaut:&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907373670/" mce_href="http://www.flickr.com/photos/35281337@N05/3907373670/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907373670 src="http://static.flickr.com/2474/3907373670_8854b724b7.jpg" width=500 height=175 mce_src="http://static.flickr.com/2474/3907373670_8854b724b7.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906595139/" mce_href="http://www.flickr.com/photos/35281337@N05/3906595139/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906595139 src="http://static.flickr.com/2447/3906595139_878118bccc.jpg" width=490 height=216 mce_src="http://static.flickr.com/2447/3906595139_878118bccc.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Pour finir, exécutez ce programme Console en appuyant sur F5 :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907373954/" mce_href="http://www.flickr.com/photos/35281337@N05/3907373954/"&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907373886/" mce_href="http://www.flickr.com/photos/35281337@N05/3907373886/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907373886 src="http://static.flickr.com/3491/3907373886_bb9d398768.jpg" width=500 height=253 mce_src="http://static.flickr.com/3491/3907373886_bb9d398768.jpg"&gt;&lt;/A&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;6 – Repositionnez le projet BlogEngine.Azure comme projet de démarrage :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907373954/" mce_href="http://www.flickr.com/photos/35281337@N05/3907373954/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907373954 src="http://static.flickr.com/3493/3907373954_868fb6cf9a.jpg" width=314 height=294 mce_src="http://static.flickr.com/3493/3907373954_868fb6cf9a.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Puis lancez le projet Web Azure avec le bon vieux F5 afin de vérifier que tout fonctionne correctement.&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906595667/" mce_href="http://www.flickr.com/photos/35281337@N05/3906595667/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906595667 src="http://static.flickr.com/2547/3906595667_1b3be5b44a.jpg" width=500 height=375 mce_src="http://static.flickr.com/2547/3906595667_1b3be5b44a.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Nous avons pour l’instant confirmé que la plateforme de blog BlogEngine.NET fonctionne correctement dans l’environnement de simulation d’exécution de Windows Azure appelée la « Development Fabric » disponible sur &lt;A href="http://127.0.0.1:81/" mce_href="http://127.0.0.1:81"&gt;http://127.0.0.1:81&lt;/A&gt;. Nous utilisons également pour l’instant des données disponibles dans l’environnement de simulation de stockage d’Azure appelée donc « Development Storage » disponible sur &lt;A href="http://127.0.0.1:1000/" mce_href="http://127.0.01:1000"&gt;http://127.0.01:1000&lt;/A&gt; (blob) et &lt;A href="http://127.0.0.1:1002/" mce_href="http://127.0.0.1:1002"&gt;http://127.0.0.1:1002&lt;/A&gt; (table). Les données sont accessibles via REST. Nous n’utilisons pas ici les notions de queues.&lt;/P&gt;
&lt;P&gt;Vous pouvez tenter de créer quelques posts, de modifier quelques paramétrages, etc. Login par défaut : admin/admin.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT size=3&gt;Phase 3 : exécution locale dans l’environnement de simulation mais utilisation des données « Live » depuis Windows Azure&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Avant de tout basculer en production, une bonne pratique consiste à d’abord préparer la structure et les données de nos tables dans Windows Azure (et donc plus localement en simulation) mais de laisser la partie exécution (ASP.NET) en local. Cela permet ainsi de tester, débugger et ajustez quelques réglages en utilisant un jeu de tests réel en production tout en ayant une expérience de débogage immédiate et simple. Ce n’est effectivement plus le cas lorsque vous poussez votre code dans Windows Azure : pas question d’attacher notre débuggeur préféré au processus qui tournent dans les nuages !&lt;/P&gt;
&lt;P&gt;1 – Pour cela, il faut modifier le &lt;EM&gt;ServiceConfiguration.cscfg&lt;/EM&gt; du projet BlogEngine.Azure pour se connecter désormais vers Windows Azure Storage.&lt;/P&gt;
&lt;P&gt;Voici un exemple de nouveau fichier .cscfg (pensez à bien utiliser votre clé et le nom du compte généré sur le portail Azure pour pointer vers votre propre stockage) :&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;xml&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;version&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;1.0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;?&amp;gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;ServiceConfiguration&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;serviceName&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;BlogEngine&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Role&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;BlogEngine&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;&amp;lt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;Instances&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;count&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;"&lt;SPAN style="COLOR: blue"&gt;1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;ConfigurationSettings&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Setting&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;LogAllRequests&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Setting&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;LogFailedRequests&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;!--&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;SETTING NAME="BLOBSTORAGEENDPOINT" VALUE="HTTP://127.0.0.1:10000" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;SETTING NAME="QUEUESTORAGEENDPOINT" VALUE="HTTP://127.0.0.1:10001" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;SETTING NAME="TABLESTORAGEENDPOINT" VALUE="HTTP://127.0.0.1:10002" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;SETTING NAME="ACCOUNTNAME" VALUE="DEVSTOREACCOUNT1" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;SETTING NAME="ACCOUNTSHAREDKEY" VALUE="EBY8VDM02XNOCQFLQUWJPLLMETLCDXJ1OUZFT50USRZ6IFSUFQ2UVERCZ4I6TQ/K1SZFPTOTR/KBHBEKSOGMGW==" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Setting&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;BlobStorageEndpoint&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;https://blob.core.windows.net&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Setting&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;QueueStorageEndpoint&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;https://queue.core.windows.net&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Setting&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;TableStorageEndpoint&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;https://table.core.windows.net&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;&amp;lt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;Setting&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;"&lt;SPAN style="COLOR: blue"&gt;AccountName&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;tektek&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;Setting&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;"&lt;SPAN style="COLOR: blue"&gt;AccountSharedKey&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;votreprimaryaccesskeyici&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;ConfigurationSettings&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;Role&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;ServiceConfiguration&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt; mso-ansi-language: FR" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;En jaune se trouve les parties que vous devez modifier : le nombre d’instances de serveurs Web que vous souhaitez allouer au blog, le nom du compte de votre stockage Windows Azure et la clé primaire générée précédemment. Le nombre d’instance peut être augmenté plus tard une fois le projet déployé pour pouvoir répondre dynamiquement à un pic de charge suite à une opération marketing par exemple puis ensuite être redescendu à sa valeur initiale. C’est tout l’intérêt du coté élastique proposé par une plateforme de Cloud Computing.&lt;/P&gt;
&lt;P&gt;2 – Il faut ensuite modifier le fichier &lt;EM&gt;web.config&lt;/EM&gt; du projet BlogEngine. Après cette ligne de XML :&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;add&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; &lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;key&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; = &lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;"&lt;SPAN style="COLOR: blue"&gt;DefaultSessionContainerName&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt; mso-ansi-language: FR" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Utilisez ces lignes à la place de celles d’origine (n’oubliez toujours pas d’y insérer vos propres informations de connexion !) :&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;!--&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;add key = "BlobStorageEndpoint" value="http://127.0.0.1:10000"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;add key = "QueueStorageEndpoint" value="http://127.0.0.1:10001"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;add key = "TableStorageEndpoint" value="http://127.0.0.1:10002"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;add key = "AccountName" value="devstoreaccount1"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;add key = "AccountSharedKey" value="Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=="/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;add&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;key&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; = &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;BlobStorageEndpoint&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;https://blob.core.windows.net&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;add&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;key&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; = &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;QueueStorageEndpoint&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;https://queue.core.windows.net&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;add&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;key&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; = &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;TableStorageEndpoint&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;https://table.core.windows.net&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;add&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;key&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt; = &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;"&lt;SPAN style="COLOR: blue"&gt;AccountName&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;tektek&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes; mso-highlight: yellow" lang=FR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes; mso-highlight: yellow" lang=FR&gt;add&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes; mso-highlight: yellow" lang=FR&gt; &lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: red; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes; mso-highlight: yellow" lang=FR&gt;key&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes; mso-highlight: yellow" lang=FR&gt; = &lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes; mso-highlight: yellow" lang=FR&gt;"&lt;SPAN style="COLOR: blue"&gt;AccountSharedKey&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;votreprimaryaccesskeyici&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;3 – Il faut falloir maintenant provisionner vos tables dans le nuage pour faire pointer la plateforme de blog vers des données en production.&lt;/P&gt;
&lt;P&gt;Pour cela, allez dans les propriétés du projet BlogEngine.Setup puis dans l’onglet Debug et entrez d’abord le nom de votre compte de stockage suivi de votre clé dans la zone de texte « Command Line arguments »&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907374284/" mce_href="http://www.flickr.com/photos/35281337@N05/3907374284/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907374284 src="http://static.flickr.com/3489/3907374284_4e3424d768.jpg" width=500 height=293 mce_src="http://static.flickr.com/3489/3907374284_4e3424d768.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Remettez ensuite BlogEnginer.Setup comme projet de démarrage et lancez le programme en mode console pour créer les tables dans le storage Cloud :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906595991/" mce_href="http://www.flickr.com/photos/35281337@N05/3906595991/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906595991 src="http://static.flickr.com/2499/3906595991_3b27ddb656.jpg" width=500 height=253 mce_src="http://static.flickr.com/2499/3906595991_3b27ddb656.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;I&gt;Petit tip :&lt;/I&gt;&lt;/B&gt; pour analyser/débugger/comprendre le contenu et le fonctionnement du stockage Windows Azure (Table, Blob, Queue), je ne serais que trop vous recommander de télécharger 2 petits outils disponibles gratuitement sur codeplex :&lt;/P&gt;
&lt;P&gt;- &lt;EM&gt;Azure Storage Explorer&lt;/EM&gt; : &lt;A href="http://azurestorageexplorer.codeplex.com/" mce_href="http://azurestorageexplorer.codeplex.com/"&gt;http://azurestorageexplorer.codeplex.com/&lt;/A&gt; &lt;BR&gt;- &lt;EM&gt;Azure Blob Explorer&lt;/EM&gt; uniquement dédié à la manipulation des blobs (nos fichiers dans le cloud en quelques sortes) et plus à l’aise dans cette tâche que le précédemment: &lt;A href="http://blobexplorer.codeplex.com/" mce_href="http://blobexplorer.codeplex.com/"&gt;http://blobexplorer.codeplex.com/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Avec &lt;EM&gt;Azure Storage Explorer&lt;/EM&gt;, on peut alors voir la structure des tables créées, retrouver les posts effectués, analyser les logs de BlogEngine pour trouver d’éventuels problèmes, etc… Le tout en WPF s’il vous plait !&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906596167/" mce_href="http://www.flickr.com/photos/35281337@N05/3906596167/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906596167 src="http://static.flickr.com/2585/3906596167_9436df8e1c.jpg" width=500 height=365 mce_src="http://static.flickr.com/2585/3906596167_9436df8e1c.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;4 – Remettez le projet BlogEngine.Azure comme projet de démarrage et relancez le localement afin de vérifier que tout fonctionne : exécution locale, stockage Cloud. Si vous avez créé des posts dans le stockage local (Development Storage), vous ne devriez logiquement ne plus les voir car nous sommes désormais connecté au storage de Windows Azure (le vrai !).&lt;/P&gt;
&lt;P&gt;Dernière étape : il nous faut maintenant pousser la solution (WebRole) également dans les nuages.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT size=3&gt;Phase 4 : publication du WebRole dans Azure pour une exécution complètement gérée par le cloud&lt;/FONT&gt; &lt;/B&gt;(Vers l’infini et au-delà !)&lt;/P&gt;
&lt;P&gt;1 – Pour cela, rien de plus simple ! Publiez le package en faisant bouton-droit sur BlogEngine.Azure :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907374768/" mce_href="http://www.flickr.com/photos/35281337@N05/3907374768/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907374768 src="http://static.flickr.com/3464/3907374768_4f74ddc509.jpg" width=364 height=204 mce_src="http://static.flickr.com/3464/3907374768_4f74ddc509.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;2 – Ensuite, une fenêtre d’exploration de fichiers est ouverte à l’endroit où se trouve les 2 paquets à télécharger vers Windows Azure. Le portail Windows Azure est également affiché dans une nouvelle fenêtre du navigateur.&lt;/P&gt;
&lt;P&gt;Cliquez sur le nom du projet, puis ensuite sur la partie WebRole pour revenir à cette fenêtre :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906593923/" mce_href="http://www.flickr.com/photos/35281337@N05/3906593923/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906593923 src="http://static.flickr.com/2624/3906593923_3f2f572c7b.jpg" width=500 height=314 mce_src="http://static.flickr.com/2624/3906593923_3f2f572c7b.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Cliquez sur « Deploy » et remplissez cette fenêtre en copiant/collant le chemin vers chacun des 2 fichiers proposés dans l’explorateur de fichiers puis cliquez à nouveau sur « Deploy » :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906596337/" mce_href="http://www.flickr.com/photos/35281337@N05/3906596337/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906596337 src="http://static.flickr.com/2586/3906596337_08eb4a61f0.jpg" width=500 height=323 mce_src="http://static.flickr.com/2586/3906596337_08eb4a61f0.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906596427/" mce_href="http://www.flickr.com/photos/35281337@N05/3906596427/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906596427 src="http://static.flickr.com/3467/3906596427_baf4b1a2a0.jpg" width=426 height=291 mce_src="http://static.flickr.com/3467/3906596427_baf4b1a2a0.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Quelques secondes plus tard, vous revenez sur cet écran. Cliquez alors sur « Run » pour lancer les machines virtuelles que vous vous êtes octroyé dans le fichier de configuration (1 par défaut) :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907375070/" mce_href="http://www.flickr.com/photos/35281337@N05/3907375070/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907375070 src="http://static.flickr.com/3523/3907375070_212a88ae66.jpg" width=500 height=300 mce_src="http://static.flickr.com/3523/3907375070_212a88ae66.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Une fois les machines démarrées et prêtes à être utilisées, vous obtiendrez cet écran :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906596575/" mce_href="http://www.flickr.com/photos/35281337@N05/3906596575/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906596575 src="http://static.flickr.com/2426/3906596575_9a010ccde1.jpg" width=376 height=358 mce_src="http://static.flickr.com/2426/3906596575_9a010ccde1.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;L’environnement de pré-production est disponible. Cliquez sur l’URL un peu étrange pour tester que la plateforme de blog fonctionne désormais correctement en mode 100% Cloud (sans IT ajouté).&lt;/P&gt;
&lt;P&gt;3 – Pour basculer en production, il suffit de cliquer sur cet icône :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906596671/" mce_href="http://www.flickr.com/photos/35281337@N05/3906596671/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906596671 src="http://static.flickr.com/2574/3906596671_18e3c95dea.jpg" width=500 height=158 mce_src="http://static.flickr.com/2574/3906596671_18e3c95dea.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Et dire que vous êtes d’accord :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907375344/" mce_href="http://www.flickr.com/photos/35281337@N05/3907375344/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907375344 src="http://static.flickr.com/2624/3907375344_2353bf8623.jpg" width=458 height=161 mce_src="http://static.flickr.com/2624/3907375344_2353bf8623.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Voici alors l’état final de la page d’administration :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907375452/" mce_href="http://www.flickr.com/photos/35281337@N05/3907375452/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907375452 src="http://static.flickr.com/2567/3907375452_1b2671b2e5.jpg" width=500 height=346 mce_src="http://static.flickr.com/2567/3907375452_1b2671b2e5.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Ensuite, imaginons qu’une nouvelle version de la plateforme de blog soit disponible, il suffit de la déployer en pré-production branchée sur les mêmes données que la production. Cela vous permet facilement de tester son comportement sur l’URL un peu spéciale avant de cliquer sur le bouton de bascule pour déployer la nouvelle version en production après avoir réalisé une série de tests pour vous assurer de ne rien casser.&lt;/P&gt;
&lt;P&gt;De même, si votre blog rencontre (comme le mien je l’espère !) un succès inattendu induisant un ralentissement suite à un nombre important d’utilisateurs, il vous suffit simplement de cliquer sur « configure… » puis de passer le nombre d’instances Web de 1 à N afin de répondre à la charge. Le tout sera alors déployé, configuré, « load-balancé » et mis en ligne en quelques minutes. Faisons le test en passant le nombre d’instances de 1 à 2 puis en cliquant sur « Save » :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3906597093/" mce_href="http://www.flickr.com/photos/35281337@N05/3906597093/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3906597093 src="http://static.flickr.com/3486/3906597093_0947f9f262.jpg" width=500 height=402 mce_src="http://static.flickr.com/3486/3906597093_0947f9f262.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;La page d’administration nous notifie qu’une mise à jour est en cours :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907375708/" mce_href="http://www.flickr.com/photos/35281337@N05/3907375708/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907375708 src="http://static.flickr.com/3444/3907375708_2d69fc6759.jpg" width=192 height=189 mce_src="http://static.flickr.com/3444/3907375708_2d69fc6759.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Quelques minutes plus tard…&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3907375772/" mce_href="http://www.flickr.com/photos/35281337@N05/3907375772/"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=3907375772 src="http://static.flickr.com/2615/3907375772_e71f5163f4.jpg" width=354 height=353 mce_src="http://static.flickr.com/2615/3907375772_e71f5163f4.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Nous avons bien désormais 2 serveurs Web capables de prendre les requêtes en frontal. Tout cela, sans avoir du apprendre à maîtriser un Load-Balancer, à modifier notre code, à configurer de nouvelles machines ni à republier notre application. La plateforme Azure s’est occupé de tout automatiser pour assurer le succès de votre plateforme de blogging. &lt;/P&gt;
&lt;P&gt;&lt;I&gt;Disclaimer : malgré toute la puissance et l’efficacité proposée par la plateforme de services Azure, il n’existe pas encore de moyens techniques efficaces pour blogguer à votre place et assurer le succès de votre blog de manière totalement automatique. Vos petits doigts et votre talent seront donc toujours de rigueur !&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;I&gt;Petite note :&lt;/I&gt;&lt;/B&gt; pendant la mise à jour, votre blog peut ne plus être disponible. Ce n’est donc pas une bonne idée de le faire en production. Mieux vaut donc le faire en pré-production et ensuite basculer l’ensemble. Cela permet d’éviter d’avoir un éventuel arrêt de services.&lt;/P&gt;
&lt;P&gt;Aller, profitez en bien : pour l’instant tout est gratuit ! :)&lt;/P&gt;
&lt;P&gt;David, &lt;EM&gt;back from the Sky.&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9893765" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="CodePlex" scheme="http://blogs.msdn.com/davrous/archive/tags/CodePlex/default.aspx" /><category term="Azure" scheme="http://blogs.msdn.com/davrous/archive/tags/Azure/default.aspx" /><category term="ASPNET" scheme="http://blogs.msdn.com/davrous/archive/tags/ASPNET/default.aspx" /><category term="BlogEngine" scheme="http://blogs.msdn.com/davrous/archive/tags/BlogEngine/default.aspx" /></entry><entry><title>Tutorial pour utiliser simplement les Pixel Shaders avec Silverlight 3</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/07/27/tutorial-pour-utiliser-simplement-les-pixel-shaders-avec-silverlight-3.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/07/27/tutorial-pour-utiliser-simplement-les-pixel-shaders-avec-silverlight-3.aspx</id><published>2009-07-27T19:42:00Z</published><updated>2009-07-27T19:42:00Z</updated><content type="html">&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Silverlight 3 nous propose une nouveauté particulièrement intéressante pour effectuer des traitements graphiques sympathiques : les pixel shaders. En gros, cela consiste à appliquer une équation mathématique sur chacun des pixels constituant l’élément à modifier. Le langage retenu par Silverlight 3 pour ces shaders est le HLSL dont vous trouverez de la littérature en Anglais sur &lt;/FONT&gt;&lt;A href="http://en.wikipedia.org/wiki/High_Level_Shader_Language" mce_href="http://en.wikipedia.org/wiki/High_Level_Shader_Language"&gt;&lt;FONT size=3 face=Calibri&gt;Wikipedia&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; ou sur &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb509561%28VS.85%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb509561(VS.85).aspx"&gt;&lt;FONT size=3 face=Calibri&gt;MSDN&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;. Il ressemble à une espèce de C.&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Alors tout cela est bien joli, mais faut-il pour autant être une &lt;/FONT&gt;&lt;A href="http://en.wikipedia.org/wiki/Fields_Medal" mce_href="http://en.wikipedia.org/wiki/Fields_Medal"&gt;&lt;FONT size=3 face=Calibri&gt;Medal Fields&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; de mathématique pour pouvoir jouir de cette nouvelle puissance graphique à la portée de nos petits doigts de développeurs&amp;nbsp;? &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt;Heureusement que non&amp;nbsp;! Sinon, j’ai bien peur que je n’aurais pas pu m’en servir (je suis devenu nul en math après le BAC semblerait-il &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Wingdings" lang=FR&gt;&lt;FONT face=Calibri&gt;:)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt;). &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt;A travers ce tutorial, nous allons mettre au point la petite application Silverlight 3 ci-dessous (cliquez sur les pinguins!)&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;IFRAME style="WIDTH: 450px; HEIGHT: 330px" src="http://silverlight.services.live.com/invoke/94157/DemoSL3PS/iframe.html" frameBorder=0 scrolling=no&gt;&lt;/IFRAME&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt;&lt;BR&gt;Par défaut, 2 effets sont facilement disponibles sur n’importe lequel de vos éléments. Ils se trouvent sous la propriété &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21)" lang=FR&gt;Effect&lt;/SPAN&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt; et se nomment &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21)" lang=FR&gt;BlurEffect&lt;/SPAN&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt; et &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21)" lang=FR&gt;DropShadowEffect&lt;/SPAN&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B&gt;&lt;I&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt" lang=FR&gt;&lt;FONT face=Calibri&gt;Note&amp;nbsp;1:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;I&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt" lang=FR&gt;&lt;FONT face=Calibri&gt; vous trouverez à la fin de ce billet une vidéo de démonstration suivant les étapes décrites dans ce tutoriel.&lt;BR&gt;&lt;BR&gt;&lt;B&gt;Note&amp;nbsp;2:&lt;/B&gt; contrairement à WPF 3.5 SP1, les effets de type Pixel Shaders sont rendus de manière «&amp;nbsp;logicielle&amp;nbsp;» (c'est-à-dire par notre CPU préféré) et non pas par le GPU de la carte graphique. Dès que vous appliquerez un effet de shader, vous perdrez de facto l’accélération matérielle sur l’élément cible. Plus d’infos sur la &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/davrous/archive/2009/04/23/silverlight-3-pr-cisions-sur-l-acc-l-ration-mat-rielle-gpu.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/04/23/silverlight-3-pr-cisions-sur-l-acc-l-ration-mat-rielle-gpu.aspx"&gt;&lt;FONT face=Calibri&gt;gestion du GPU par SL3 ici&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Allez, je vous propose de suivre quelques étapes pour découvrir tout cela sans mal de tête. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)" lang=FR&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(0,176,240)" lang=FR&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;– Créez un projet Silverlight 3 de type «&amp;nbsp;Silverlight Application&amp;nbsp;» que vous hébergerez dans une simple page HTML.&lt;BR&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)"&gt;2&lt;/SPAN&gt;&lt;/B&gt; – Créez un répertoire «&amp;nbsp;images&amp;nbsp;» à la racine de votre projet et insérez-y 2 images de votre choix. Dans mon cas, j’ai pris les images «&amp;nbsp;Penguins.jpg&amp;nbsp;» et «&amp;nbsp;Tulips.jpg&amp;nbsp;» présentes dans les samples de Windows 7.&lt;BR&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)"&gt;3&lt;/SPAN&gt;&lt;/B&gt; – Au sein de la grille, insérez un contrôle Image et pointez vers l’une de vos 2 images.&lt;BR&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)"&gt;4&lt;/SPAN&gt;&lt;/B&gt; – Observez la propriété Effect du contrôle Image. Nous allons d’abord utiliser un effet d’ombre portée à l’aide de ce bout de XAML&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt" lang=FR&gt;Image&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt" lang=FR&gt; Source&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;="images/Penguins.jpg"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt" lang=FR&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;="20"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt" lang=FR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image.Effect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;DropShadowEffect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; ShadowDepth&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="10"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Direction&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="45" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image.Effect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt;Les propriétés &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red" lang=FR&gt;ShadowDepth&lt;/SPAN&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;et &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red" lang=FR&gt;Direction&lt;/SPAN&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt; indiquent respectivement le niveau de profondeur de l’ombre portée et la direction de celle-ci. Voici le résultat en image&amp;nbsp;:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt;&lt;IMG class=reflect title="" alt="SL3PS001 par vous " src="http://farm3.static.flickr.com/2627/3761865757_32255cd1db.jpg?v=0" width=295 onload=show_notes_initially(); height=224 mce_src="http://farm3.static.flickr.com/2627/3761865757_32255cd1db.jpg?v=0"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 10pt"&gt;&lt;?xml:namespace prefix = v /&gt;&lt;v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"&gt;&lt;/v:path&gt;&lt;o:lock aspectratio="t" v:ext="edit"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;v:shape style="WIDTH: 177pt; HEIGHT: 134.4pt; VISIBILITY: visible" id=Picture_x0020_0 type="#_x0000_t75" alt="SL3PS001.JPG" o:spid="_x0000_i1035"&gt;&lt;v:imagedata mce_src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image001.jpg" mce_tsrc="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image001.jpg" o:title="SL3PS001"&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)" lang=FR&gt;5 &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=FR&gt;– Utilisons maintenant à la place un effet de flou (Blur). Pour cela, utilisez le morceau de XAML suivant&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image.Effect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;BlurEffect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Radius&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="5" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image.Effect&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Voici le résultat avec cet effet&amp;nbsp;:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;&lt;IMG class=reflect title="" alt="SL3PS002 par vous " src="http://farm3.static.flickr.com/2667/3761865813_6a593b650b.jpg?v=0" width=286 onload=show_notes_initially(); height=220 mce_src="http://farm3.static.flickr.com/2667/3761865813_6a593b650b.jpg?v=0"&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SUB&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 10pt" lang=FR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SUB&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 7pt" lang=FR&gt;&lt;FONT face=Calibri&gt;Ne réglez pas votre téléviseur, nous contrôlons les horizontales et les verticales avec l’effet myope de Silverlight 3.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Si l’on souhaite mettre en place davantage d’effets, il faut alors créer ce que l’on appelle un «&amp;nbsp;custom effect&amp;nbsp;» à l’aide du langage HLSL dont je vous parlais plus haut. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Il faut écrire un .FX et cela ressemble alors à cela&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;float4 main(float2 uv : TEXCOORD) : COLOR&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;float2 dir = uv - center;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;float2 toPixel = uv - center; &lt;SPAN style="COLOR: green"&gt;// vector from center to pixel&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;float&lt;/SPAN&gt; distance = length(toPixel);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;float2 direction = toPixel/distance;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;float&lt;/SPAN&gt; angle = atan2(direction.y, direction.x);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;float2 wave;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;sincos(frequency * distance + phase, wave.x, wave.y);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;float&lt;/SPAN&gt; falloff = saturate(1-distance);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;falloff *= falloff;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;distance += amplitude * wave.x * falloff;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;sincos(angle, direction.y, direction.x);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;float2 uv2 = center + distance * direction;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;float&lt;/SPAN&gt; lighting = saturate(wave.y * falloff) * 0.2 + 0.8;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;float4 color = tex2D( implicitInputSampler, uv2 );&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;color.rgb *= lighting;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; color;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Une fois ce shader écrit, il faut le compiler en .PS à l’aide du SDK de DirectX. C’est ce fameux .PS (le shader compilé) que l’on pourra ensuite appliquer au sein d’une application Silverlight 3 comme effet personnalisé. Et c’est là que vous vous dites «&amp;nbsp;&lt;I&gt;mince, j’aurais du définitivement mieux suivre mes cours de Math au lieu d’aller jouer au baby foot moi&amp;nbsp;!&lt;/I&gt;&amp;nbsp;». En tout cas, c’est ce que je me dis de mon coté. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Heureusement, rien n’est perdu&amp;nbsp;! Pendant que nous allions jouer au baby foot, d’autres suivaient ardemment les cours de traitement du signal et autres joyeusetés. Ils ont ensuite eu la bonne idée de créer une librairie d’effets shaders compatibles avec WPF et Silverlight 3. Ils ont déposés le fruit de leur labeur sur codeplex : &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;A href="http://wpffx.codeplex.com/" mce_href="http://wpffx.codeplex.com/"&gt;&lt;FONT size=3 face=Calibri&gt;http://wpffx.codeplex.com/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Reprenons alors la suite de notre tutorial. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)" lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;6&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt; – Récupérez le code des librairies présentes sur CodePlex&lt;BR&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)"&gt;7&lt;/SPAN&gt;&lt;/B&gt; – Ouvrez le projet contenu dans le répertoire «&amp;nbsp;WPFSLFx\WPFSLFx\SL\SLShaderEffectLibrary&amp;nbsp;» et compilez le. &lt;BR&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)"&gt;8&lt;/SPAN&gt;&lt;/B&gt; – Ajoutez une référence à la DLL «&amp;nbsp;SLShaderEffectLibrary.dll&amp;nbsp;» ainsi générée dans le répertoire «&amp;nbsp;Bin&amp;nbsp;». &lt;BR&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)"&gt;9&lt;/SPAN&gt;&lt;/B&gt; – Déclarez ce nouveau namespace dans votre XAML&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt;ShaderEffectLibrary&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="clr-namespace:ShaderEffectLibrary;assembly=SLShaderEffectLibrary"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)" lang=FR&gt;10&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=FR&gt; – Vous avez désormais une nouvelle panoplie d’effets à votre disposition&amp;nbsp;!&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;SPAN lang=FR&gt;&lt;A title=SL3PS003 href="http://www.flickr.com/photos/35281337@N05/3761865881/" mce_href="http://www.flickr.com/photos/35281337@N05/3761865881/"&gt;&lt;/A&gt;&lt;IMG style="WIDTH: 340px; HEIGHT: 178px" class=reflect title="" alt="SL3PS003 par vous " src="http://farm3.static.flickr.com/2506/3761865881_d9bdc66a63.jpg?v=0" width=500 onload=show_notes_initially(); height=274 mce_src="http://farm3.static.flickr.com/2506/3761865881_d9bdc66a63.jpg?v=0"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 10pt"&gt;&lt;v:shape style="WIDTH: 255pt; HEIGHT: 139.8pt; VISIBILITY: visible" id=Picture_x0020_2 type="#_x0000_t75" alt="SL3PS003.JPG" o:spid="_x0000_i1033"&gt;&lt;v:imagedata mce_src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image005.jpg" mce_tsrc="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image005.jpg" o:title="SL3PS003"&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)" lang=FR&gt;11&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=FR&gt; – Utilisons maintenant celui faisant des vagues&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image.Effect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;ShaderEffectLibrary&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;RippleEffect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image.Effect&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Et voici le résultat&amp;nbsp;:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;&lt;o:p&gt;&lt;IMG class=reflect title="" alt="SL3PS004 par vous " src="http://farm3.static.flickr.com/2490/3761865943_ae0e92de83.jpg?v=0" width=282 onload=show_notes_initially(); height=212 mce_src="http://farm3.static.flickr.com/2490/3761865943_ae0e92de83.jpg?v=0"&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt"&gt;&lt;v:shape style="WIDTH: 169.2pt; HEIGHT: 127.2pt; VISIBILITY: visible" id=Picture_x0020_4 type="#_x0000_t75" alt="SL3PS004.JPG" o:spid="_x0000_i1032"&gt;&lt;v:imagedata mce_src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image007.jpg" mce_tsrc="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image007.jpg" o:title="SL3PS004"&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;C’est quand même pas mal non&amp;nbsp;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Bon maintenant, j’aimerais aller un peu plus loin en mettant en place des animations utilisant ces effets pour effectuer une jolie transition entre 2 images. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Comme nous utilisons un contrôle container de type «&amp;nbsp;Grid&amp;nbsp;», les éléments que l’on met dedans sont automatiquement superposés les uns sur les autres. Cela nous arrange donc pour mettre au point une animation de transition. On va en effet jouer sur la propriété d’opacité pour passer d’une image à l’autre. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)" lang=FR&gt;12&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=FR&gt; – Revenons donc à ce XAML simplifié&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt" lang=FR&gt;Image&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt" lang=FR&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt" lang=FR&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;="image2"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt" lang=FR&gt; Source&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;="images/Tulips.jpg"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt" lang=FR&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;="20" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt" lang=FR&gt;Image&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt" lang=FR&gt; x&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt" lang=FR&gt;Name&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;="image1"&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt" lang=FR&gt; Source&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;="images/Penguins.jpg"&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt" lang=FR&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;="20" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)" lang=FR&gt;13&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=FR&gt; – Nous allons d’abord jouer sur les valeurs d’opacité pour mettre en place l’animation la plus simple qui soit. Pour cela, déclarez ce storyboard comme ressource au contrôle&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt" lang=FR&gt;UserControl.Resources&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt" lang=FR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Storyboard&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="maJolieAnimation"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;DoubleAnimationUsingKeyFrames&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; BeginTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:00"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Storyboard.TargetName&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="image1"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Storyboard.TargetProperty&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="(UIElement.Opacity)"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; KeyTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:00"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="1"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; KeyTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:05"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="0"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt" lang=FR&gt;DoubleAnimationUsingKeyFrames&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt" lang=FR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt" lang=FR&gt;Storyboard&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt" lang=FR&gt;UserControl.Resources&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt" lang=FR&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt;On indique ici de faire passer la propriété opacité de notre image 1 (le pingouin) de 1 (visible) à 0 (invisible) à travers une animation durant 5 secondes. Lorsque l’image 1 ne sera plus visible, nous verrons donc l’image 2 qui se trouve en dessous. Pour lancer l’animation, abonnez-vous à l’évènement &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red" lang=FR&gt;MouseLeftButtonDown&lt;/SPAN&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt; de l’image 1 et lancez le code suivant&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; image1_MouseLeftButtonDown(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;MouseButtonEventArgs&lt;/SPAN&gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;maJolieAnimation.Begin();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;maJolieAnimation.AutoReverse = &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt" lang=FR&gt;}&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="LINE-HEIGHT: 115%; COLOR: rgb(112,48,160); FONT-SIZE: 9pt" lang=FR&gt;&lt;FONT face=Calibri&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Testez l’ensemble. En cliquant sur l’image 1, vous enclenchez l’animation de fondu. Grâce à l’AutoReverse, vous reviendrez alors automatiquement au statut de départ. &lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)" lang=FR&gt;14&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=FR&gt; – Couplons maintenant à cet effet de fondu, un effet de shader animé basé sur le &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21)" lang=FR&gt;RippleEffect&lt;/SPAN&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt;. Commencez par utiliser ce XAML pour l’image 1&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="image1"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Source&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="images/Penguins.jpg"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="20"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; MouseLeftButtonDown&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="image1_MouseLeftButtonDown"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image.Effect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;ShaderEffectLibrary&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;RippleEffect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Amplitude&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="0"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Frequency&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image.Effect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt;On déclare ici que l’on souhaite appliquer l’effet &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21)" lang=FR&gt;RippleEffect&lt;/SPAN&gt;&lt;SPAN lang=FR&gt;&lt;FONT face=Calibri&gt; qui n’a pour l’instant aucun résultat visible puisque nous avons positionné l’amplitude et la fréquence de la vague à 0.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)" lang=FR&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)" lang=FR&gt;15&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=FR&gt; – Modifions notre storyboard pour travailler sur cet effet en ajoutant ce XAML en dessous du travail effectué sur l’opacité&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;DoubleAnimationUsingKeyFrames&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; BeginTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:00"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Storyboard.TargetName&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="image1"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Storyboard.TargetProperty&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="(UIElement.Effect).(RippleEffect.Frequency)"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; KeyTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:00"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="0"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; KeyTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:05"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="75"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;DoubleAnimationUsingKeyFrames&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;DoubleAnimationUsingKeyFrames&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; BeginTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:00"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Storyboard.TargetName&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="image1"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Storyboard.TargetProperty&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="(UIElement.Effect).(RippleEffect.Amplitude)"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; KeyTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:00"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="0"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; KeyTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:05"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="1.1"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;DoubleAnimationUsingKeyFrames&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Nous travaillons ici sur 2 propriétés supplémentaires&amp;nbsp;: la valeur de fréquence et d’amplitude allant respectivement de 0 à 75 et de 0 à 1.1 pendant 5 secondes. Pour rappel, nous faisons également varier l’opacité dans la même tranche de temps.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Compilez et testez l’application pour vérifier que la jolie animation fonctionne bien.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;v:shape style="WIDTH: 157.8pt; HEIGHT: 119.4pt; VISIBILITY: visible" id=Picture_x0020_11 type="#_x0000_t75" alt="SL3PS004b.JPG" o:spid="_x0000_i1031"&gt;&lt;v:imagedata mce_src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image009.jpg" mce_tsrc="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image009.jpg" o:title="SL3PS004b"&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&lt;IMG class=reflect title="" alt="SL3PS004b par vous " src="http://farm3.static.flickr.com/2452/3762665410_3aa266335e.jpg?v=0" width=263 onload=show_notes_initially(); height=199 mce_src="http://farm3.static.flickr.com/2452/3762665410_3aa266335e.jpg?v=0"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Alors logiquement, tel que je vous connais, vous devriez me dire 2 choses&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;1 – Comment apprendre à connaître le fonctionnement de ces nouveaux effets&amp;nbsp;(les propriétés à manipuler, le résultat à l’écran, etc.)&amp;nbsp;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;2 – Suis-je obligé d’écrire le XAML des animations à la main&amp;nbsp;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Pour la 1&lt;SUP&gt;ère&lt;/SUP&gt; question, la réponse peut passer par l’utilisation d’un outil appelé Shazzam se trouvant ici&amp;nbsp;: &lt;/FONT&gt;&lt;A href="http://shazzam-tool.com/" mce_href="http://shazzam-tool.com/"&gt;&lt;FONT size=3 face=Calibri&gt;http://shazzam-tool.com/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; . Ce dernier permet de tester différents pixels shaders avec un éditeur de .FX intégré. Vous trouverez des informations écrites par l’auteur de l’outil &lt;/FONT&gt;&lt;A href="http://blog.wpfwonderland.com/2008/10/08/shazzam-wpf-pixel-shader-effect-testing-tool-now-available/" mce_href="http://blog.wpfwonderland.com/2008/10/08/shazzam-wpf-pixel-shader-effect-testing-tool-now-available/"&gt;&lt;FONT size=3 face=Calibri&gt;ici&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Pour la 2&lt;SUP&gt;ème&lt;/SUP&gt; question, je vous propose d’utiliser un outil plutôt doué pour la génération de XAML… j’ai nommé Express Blend 3&amp;nbsp;!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)" lang=FR&gt;16&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=FR&gt; – Ouvrez la page MainPage.xaml avec Blend 3&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;IMG style="WIDTH: 268px; HEIGHT: 96px" class=reflect title="" alt="SL3PS005 par vous " src="http://farm3.static.flickr.com/2436/3762665012_6de3671f13.jpg?v=0" width=303 onload=show_notes_initially(); height=113 mce_src="http://farm3.static.flickr.com/2436/3762665012_6de3671f13.jpg?v=0"&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;v:shape style="WIDTH: 156.6pt; HEIGHT: 58.8pt; VISIBILITY: visible" id=Picture_x0020_5 type="#_x0000_t75" alt="SL3PS005.JPG" o:spid="_x0000_i1030"&gt;&lt;v:imagedata mce_src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image011.jpg" mce_tsrc="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image011.jpg" o:title="SL3PS005"&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;On voit alors plusieurs choses. Tout d’abord, on retrouve bien l’effet actuellement appliqué à notre première image&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;v:shape style="WIDTH: 172.2pt; HEIGHT: 129.6pt; VISIBILITY: visible" id=Picture_x0020_6 type="#_x0000_t75" alt="SL3PS006.JPG" o:spid="_x0000_i1029"&gt;&lt;v:imagedata mce_src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image013.jpg" mce_tsrc="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image013.jpg" o:title="SL3PS006"&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&lt;IMG style="WIDTH: 247px; HEIGHT: 182px" class=reflect title="" alt="SL3PS006 par vous " src="http://farm4.static.flickr.com/3493/3762665086_1d2445d2d6.jpg?v=0" width=323 onload=show_notes_initially(); height=243 mce_src="http://farm4.static.flickr.com/3493/3762665086_1d2445d2d6.jpg?v=0"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;En cliquant sur «&amp;nbsp;New&amp;nbsp;», vous pouvez également retrouver l’ensemble des effets de notre librairie&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;IMG style="WIDTH: 310px; HEIGHT: 266px" class=reflect title="" alt="SL3PS007 par vous " src="http://farm3.static.flickr.com/2474/3762665174_f30895f06d.jpg?v=0" width=498 onload=show_notes_initially(); height=381 mce_src="http://farm3.static.flickr.com/2474/3762665174_f30895f06d.jpg?v=0"&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;v:shape style="WIDTH: 253.8pt; HEIGHT: 194.4pt; VISIBILITY: visible" id=Picture_x0020_7 type="#_x0000_t75" alt="SL3PS007.JPG" o:spid="_x0000_i1028"&gt;&lt;v:imagedata mce_src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image015.jpg" mce_tsrc="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image015.jpg" o:title="SL3PS007"&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Cela indique que nous allons pouvoir plutôt utiliser Blend 3 pour appliquer des effets à nos éléments plutôt que de taper le XAML à la main dans Visual Studio. Par ailleurs, on peut également voir et éditer l’animation que nous avons mise en place&amp;nbsp;:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;&lt;o:p&gt;&amp;nbsp;&lt;IMG style="WIDTH: 267px; HEIGHT: 166px" class=reflect title="" alt="SL3PS008 par vous " src="http://farm3.static.flickr.com/2557/3762665222_45d9b2bd61.jpg?v=0" width=381 onload=show_notes_initially(); height=219 mce_src="http://farm3.static.flickr.com/2557/3762665222_45d9b2bd61.jpg?v=0"&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;v:shape style="WIDTH: 201.6pt; HEIGHT: 115.8pt; VISIBILITY: visible" id=Picture_x0020_8 type="#_x0000_t75" alt="SL3PS008.JPG" o:spid="_x0000_i1027"&gt;&lt;v:imagedata mce_src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image017.jpg" mce_tsrc="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image017.jpg" o:title="SL3PS008"&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;B&gt;&lt;SPAN style="COLOR: rgb(112,48,160)" lang=FR&gt;17&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=FR&gt; – Nous allons alors en profiter pour légèrement améliorer l’animation actuellement en place sur la variation de l’opacité. Après avoir sélectionné «&amp;nbsp;maJolieAnimation&amp;nbsp;», cliquez sur l’élément «&amp;nbsp;Opacity&amp;nbsp;» de l’objet «&amp;nbsp;image1&amp;nbsp;»&amp;nbsp;:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;SPAN lang=FR&gt;&lt;IMG style="WIDTH: 256px; HEIGHT: 232px" class=reflect title="" alt="SL3PS009 par vous " src="http://farm3.static.flickr.com/2676/3762665296_ab9d2421a9.jpg?v=0" width=349 onload=show_notes_initially(); height=298 mce_src="http://farm3.static.flickr.com/2676/3762665296_ab9d2421a9.jpg?v=0"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;v:shape style="WIDTH: 184.2pt; HEIGHT: 157.2pt; VISIBILITY: visible" id=Picture_x0020_9 type="#_x0000_t75" alt="SL3PS009.JPG" o:spid="_x0000_i1026"&gt;&lt;v:imagedata mce_src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image019.jpg" mce_tsrc="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image019.jpg" o:title="SL3PS009"&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Au lieu d’avoir une animation linéaire, j’aimerais plutôt avoir une animation relativement lente au début et s’accélérant vite à la fin pour que nous ayons plus le temps de voir l’effet shader animé sur l’image 1. Pour cela, cliquez sur la combo «&amp;nbsp;EasyFunction&amp;nbsp;» et choisissez la 1&lt;SUP&gt;ère&lt;/SUP&gt; de type «&amp;nbsp;Quintic In&amp;nbsp;»&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;v:shape style="WIDTH: 172.2pt; HEIGHT: 73.2pt; VISIBILITY: visible" id=Picture_x0020_10 type="#_x0000_t75" alt="SL3PS010.JPG" o:spid="_x0000_i1025"&gt;&lt;v:imagedata mce_src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image021.jpg" mce_tsrc="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image021.jpg" o:title="SL3PS010"&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;IMG style="WIDTH: 250px; HEIGHT: 113px" class=reflect title="" alt="SL3PS010 par vous " src="http://farm3.static.flickr.com/2633/3761866281_7320e04479.jpg?v=0" width=331 onload=show_notes_initially(); height=141 mce_src="http://farm3.static.flickr.com/2633/3761866281_7320e04479.jpg?v=0"&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3&gt;Cela devrait alors vous produire le XAML suivant&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;UserControl&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt;Class&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="TestPSLibrary.MainPage"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;x&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;d&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="http://schemas.microsoft.com/expression/blend/2008"&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt; xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;mc&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="http://schemas.openxmlformats.org/markup-compatibility/2006"&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ShaderEffectLibrary&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="clr-namespace:ShaderEffectLibrary;assembly=SLShaderEffectLibrary"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;mc&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Ignorable&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="d"&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt; d&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;DesignWidth&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="640"&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt; d&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;DesignHeight&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="480"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;UserControl.Resources&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Storyboard&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="maJolieAnimation"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;DoubleAnimationUsingKeyFrames&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; BeginTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:00"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Storyboard.TargetName&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="image1"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Storyboard.TargetProperty&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="(UIElement.Opacity)"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; KeyTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:00"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="1"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame.EasingFunction&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;QuinticEase&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; EasingMode&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="EaseIn"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame.EasingFunction&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; KeyTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:05"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="0"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame.EasingFunction&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;QuinticEase&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; EasingMode&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="EaseIn"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame.EasingFunction&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;DoubleAnimationUsingKeyFrames&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;DoubleAnimationUsingKeyFrames&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; BeginTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:00"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Storyboard.TargetName&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="image1"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Storyboard.TargetProperty&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="(UIElement.Effect).(RippleEffect.Frequency)"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; KeyTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:00"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="0"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; KeyTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:05"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="75"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;DoubleAnimationUsingKeyFrames&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;DoubleAnimationUsingKeyFrames&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; BeginTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:00"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Storyboard.TargetName&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="image1"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Storyboard.TargetProperty&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="(UIElement.Effect).(RippleEffect.Amplitude)"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; KeyTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:00"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="0"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;EasingDoubleKeyFrame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; KeyTime&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="00:00:05"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="1.1"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;DoubleAnimationUsingKeyFrames&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Storyboard&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;UserControl.Resources&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="LayoutRoot"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="image2"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Source&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="images/Tulips.jpg"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="20" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="image1"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Source&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="images/Penguins.jpg"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="20"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; MouseLeftButtonDown&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="image1_MouseLeftButtonDown"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image.Effect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;ShaderEffectLibrary&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;RippleEffect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Amplitude&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="0"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt"&gt; Frequency&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image.Effect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Image&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: rgb(163,21,21); FONT-SIZE: 9pt"&gt;UserControl&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt" lang=FR&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Sauvegardez et recompilez. Si tout s’est bien passé, vous devriez alors obtenir l’application Silverlight 3 présentée au début de ce billet.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Voici le projet Visual Studio 2008 correspondant à cet article&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;IFRAME style="BORDER-BOTTOM: rgb(221,229,233) 1px solid; BORDER-LEFT: rgb(221,229,233) 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: rgb(255,255,255); MARGIN: 3px; PADDING-LEFT: 0px; WIDTH: 240px; PADDING-RIGHT: 0px; HEIGHT: 66px; BORDER-TOP: rgb(221,229,233) 1px solid; BORDER-RIGHT: rgb(221,229,233) 1px solid; PADDING-TOP: 0px" marginHeight=0 src="http://cid-0ee4bd0f5ea745c6.skydrive.live.com/embedrowdetail.aspx/.Public/TestPSLibrary.zip" frameBorder=0 marginWidth=0 scrolling=no mce_src="http://cid-0ee4bd0f5ea745c6.skydrive.live.com/embedrowdetail.aspx/.Public/TestPSLibrary.zip"&gt;&lt;/IFRAME&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Pour terminer, voici une vidéo de 15 min où je me propose de suivre ces mêmes étapes pour vous (double-cliquez dessus pour le plein écran) :&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;IFRAME style="WIDTH: 500px; HEIGHT: 375px" src="http://silverlight.services.live.com/invoke/94157/Demo%20Pixel%20Shaders%20Silverlight%203/iframe.html" frameBorder=0 scrolling=no&gt;&lt;/IFRAME&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Pour discuter davantage sur ce sujet, n'hésitez pas à nous rejoindre sur &lt;A title="Discussion sur forum Dvp.com" href="http://www.developpez.net/forums/d785544/dotnet/general-dotnet/silverlight/tutorial-lutilisation-pixel-shaders-sl3-ligne/" mce_href="http://www.developpez.net/forums/d785544/dotnet/general-dotnet/silverlight/tutorial-lutilisation-pixel-shaders-sl3-ligne/"&gt;ce fil de discussion&lt;/A&gt;.&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Bon Pixel Shaders et à bientôt&amp;nbsp;!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;David&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9850157" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="Silverlight 3" scheme="http://blogs.msdn.com/davrous/archive/tags/Silverlight+3/default.aspx" /><category term="Pixel Shaders" scheme="http://blogs.msdn.com/davrous/archive/tags/Pixel+Shaders/default.aspx" /></entry><entry><title>Utilisez LINQ pour faciliter l’accès aux listes Sharepoint via ses WebServices</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/07/03/utilisez-linq-pour-faciliter-l-acc-s-aux-listes-sharepoint-via-ses-webservices.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/07/03/utilisez-linq-pour-faciliter-l-acc-s-aux-listes-sharepoint-via-ses-webservices.aspx</id><published>2009-07-03T20:15:00Z</published><updated>2009-07-03T20:15:00Z</updated><content type="html">&lt;P&gt;Interroger une liste SharePoint depuis le webservice exposé qui va bien n’est pas très difficile mais c’est un peu casse pied de manipuler le flux XML retourné et de jouer avec le langage de requêtes de SharePoint appelé CAML. Voyons donc comment utiliser les dernières technologies disponibles avec le .NET Framework 3.5 telle que LINQ pour rendre meilleure notre vie de développeur. &lt;/P&gt;
&lt;P&gt;Partons de la liste d’exemple suivante :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3685013544/" mce_href="http://www.flickr.com/photos/35281337@N05/3685013544/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3685013544 src="http://farm3.static.flickr.com/2615/3685013544_b2248b14e1_o.jpg" width=688 height=339 mce_src="http://farm3.static.flickr.com/2615/3685013544_b2248b14e1_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Notre but ici sera de se créer une petite librairie permettant d’interroger le WebService de Sharepoint pour manipuler cette liste et ses éléments via un mapping objet et grâce l’utilisation de LINQ.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;La méthode classique&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Ajoutons une référence au service Web qui va bien en faisant « &lt;B&gt;Add Service Reference&lt;/B&gt; » sur le projet, puis « Advanced » puis « &lt;B&gt;Add Web Reference..&lt;/B&gt; ». Dans l’URL, entrez n’importe quelle adresse pointant vers un serveur SharePoint suivit ensuite de « &lt;B&gt;/_vti_bin/Lists.asmx&lt;/B&gt; ». Dans mon cas, je nommerais la référence « &lt;B&gt;MOSSListWS&lt;/B&gt; ».&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3684201643/" mce_href="http://www.flickr.com/photos/35281337@N05/3684201643/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3684201643 src="http://farm4.static.flickr.com/3289/3684201643_b2dd308bb4_o.jpg" width=557 height=448 mce_src="http://farm4.static.flickr.com/3289/3684201643_b2dd308bb4_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Cela va nous construire le proxy client que l’on pourra bien évidement utiliser vers d’autres serveurs SharePoint. &lt;/P&gt;
&lt;P&gt;Si l’on appelle la méthode GetListItems() sur la liste précédente via le code suivant :&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// On instancie le proxy du webservice SPS&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;MOSSListWS.&lt;SPAN style="COLOR: #2b91af"&gt;Lists&lt;/SPAN&gt; list_svc = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; MOSSListWS.&lt;SPAN style="COLOR: #2b91af"&gt;Lists&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// On utilise l'identité actuelle comme Credentials pour&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;// appeler le Webservice&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;list_svc.Credentials = &lt;SPAN style="COLOR: #2b91af"&gt;CredentialCache&lt;/SPAN&gt;.DefaultCredentials;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// On indique au proxy l'URL cible&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;list_svc.Url = _sharePointURL;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// On récupère tous les enregistrements&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;XmlNode&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt; itemCollection = list_svc.GetListItems(_nomListe, &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;.Empty, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;"0"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;);&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 8pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Voici le type de XML qui est retourné par la méthode dans &lt;I&gt;itemCollection&lt;/I&gt; :&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;rs:data&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ItemCount&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;7&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns:rs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;urn:schemas-microsoft-com:rowset&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;z:row&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ows_Attachments&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_LinkTitle&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Halo 3&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;ows_Plateforme&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;"&lt;SPAN style="COLOR: blue"&gt;Xbox 360&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;ows_Description&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;"&lt;SPAN style="COLOR: blue"&gt;Le meilleur jeu de FPS sur console&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ows_Prix&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;60.0000000000000&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_MetaInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;1;#&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ows__ModerationStatus&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ows__Level&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ows_Title&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;Halo 3&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ows_ID&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ows_owshiddenversion&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ows_UniqueId&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;1;#{03EF1580-F6DE-4BAA-9D80-7665207789CB}&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ows_FSObjType&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;1;#0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ows_Created_x0020_Date&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;1;#2009-06-23 16:02:06&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ows_Created&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;2009-06-23 16:02:06&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ows_FileLeafRef&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;1;#1_.000&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ows_FileRef&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;1;#sites/davrous/Lists/Liste Produits/1_.000&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;xmlns:z&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;#RowsetSchema&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;z:row&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;ows_Attachments&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_LinkTitle&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Visual C# Express&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_Plateforme&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Windows&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_Description&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Le meilleur éditeur de code gratuit du marché :)&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_Prix&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_MetaInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;2;#&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows__ModerationStatus&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows__Level&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_Title&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Visual C# Express&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;2&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_owshiddenversion&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_UniqueId&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;2;#{2031D3B5-F3B8-4597-9567-137ACCD2C1DB}&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_FSObjType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;2;#0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_Created_x0020_Date&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;2;#2009-06-23 16:02:49&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_Created&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;2009-06-23 16:02:49&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_FileLeafRef&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;2;#2_.000&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ows_FileRef&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;2;#sites/davrous/Lists/Liste Produits/2_.000&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns:z&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;#RowsetSchema&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;…&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;rs:data&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Il faudrait donc parser ce morceau de XML soit à la main soit via du XPath pour retrouver les informations qui nous intéressent. Je ne sais pas vous, mais moi, le XPath je ne suis pas super fan. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Création d’un mapping objet&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Sur la copie d’écran de notre liste « Liste Produits », 4 colonnes sont utilisées: &lt;I&gt;Nom du produit&lt;/I&gt;, &lt;I&gt;Plateforme&lt;/I&gt;, &lt;I&gt;Description&lt;/I&gt; et &lt;I&gt;Prix&lt;/I&gt;. &lt;/P&gt;
&lt;P&gt;On va donc partir sur cette définition objet pour faire le mapping avec la liste :&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Produit&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; Nom { &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt;; &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; Description { &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt;; &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; Plateforme { &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt;; &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; &lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt; Prix { &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt;; &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;}&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt; mso-ansi-language: FR" lang=FR&gt;&lt;FONT face=Calibri&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;On va ensuite créer une classe de base nommée BaseSPSList qui fonctionnera avec n’importe quelle type de liste SharePoint, quelques soient les colonnes qui ont été définies mais qui du coup offrira très peu de services : simplement récupérer les valeurs de la 1&lt;SUP&gt;er&lt;/SUP&gt; colonne. Puis ensuite une classe héritant de BaseSPSList nommée ProductsSPSList qui sera spécialisée et dédiée à la liste « Liste Produits » telle que définie par la 1&lt;SUP&gt;ère&lt;/SUP&gt; copie d’écran.&lt;/P&gt;
&lt;P&gt;Dans cette classe spécialisée, nous ferons donc appel au type Produit et nous aurons accès à des méthodes pour créer un nouvel enregistrement dans la liste, mettre à jour un enregistrement et supprimer un enregistrement. &lt;/P&gt;
&lt;P&gt;Pour éviter un aller/retour systématique vers le serveur SharePoint, un petit mécanisme de cache sera mis en place. Par ailleurs, dans cet exemple de code, j’ai fait le choix de retourner l’ensemble des enregistrements de la liste. Cela n’est pas forcément optimal. On peut éventuellement demander à SharePoint, via l’appel à la méthode GetListItems(), de ne retourner qu’un sous-ensemble grâce à l’utilisation de requêtes appelées CAML. Autre approximation dans cet exemple, on va considérer que le nom du produit nous servira comme clé pour les mises à jour et suppression depuis notre couche objet.&lt;/P&gt;
&lt;P&gt;Bref, certaines choses sont mal et devront être revues si vous avez l’idée saugrenue de reprendre ce code en production. &lt;/P&gt;
&lt;P&gt;Voici le code que je vous propose, rendez-vous après celui-ci pour quelques commentaires additionnels. A tout de suite donc !&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// Classe de base pour les opérations communes à toutes les listes&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;BaseSPSList&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// URL du serveur SharePoint cible&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; _sharePointURL;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// nom de la liste&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; _nomListe;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// on se sert d'un cache mémoire pour éviter&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// trop d'aller/retour serveur&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;XElement&lt;/SPAN&gt;&amp;gt; cachedSPSXElements = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Du coup, il faut pouvoir regénérer le cache si besoin&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; IsCacheDirty { &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt;; &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// Le constructeur a besoin de l'URL du site SharePoint ainsi&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// que la liste visée contenu dans ce même site&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; BaseSPSList(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; SharePointURL, &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; nomListe)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;._sharePointURL = SharePointURL + &lt;SPAN style="COLOR: #a31515"&gt;"/_vti_bin/Lists.asmx"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;._nomListe = nomListe;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.IsCacheDirty = &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Exemple de méthode qui fonctionne quelque soit la liste &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// fournie vu que ows_LinkTitle est systématiquement utilisé&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// par SharePoint 2007 comme nom de 1ère colonne&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IEnumerable&lt;/SPAN&gt; GetDistinctFirstColumnValues()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (IsCacheDirty || cachedSPSXElements == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;) BuildFirstQuery();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;var&lt;/SPAN&gt; query = &lt;SPAN style="COLOR: blue"&gt;from&lt;/SPAN&gt; x &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; cachedSPSXElements&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;where&lt;/SPAN&gt; x.Attribute(&lt;SPAN style="COLOR: #a31515"&gt;"ows_LinkTitle"&lt;/SPAN&gt;) != &lt;SPAN style="COLOR: blue"&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;select&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;new&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Title = x.Attribute(&lt;SPAN style="COLOR: #a31515"&gt;"ows_LinkTitle"&lt;/SPAN&gt;).Value&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;var&lt;/SPAN&gt; resultat = (&lt;SPAN style="COLOR: blue"&gt;from&lt;/SPAN&gt; f &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; query&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;select&lt;/SPAN&gt; f.Title).Distinct();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; resultat;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// On appel cette méthode que lors de la 1ere action effectuée&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;protected&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; BuildFirstQuery()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// On instancie le proxy du webservice SPS&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;MOSSListWS.&lt;SPAN style="COLOR: #2b91af"&gt;Lists&lt;/SPAN&gt; list_svc = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; MOSSListWS.&lt;SPAN style="COLOR: #2b91af"&gt;Lists&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// On utilise l'identité actuelle comme Credentials pour&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;// appeler le Webservice&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;list_svc.Credentials = &lt;SPAN style="COLOR: #2b91af"&gt;CredentialCache&lt;/SPAN&gt;.DefaultCredentials;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// On indique au proxy l'URL cible&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;list_svc.Url = _sharePointURL;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// On récupère tous les enregistrements&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; TEXT-INDENT: 36pt; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;// TO DO: ajouter la possibilité de spécifier un filtre&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;XmlNode&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; itemCollection = list_svc.GetListItems(_nomListe, &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;.Empty, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;"0"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// On parse le flux XML retourné par le webservice&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// pour faire appel ensuite à LINQ2XML&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;XDocument&lt;/SPAN&gt; cachedXMLDocument;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;cachedXMLDocument = &lt;SPAN style="COLOR: #2b91af"&gt;XDocument&lt;/SPAN&gt;.Parse(itemCollection.OuterXml.ToString());&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Namespace spécifique au XML retourné par SharePoint&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;XNamespace&lt;/SPAN&gt; ns = &lt;SPAN style="COLOR: #a31515"&gt;"#RowsetSchema"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;cachedSPSXElements = cachedXMLDocument.Descendants(ns + &lt;SPAN style="COLOR: #a31515"&gt;"row"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;IsCacheDirty = &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// Classe spécialisée sur notre définition de liste&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// comme "Liste Produits"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ProductsSPSList&lt;/SPAN&gt; : &lt;SPAN style="COLOR: #2b91af"&gt;BaseSPSList&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Constante spécifique à SharePoint pour&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// son nommage interne via son schéma de liste&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;const&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; SPS_INT_NOMPRODUIT = &lt;SPAN style="COLOR: #a31515"&gt;"ows_LinkTitle"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; SPS_INT_PLATEFORMES = &lt;SPAN style="COLOR: #a31515"&gt;"ows_Plateforme"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; SPS_INT_DESCRIPTION = &lt;SPAN style="COLOR: #a31515"&gt;"ows_Description"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; SPS_INT_PRIX = &lt;SPAN style="COLOR: #a31515"&gt;"ows_Prix"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; SPS_INT_SharePointID = &lt;SPAN style="COLOR: #a31515"&gt;"ows_ID"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; SPS_NOMPRODUIT = &lt;SPAN style="COLOR: #a31515"&gt;"Title"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; SPS_PLATEFORMES = &lt;SPAN style="COLOR: #a31515"&gt;"Plateforme"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; SPS_DESCRIPTION = &lt;SPAN style="COLOR: #a31515"&gt;"Description"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 9pt; mso-no-proof: yes; mso-highlight: yellow"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; SPS_PRIX = &lt;SPAN style="COLOR: #a31515"&gt;"Prix"&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; ProductsSPSList(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; SharePointURL, &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; ListName)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;: &lt;SPAN style="COLOR: blue"&gt;base&lt;/SPAN&gt;(SharePointURL, ListName)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Méthode retournant l'ensemble des produits de la liste&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Produit&lt;/SPAN&gt;&amp;gt; GetProducts()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;System.Globalization.&lt;SPAN style="COLOR: #2b91af"&gt;CultureInfo&lt;/SPAN&gt; ci;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ci = System.Globalization.&lt;SPAN style="COLOR: #2b91af"&gt;CultureInfo&lt;/SPAN&gt;.CreateSpecificCulture(&lt;SPAN style="COLOR: #a31515"&gt;"en-us"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Si c'est le 1er appel ou si le cache n'est plus considéré&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// comme à jour, on rappatrie les enregsitrements depuis SharePoint&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// sinon on utilise le cache mémoire pour éviter un aller/retour&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; (IsCacheDirty || cachedSPSXElements == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;) BuildFirstQuery();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// Requete LINQ permettant de faire le mapping&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// entre le flux XML brut retourné par SharePoint&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// et notre modèle de données Produit&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;var&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; produits = &lt;SPAN style="COLOR: blue"&gt;from&lt;/SPAN&gt; x &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; cachedSPSXElements&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;where&lt;/SPAN&gt; x.Attribute(&lt;SPAN style="COLOR: #a31515"&gt;"ows_LinkTitle"&lt;/SPAN&gt;) != &lt;SPAN style="COLOR: blue"&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;select&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Produit&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Nom = x.Attribute(SPS_INT_NOMPRODUIT).Value,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// permet de gérer les cas où la colonne n'a pas de valeur&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// renseignée pour ce produit&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Plateforme = x.Attribute(SPS_INT_PLATEFORMES) != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt; ? x.Attribute(SPS_INT_PLATEFORMES).Value : &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;.Empty,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Description = x.Attribute(SPS_INT_DESCRIPTION) != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt; ? x.Attribute(SPS_INT_DESCRIPTION).Value : &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;.Empty,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Prix = x.Attribute(SPS_INT_PRIX) != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt; ? &lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt;.Parse(x.Attribute(SPS_INT_PRIX).Value, ci) : -1,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;SharePointID = x.Attribute(SPS_INT_SharePointID) != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt; ? x.Attribute(SPS_INT_SharePointID).Value : &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;.Empty,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; produits;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Retourne le produit correspondant au nom passé en argument&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Produit&lt;/SPAN&gt;&amp;gt; GetProductByName(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; nomProduit)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Produit&lt;/SPAN&gt;&amp;gt; produits = GetProducts();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;var&lt;/SPAN&gt; filtreProduits = &lt;SPAN style="COLOR: blue"&gt;from&lt;/SPAN&gt; produit &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; produits&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;where&lt;/SPAN&gt; produit.Nom == nomProduit&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;select&lt;/SPAN&gt; produit;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; filtreProduits;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Méthode pour mettre à jour un produit coté liste SharePoint&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Si le produit existe déjà, il est mise à jour&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Sinon, il est tout simplement créé&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; UpdateProduct(&lt;SPAN style="COLOR: #2b91af"&gt;Produit&lt;/SPAN&gt; majProduit)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// On regarde si le produit existe déjà ou pas dans le cache&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Produit&lt;/SPAN&gt;&amp;gt; produitExistant = GetProductByName(majProduit.Nom);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Il n'a pas été trouvé en mémoire&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Il faut donc le créer coté SharePoint&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (produitExistant.Count().Equals(0))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Il faut indiquer d'après cette opération&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// le cache ne refletera plus la liste SharePoint&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;IsCacheDirty = &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; AddNewProduct(majProduit);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;majProduit.SharePointID = produitExistant.First().SharePointID;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; UpdateExistingProduct(majProduit);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;Exception&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; DeleteProduct(&lt;SPAN style="COLOR: #2b91af"&gt;Produit&lt;/SPAN&gt; supProduit)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Produit&lt;/SPAN&gt;&amp;gt; produitExistant = GetProductByName(supProduit.Nom);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Il n'a pas été trouvé en mémoire&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Nous avons donc rien à faire&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; (produitExistant.Count().Equals(0))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Le cache ne sera plus à jour après cette opération&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;IsCacheDirty = &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; SharePointID = produitExistant.First().SharePointID;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; DeleteExistingProduct(SharePointID);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;Exception&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Méthode pour ajouter un nouveau produit&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; AddNewProduct(&lt;SPAN style="COLOR: #2b91af"&gt;Produit&lt;/SPAN&gt; nouveauProduit)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;MOSSListWS.&lt;SPAN style="COLOR: #2b91af"&gt;Lists&lt;/SPAN&gt; list_svc = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; MOSSListWS.&lt;SPAN style="COLOR: #2b91af"&gt;Lists&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;list_svc.Credentials = &lt;SPAN style="COLOR: #2b91af"&gt;CredentialCache&lt;/SPAN&gt;.DefaultCredentials;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;list_svc.Url = _sharePointURL;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;XmlDocument&lt;/SPAN&gt; doc = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;XmlDocument&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;XmlElement&lt;/SPAN&gt; batch_element = doc.CreateElement(&lt;SPAN style="COLOR: #a31515"&gt;"Batch"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;batch_element.SetAttribute(&lt;SPAN style="COLOR: #a31515"&gt;"ListVersion"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;"1"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; item = &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;Method ID=\"1\" Cmd=\"New\"&amp;gt;"&lt;/SPAN&gt; +&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;Field Name=\"ID\"&amp;gt;New&amp;lt;/Field&amp;gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;+ &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;Field Name=\""&lt;/SPAN&gt; + SPS_NOMPRODUIT + &lt;SPAN style="COLOR: #a31515"&gt;"\"&amp;gt;"&lt;/SPAN&gt; + nouveauProduit.Nom + &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;/Field&amp;gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;+ &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;Field Name=\""&lt;/SPAN&gt; + SPS_PLATEFORMES + &lt;SPAN style="COLOR: #a31515"&gt;"\"&amp;gt;"&lt;/SPAN&gt; + nouveauProduit.Plateforme + &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;/Field&amp;gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;+ &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;Field Name=\""&lt;/SPAN&gt; + SPS_DESCRIPTION + &lt;SPAN style="COLOR: #a31515"&gt;"\"&amp;gt;"&lt;/SPAN&gt; + nouveauProduit.Description + &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;/Field&amp;gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;+ &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;Field Name=\""&lt;/SPAN&gt; + SPS_PRIX + &lt;SPAN style="COLOR: #a31515"&gt;"\"&amp;gt;"&lt;/SPAN&gt; + nouveauProduit.Prix + &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;/Field&amp;gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;+ &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;/Method&amp;gt;"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;batch_element.InnerXml = item;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// Aucune exception n'est levée en cas de non ajout&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Il faut donc vérifier l'errorcode dans retour XML&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;XmlNode&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; resultat = list_svc.UpdateListItems(_nomListe, batch_element);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; resultat.InnerText.Equals(&lt;SPAN style="COLOR: #a31515"&gt;"0x00000000"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;Exception&lt;/SPAN&gt; ex)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; err = ex.Message;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Methode pour mettre à jour un enregistrement coté SharePoint&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; UpdateExistingProduct(&lt;SPAN style="COLOR: #2b91af"&gt;Produit&lt;/SPAN&gt; majProduit)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;MOSSListWS.&lt;SPAN style="COLOR: #2b91af"&gt;Lists&lt;/SPAN&gt; list_svc = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; MOSSListWS.&lt;SPAN style="COLOR: #2b91af"&gt;Lists&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;list_svc.Credentials = &lt;SPAN style="COLOR: #2b91af"&gt;CredentialCache&lt;/SPAN&gt;.DefaultCredentials;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;list_svc.Url = _sharePointURL;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;XmlDocument&lt;/SPAN&gt; doc = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;XmlDocument&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;XmlElement&lt;/SPAN&gt; batch_element = doc.CreateElement(&lt;SPAN style="COLOR: #a31515"&gt;"Batch"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;batch_element.SetAttribute(&lt;SPAN style="COLOR: #a31515"&gt;"ListVersion"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;"1"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; item = &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;Method ID=\"1\" Cmd=\"Update\"&amp;gt;"&lt;/SPAN&gt; +&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;Field Name=\"ID\"&amp;gt;"&lt;/SPAN&gt; + majProduit.SharePointID + &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;/Field&amp;gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;+ &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;Field Name=\""&lt;/SPAN&gt; + SPS_NOMPRODUIT + &lt;SPAN style="COLOR: #a31515"&gt;"\"&amp;gt;"&lt;/SPAN&gt; + majProduit.Nom + &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;/Field&amp;gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;+ &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;Field Name=\""&lt;/SPAN&gt; + SPS_PLATEFORMES + &lt;SPAN style="COLOR: #a31515"&gt;"\"&amp;gt;"&lt;/SPAN&gt; + majProduit.Plateforme + &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;/Field&amp;gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;+ &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;Field Name=\""&lt;/SPAN&gt; + SPS_DESCRIPTION + &lt;SPAN style="COLOR: #a31515"&gt;"\"&amp;gt;"&lt;/SPAN&gt; + majProduit.Description + &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;/Field&amp;gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;+ &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;Field Name=\""&lt;/SPAN&gt; + SPS_PRIX + &lt;SPAN style="COLOR: #a31515"&gt;"\"&amp;gt;"&lt;/SPAN&gt; + majProduit.Prix + &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;/Field&amp;gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;+ &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;/Method&amp;gt;"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;batch_element.InnerXml = item;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;XmlNode&lt;/SPAN&gt; resultat = list_svc.UpdateListItems(_nomListe, batch_element);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; resultat.InnerText.Equals(&lt;SPAN style="COLOR: #a31515"&gt;"0x00000000"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;Exception&lt;/SPAN&gt; ex)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; err = ex.Message;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Méthode pour supprimer un enregistrement coté SharePoint&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; DeleteExistingProduct(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; SharePointID)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;MOSSListWS.&lt;SPAN style="COLOR: #2b91af"&gt;Lists&lt;/SPAN&gt; list_svc = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; MOSSListWS.&lt;SPAN style="COLOR: #2b91af"&gt;Lists&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;list_svc.Credentials = &lt;SPAN style="COLOR: #2b91af"&gt;CredentialCache&lt;/SPAN&gt;.DefaultCredentials;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// The URL property for WebService retrieve&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;list_svc.Url = _sharePointURL;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;XmlDocument&lt;/SPAN&gt; doc = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;XmlDocument&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;XmlElement&lt;/SPAN&gt; batch_element = doc.CreateElement(&lt;SPAN style="COLOR: #a31515"&gt;"Batch"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;batch_element.SetAttribute(&lt;SPAN style="COLOR: #a31515"&gt;"ListVersion"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;"1"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; item = &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;Method ID=\"1\" Cmd=\"Delete\"&amp;gt;"&lt;/SPAN&gt; +&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;Field Name=\"ID\"&amp;gt;"&lt;/SPAN&gt; + SharePointID + &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;/Field&amp;gt;&amp;lt;/Method&amp;gt;"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;batch_element.InnerXml = item;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;XmlNode&lt;/SPAN&gt; resultat = list_svc.UpdateListItems(_nomListe, batch_element);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; resultat.InnerText.Equals(&lt;SPAN style="COLOR: #a31515"&gt;"0x00000000"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;Exception&lt;/SPAN&gt; ex)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; err = ex.Message;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Si vous avez besoin d'ajouter des dates de .NET vers une liste SharePoint&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// il faut la convertir au format ISO 8601&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;String&lt;/SPAN&gt; ConvertDateTimeToISO8601(&lt;SPAN style="COLOR: #2b91af"&gt;DateTime&lt;/SPAN&gt; dt)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; dt.ToString(&lt;SPAN style="COLOR: #a31515"&gt;"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DateTime&lt;/SPAN&gt; ConvertISO8601ToDateTime(&lt;SPAN style="COLOR: #2b91af"&gt;String&lt;/SPAN&gt; iso)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DateTime&lt;/SPAN&gt;.ParseExact(iso, &lt;SPAN style="COLOR: #a31515"&gt;"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"&lt;/SPAN&gt;, System.Globalization.&lt;SPAN style="COLOR: #2b91af"&gt;CultureInfo&lt;/SPAN&gt;.InvariantCulture);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;J’espère avoir suffisamment commenté le code pour qu’il soit compréhensible en 1&lt;SUP&gt;ère&lt;/SUP&gt; lecture. La dernière partie est un cadeau bonus si comme moi vous galérez à un moment pour convertir un type DateTime de .NET défini dans votre mapping objet vers le format date de SharePoint. On ne l’utilise pas dans cet exemple mais cela peut toujours vous servir. &lt;/P&gt;
&lt;P&gt;Si vous avez été attentif, vous avez probablement remarqué les constantes que j’ai surlignées en jaune. Comment ai-je deviné leurs valeurs ? En analysant tout bêtement le morceau de XML mentionné en début d’article. Une meilleure approche sera d’interroger le service Web de liste via la méthode GetList() pour récupérer le schéma XML défini par SharePoint pour ma liste d’exemple et générer le mapping objet de manière automatique en analysant le schéma plutôt que de le coder en dur comme je l’ai fait. &lt;/P&gt;
&lt;P&gt;Toujours est-il, une fois que vous avez compris le concept, voici ensuite le type de client pouvant faire appel au code précédent s’il est mis dans une librairie DLL :&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;#region&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; Section Lecture de la liste&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// on instancie notre super Helper&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;ProductsSPSList&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; monHelper = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ProductsSPSList&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"http://myemea/sites/davrous"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;"Liste Produits"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// on souhaite récupérer l'ensemble des produits &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// inscrits dans la liste SharePoint "Liste Produits"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;var&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; tousLesProduits = monHelper.GetProducts();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// On peut alors simplement parcourir les produits&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// un à un&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;foreach&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;Produit&lt;/SPAN&gt; p &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; tousLesProduits)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;.WriteLine(p.Nom + &lt;SPAN style="COLOR: #a31515"&gt;" - Plateforme : "&lt;/SPAN&gt; + p.Plateforme);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;Console&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;.WriteLine(&lt;SPAN style="COLOR: #a31515"&gt;"-------------------"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// Encore mieux, comme nous retournous un&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// IEnumerable depuis notre librairie, on peut&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// filtrer le retour avec une requête LINQ!&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;var&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; produitsXbox360 = &lt;SPAN style="COLOR: blue"&gt;from&lt;/SPAN&gt; produits &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; tousLesProduits&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;where&lt;/SPAN&gt; produits.Plateforme.Equals(&lt;SPAN style="COLOR: #a31515"&gt;"Xbox 360"&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;select&lt;/SPAN&gt; produits;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// On peut à nouveau parcourir la projection&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;foreach&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;Produit&lt;/SPAN&gt; p &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; produitsXbox360)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;.WriteLine(p.Nom);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;#endregion&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;#region&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; Section Mise à jour de la liste&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// Mettons à jour d'un produit existant en le recherchant &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// d'abord par son nom&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;Produit&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; Natal = monHelper.GetProductByName(&lt;SPAN style="COLOR: #a31515"&gt;"Natal"&lt;/SPAN&gt;).First();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// On change le prix&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// Note : ce prix est le fruit de mon imagination, n'allez&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// surtout pas en déduire quoique ce soit&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;Natal.Prix = 50;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// On lance l'opération de mise à jour coté serveur SharePoint&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; (monHelper.UpdateProduct(Natal))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;.WriteLine(&lt;SPAN style="COLOR: #a31515"&gt;"Mise à jour de {0} effectuée avec succès."&lt;/SPAN&gt;, Natal.Nom);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;.WriteLine(&lt;SPAN style="COLOR: #a31515"&gt;"Erreur lors de la mise à jour de {0}."&lt;/SPAN&gt;, Natal.Nom);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// Testons maintenant la création d'un nouveau produit&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;Produit&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; nouveauProduit = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Produit&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;nouveauProduit.Nom = &lt;SPAN style="COLOR: #a31515"&gt;"Zune HD"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;nouveauProduit.Plateforme = &lt;SPAN style="COLOR: #a31515"&gt;"Xbox 360"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;nouveauProduit.Description = &lt;SPAN style="COLOR: #a31515"&gt;"un super baladeur qui envoit"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;nouveauProduit.Prix = 35;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// Même méthode que précédemment sauf que cette fois-ci&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// nous allons detécter l'absence du produit dans le cache&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// donc on va lancer l'opération de création coté SharePoint&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; (monHelper.UpdateProduct(nouveauProduit))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;.WriteLine(&lt;SPAN style="COLOR: #a31515"&gt;"Création de {0} effectuée avec succès."&lt;/SPAN&gt;, nouveauProduit.Nom);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;.WriteLine(&lt;SPAN style="COLOR: #a31515"&gt;"Erreur lors de la création de {0}"&lt;/SPAN&gt;, nouveauProduit.Nom);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;#endregion&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;#region&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; Section Suppression de la liste&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// Sitôt créé, sitôt détruit&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// La vie d'un produit n'est pas toujours rose vous savez...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Produit&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Zune = monHelper.GetProductByName(&lt;SPAN style="COLOR: #a31515"&gt;"Zune HD"&lt;/SPAN&gt;).First();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; (monHelper.DeleteProduct(Zune))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;.WriteLine(&lt;SPAN style="COLOR: #a31515"&gt;"Suppression de {0} effectuée avec succès."&lt;/SPAN&gt;, Zune.Nom);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;.WriteLine(&lt;SPAN style="COLOR: #a31515"&gt;"Erreur lors de la suppression de {0}"&lt;/SPAN&gt;, Zune.Nom);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;#endregion&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;Console&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Avouez que c’est nettement plus agréable à manipuler de cette façon ? En partant de la liste présentée en début d’article, voici le résultat de l’exécution de ce code client :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3685013748/" mce_href="http://www.flickr.com/photos/35281337@N05/3685013748/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3685013748 src="http://farm4.static.flickr.com/3096/3685013748_11cd047cf7_o.jpg" width=698 height=290 mce_src="http://farm4.static.flickr.com/3096/3685013748_11cd047cf7_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Vous trouverez ci-dessous un fichier ZIP contenant ces exemples de code sous forme de 2 projets : 1 projet de type librairie donc contenant la logique du helper et 1 projet de type application console référençant la DLL puis faisant appel au helper comme ci-dessus. &lt;/P&gt;&lt;IFRAME style="BORDER-BOTTOM: #dde5e9 1px solid; BORDER-LEFT: #dde5e9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #ffffff; MARGIN: 3px; PADDING-LEFT: 0px; WIDTH: 240px; PADDING-RIGHT: 0px; HEIGHT: 66px; BORDER-TOP: #dde5e9 1px solid; BORDER-RIGHT: #dde5e9 1px solid; PADDING-TOP: 0px" marginHeight=0 src="http://cid-0ee4bd0f5ea745c6.skydrive.live.com/embedrowdetail.aspx/.Public/DemoSPSLINQ.zip" frameBorder=0 marginWidth=0 scrolling=no&gt;&lt;/IFRAME&gt;
&lt;P&gt;Pour aller plus loin, on pourrait alors imaginer un générateur de code / création de mapping relationnel similaire à ce que nous avons aujourd’hui avec LINQ to SQL ou Entity Framework mais connecté à un type SharePoint. Il existe justement un projet de ce genre sur notre plateforme de partage de codes source ici : &lt;A href="http://www.codeplex.com/LINQtoSharePoint" mce_href="http://www.codeplex.com/LINQtoSharePoint"&gt;http://www.codeplex.com/LINQtoSharePoint&lt;/A&gt; . Malheureusement inachevé (le support des mises à jour n’existe pas par exemple), le code source du projet n’attend que vous pour continuer son bonhomme de chemin !&lt;/P&gt;
&lt;P&gt;David&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9816900" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="SharePoint" scheme="http://blogs.msdn.com/davrous/archive/tags/SharePoint/default.aspx" /><category term="LINQ" scheme="http://blogs.msdn.com/davrous/archive/tags/LINQ/default.aspx" /></entry><entry><title>Comment développer des applications d’entreprises orientées données avec Silverlight 3 : introduction à .NET RIA Services (4/4)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/05/29/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-4-4.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/05/29/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-4-4.aspx</id><published>2009-05-29T11:29:00Z</published><updated>2009-05-29T11:29:00Z</updated><content type="html">&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #c00000; FONT-SIZE: 11pt; mso-ansi-language: FR; mso-fareast-language: EN-US; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-bidi-language: AR-SA" lang=FR&gt;&lt;STRONG&gt;Article mis à jour&amp;nbsp;: 13 juillet 2009 pour la sortie de Silverlight 3 RTW et .NET RIA Services Juillet 2009&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #c00000; FONT-SIZE: 11pt; mso-ansi-language: FR; mso-fareast-language: EN-US; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-bidi-language: AR-SA" lang=FR&gt;&lt;/SPAN&gt;Ce billet est donc le dernier d’une série de quatre consacrés à l’introduction à .NET RIA Services. Voici le lien vers les autres billets:&lt;/P&gt;
&lt;P&gt;- &lt;A href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-1-4.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-1-4.aspx"&gt;Introduction aux concepts derrière .NET RIA Services et vidéo Hello Word .NET RIA&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-2-4.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-2-4.aspx"&gt;Création du squelette d’une application de gestion de clients en Silverlight 3 / .NET RIA Services&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-3-4.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-3-4.aspx"&gt;Utilisation de nouveaux contrôles données de Silverlight 3 / Implémentation d’une règle de validation&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Le résultat final en vidéo&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Double-cliquez sur la vidéo pour la mettre en plein écran.&lt;/P&gt;&lt;IFRAME style="WIDTH: 533px; HEIGHT: 400px" src="http://silverlight.services.live.com/invoke/94157/Gestion%20Clients%20RIA/iframe.html" frameBorder=0 scrolling=no mce_src="http://silverlight.services.live.com/invoke/94157/Gestion%20Clients%20RIA/iframe.html"&gt;&lt;/IFRAME&gt;
&lt;P&gt;Vous pouvez télécharger le code source complet correspondant au suivi de l’ensemble de ces étapes ici:&lt;/P&gt;
&lt;P&gt;&lt;IFRAME style="BORDER-BOTTOM: #dde5e9 1px solid; BORDER-LEFT: #dde5e9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #ffffff; MARGIN: 3px; PADDING-LEFT: 0px; WIDTH: 240px; PADDING-RIGHT: 0px; HEIGHT: 66px; BORDER-TOP: #dde5e9 1px solid; BORDER-RIGHT: #dde5e9 1px solid; PADDING-TOP: 0px" marginHeight=0 src="http://cid-0ee4bd0f5ea745c6.skydrive.live.com/embedrowdetail.aspx/.Public/GestionClientsRIA.zip" frameBorder=0 marginWidth=0 scrolling=no mce_src="http://cid-0ee4bd0f5ea745c6.skydrive.live.com/embedrowdetail.aspx/.Public/GestionClientsRIA.zip"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Conclusion&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Nous n’avons vu ici qu’une infime partie des possibilités que nous apporte .NET RIA Services. Il y a d’autres choses intéressantes comme la restriction d’appels à certaines méthodes en fonction de l’appelant, la gestion des rôles et de l’authentification, la gestion des transactions. J’espère malgré tout vous avoir donné un bon aperçu des capacités de cette technologie et surtout de son intérêt principal : apporter une productivité accrue sur le développement d’application Web RIA. J’espère vous en avoir convaincu !&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Les ressources complémentaires&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Tout d’abord, commençons par ce qui a été présenté au MIX09 à Las Vegas en mars dernier :&lt;/P&gt;
&lt;P&gt;- La session &lt;A href="http://videos.visitmix.com/MIX09/T40F" mce_href="http://videos.visitmix.com/MIX09/T40F"&gt;Building Amazing Business Centric Applications with Microsoft Silverlight 3&lt;/A&gt; animée par &lt;A href="http://blogs.msdn.com/brada" mce_href="http://blogs.msdn.com/brada"&gt;Brad Abrams&lt;/A&gt;. Si vous n’avez pas beaucoup de temps, il faut absolument au moins voir cette session! De plus, Brad a eu l’excellente idée d’accompagner sa session d’un billet très détaillé sur son blog permettant de refaire la même application &lt;A href="http://blogs.msdn.com/brada/archive/2009/03/17/mix09-building-amazing-business-applications-with-silverlight-3.aspx" mce_href="http://blogs.msdn.com/brada/archive/2009/03/17/mix09-building-amazing-business-applications-with-silverlight-3.aspx"&gt;ici&lt;/A&gt;. Un must !&lt;/P&gt;
&lt;P&gt;Vous pouvez notamment voir sa démo finale ici : &lt;A title=http://www.hanselman.com/abrams/#/Views/HomePage.xaml href="http://www.hanselman.com/abrams/#/Views/HomePage.xaml" mce_href="http://www.hanselman.com/abrams/#/Views/HomePage.xaml"&gt;http://www.hanselman.com/abrams/#/Views/HomePage.xaml&lt;/A&gt; offrant quelques fonctionnalités supplémentaires par rapport à ce que nous avons vu dans ces 4 billets comme une vue maitre/détail, un filtrage des éléments avec une AutocompleteTextbox et l’ajout d’un nouvel enregistrement à travers l’utilisation du contrôle DataForm nouveau également. &lt;BR&gt;&lt;BR&gt;- La session &lt;A href="http://videos.visitmix.com/MIX09/T41F" mce_href="http://videos.visitmix.com/MIX09/T41F"&gt;.NET RIA Services - Building Data-Driven Applications with Microsoft Silverlight and Microsoft ASP.NET&lt;/A&gt; animée par &lt;A href="http://www.nikhilk.net/" mce_href="http://www.nikhilk.net/"&gt;Nikhil Kothari&lt;/A&gt; bien complémentaire de la session de Brad. Vous verrez par exemple comment utiliser une source storage de Windows Azure. &lt;/P&gt;
&lt;P&gt;- Le document de référence actuel: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce&amp;amp;displaylang=en"&gt;Microsoft .NET RIA Services&amp;nbsp;July 2009 Preview&lt;/A&gt; où l’on aborde en détail toutes les possibilités offertes par .NET RIA Services non couvertes par ces 4 articles (et elles sont nombreuses!)&lt;/P&gt;
&lt;P&gt;Ensuite, voici une autre ressource que j’ai pris plaisir à lire :&lt;/P&gt;
&lt;P&gt;- &lt;A href="http://blogs.developpeur.org/tom/archive/2009/03/22/silverlight-d-velopper-des-applications-orient-es-m-tier-avec-silverlight-3-et-les-net-ria-services.aspx" mce_href="http://blogs.developpeur.org/tom/archive/2009/03/22/silverlight-d-velopper-des-applications-orient-es-m-tier-avec-silverlight-3-et-les-net-ria-services.aspx"&gt;Développer des applications orientées “métier” avec Silverlight 3 et les .NET RIA Services !&lt;/A&gt; sur le blog de Thomas Lebrun&lt;/P&gt;
&lt;P&gt;L’un de mes prochains posts tentera de vous expliquer en quoi .NET RIA Services et certaines nouveautés supplémentaires de Silverlight 3 comme le deep linking et le framework de navigation vont vous permettre de grandement faciliter le travail de référencement de votre application RIA par un moteur de recherche : ce que l’on appelle donc SEO ou Search Engine Optimization. &lt;/P&gt;
&lt;P&gt;A bientôt donc !&lt;/P&gt;
&lt;P&gt;David&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9652264" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="ASPNET" scheme="http://blogs.msdn.com/davrous/archive/tags/ASPNET/default.aspx" /><category term="Silverlight 3" scheme="http://blogs.msdn.com/davrous/archive/tags/Silverlight+3/default.aspx" /><category term=".NET RIA Services" scheme="http://blogs.msdn.com/davrous/archive/tags/.NET+RIA+Services/default.aspx" /></entry><entry><title>Comment développer des applications d’entreprises orientées données avec Silverlight 3 : introduction à .NET RIA Services (3/4)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-3-4.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-3-4.aspx</id><published>2009-05-29T00:50:00Z</published><updated>2009-05-29T00:50:00Z</updated><content type="html">&lt;FONT face=Calibri&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: #c00000; mso-ansi-language: FR" lang=FR&gt;&lt;FONT size=3&gt;Article mis à jour&amp;nbsp;: juillet 2009 pour la sortie de Silverlight 3 RTW et .NET RIA Services Juillet 2009&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Nous avons construit le squelette de notre application dans le &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-2-4.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-2-4.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;2ème billet&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;. Nous allons ici faire usage de nouveaux contrôles de Silverlight 3 et ajouter une règle de validation coté serveur pour observer comment elle se réplique coté client par la suite.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 12pt; mso-ansi-language: fr" lang=FR&gt;&lt;FONT face=Calibri&gt;Utilisation de nouveaux contrôles Silverlight 3 &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Reprenons notre application. Pour l’instant, vous allez me dire : « c’est bien gentil tout ça mais afficher tous les enregistrements sans pagination, c’est nul ! ». Bon, alors tentons de régler ce différent. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: #0070c0; mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Le contrôle DataSource &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Commencez par retirer les&amp;nbsp;quelques lignes de code que nous avions ajoutées dans le code behind : Home.xaml.cs. On va tenter de faire la même chose en pur XAML. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Ajoutez l’utilisation de ces namespaces à votre contrôle : &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;riaControls&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="clr-namespace:System.Windows.Controls;assembly=System.Windows.Ria.Controls"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;FONT color=#000000&gt; &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;riaData&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="clr-namespace:System.Windows.Data;assembly=System.Windows.Ria.Controls"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;domain&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;="clr-namespace:GestionClientsRIA.Web"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;Le dernier est l’équivalent du «&amp;nbsp;using&amp;nbsp;» fait en C#. Insérez ce bloc de XAML au début du StackPanel&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;riaControls&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;DomainDataSource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="source"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;QueryName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="GetCustomers"&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;AutoLoad&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="True"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;riaControls&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;DomainDataSource.DomainContext&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;domain&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;CustomersContext&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;riaControls&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;DomainDataSource.DomainContext&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;riaControls&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;DomainDataSource&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;On indique ainsi que l’on souhaite appeler la méthode GetCustomers depuis le domaine CustomersContext. Il nous reste maintenant à indiquer au contrôle grille où se trouve sa source de données&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;data&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;DataGrid&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; x&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="GrilleClients"&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; ItemsSource&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Data&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;,&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; ElementName&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;=source}" /&amp;gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;On utilise donc ici le binding entre éléments, autre nouveauté déjà abordée dans &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://blogs.msdn.com/davrous/archive/2009/03/20/mix09-silverlight-3-une-version-d-finitivement-majeure.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/03/20/mix09-silverlight-3-une-version-d-finitivement-majeure.aspx"&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;ce précédent billet&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;. Si on exécute l’ensemble, on a bien un résultat identique au code C# avec la méthode&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-ansi-language: FR; mso-fareast-language: EN-US; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-bidi-language: AR-SA" lang=FR&gt;Load(contexte.GetCustomersQuery()). &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Trions maintenant les données par ordre croissant selon le nom de l’entreprise à laquelle le client appartient. Pour cela, &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;ajoutez ce morceau de XAML juste avant la balise fermante &amp;lt;/riaControls :DomainDataSource&amp;gt; : &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;riaControls&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;DomainDataSource.SortDescriptors&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;riaData&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;SortDescriptor&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; PropertyPath&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="CompanyName"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Direction&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="Ascending" /&amp;gt; &lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&lt;BR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;riaControls&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;DomainDataSource.SortDescriptors&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&amp;gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Désormais les enregistrements sont bien triés par ordre alphabétique croissant selon le nom de l’entreprise. Mais je n’ai toujours pas répondu au besoin de pagination. J’y arrive, j’y arrive… &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: #0070c0; mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Le contrôle DataPager &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Dans le StackPanel où se trouve le contrôle DataGrid, ajoutez ce XAML en dessous de la grille de données : &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;data&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;DataPager&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; PageSize&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="10"&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Source&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Data&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;,&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; ElementName&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;=source}" /&amp;gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;On indique ici d’afficher les enregistrements 10 par 10. Relancez l’ensemble :&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage14 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3573456865/" mce_href="http://www.flickr.com/photos/35281337@N05/3573456865/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage14 src="http://farm3.static.flickr.com/2167/3573456865_430042329b_o.jpg" width=676 height=326 mce_src="http://farm3.static.flickr.com/2167/3573456865_430042329b_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Nous avons donc bien la pagination en marche. Par contre, nous chargeons toujours l’ensemble des enregistrements malgré le fait de les visualiser par lot de 10. Il serait donc peut-être plus intéressant de charger les données au fur et à mesure que l’on avance dans la pagination. Pour cela, rien de plus simple ajoutez l’attribut suivant : &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;LoadSize&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;="20" &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;à la source après l’attribut&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;AutoLoad&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;="True"&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; par exemple. Bah c’est tout ! Désormais, toutes les 2 pages, un lot de 20 enregistrements supplémentaires seront chargés en mémoire en asynchrone et en tâche de fond sans que vous n’ayez rien eu à faire. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: #0070c0; mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Le contrôle ActivityControl &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;L’inconvénient de ces chargements asynchrones est que l’utilisateur ne comprends par forcément ce qu’il se passe lorsqu’il lance une action en cliquant et que cela met quelques millisecondes à s’afficher. Il faut donc le faire patienter et lui indiquer qu’une opération est en cours. &lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;S&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;Pour cela, récupérez le fichier attaché à ce billet «&amp;nbsp;ActivityControl.zip&amp;nbsp;» contenant l’assembly «&amp;nbsp;ActivityControl.dll&amp;nbsp;». Ajoutez ensuite une référence à cette assembly dans votre projet Silverlight. Ce contrôle sera probablement directement intégré dans la version finale de .NET RIA Services.&lt;/SPAN&gt;&lt;/S&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-ansi-language: FR; mso-fareast-language: EN-US; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-bidi-language: AR-SA" lang=FR&gt;Ce contrôle est maintenant directement présents dans les références d’un projet de type Business Application. Il ne reste donc plus qu’à ajouter cet espace de nom à votre contrôle&amp;nbsp;:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;activity&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="clr-namespace:System.Windows.Controls;assembly=ActivityControl" &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Puis englobez le StackPanel contenant la grille et le DataPager entre ces 2 balises XAML : &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;activity&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Activity&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; IsActive&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; IsBusy&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;,&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; ElementName&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;=source}"&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; VerticalAlignment&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="Top"&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; HorizontalAlignment&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="Left"&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;activity&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Activity&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Désormais, grâce à cela, lorsque l’on arrive sur la 3&lt;SUP&gt;ème&lt;/SUP&gt; page le chargement des 20 prochains enregistrements est fait pendant qu’une animation « Loading » se lance :&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage15 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3573456989/" mce_href="http://www.flickr.com/photos/35281337@N05/3573456989/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage15 src="http://farm4.static.flickr.com/3367/3573456989_ae67f4c190_o.jpg" width=703 height=394 mce_src="http://farm4.static.flickr.com/3367/3573456989_ae67f4c190_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: #0070c0; mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Groupons les données &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Si l’on souhaite grouper les enregistrements par pays par exemple, c’est à nouveau d’une simplicité déconcertante. En dessous du tri par « CompanyName » de notre DomainDataSource, ajoutez ce XAML : &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;riaControls&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;DomainDataSource.GroupDescriptors&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;riaData&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;GroupDescriptor&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; PropertyPath&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="Country" /&amp;gt; &lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&lt;BR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;riaControls&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;DomainDataSource.GroupDescriptors&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&amp;gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=2 face=Arial&gt;&lt;BR&gt;&lt;/FONT&gt;Et voici le résultat :&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;A title="RIAImage16 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3573457141/" mce_href="http://www.flickr.com/photos/35281337@N05/3573457141/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage16 src="http://farm4.static.flickr.com/3605/3573457141_f2fafb196c_o.jpg" width=723 height=431 mce_src="http://farm4.static.flickr.com/3605/3573457141_f2fafb196c_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SHAPE style="WIDTH: 375.6pt; HEIGHT: 223.8pt; VISIBILITY: visible; mso-wrap-style: square" id=Picture_x0020_5 o:spid="_x0000_i1029" type="#_x0000_t75"&gt;&lt;IMAGEDATA mce_src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image005.png" src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image005.png" o:title="o:title"&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/IMAGEDATA&gt;&lt;/SHAPE&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt; mso-ansi-language: fr" lang=FR&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;On peut même fermer les nœuds pour une meilleure visibilité (comme ici Austria). &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: #0070c0; mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Gestion de la sauvegarde &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Ajoutons d’abord un bouton pour laisser l’utilisateur sauvegarder ses changements. Pour cela, insérer le bout de XAML dans le StackPanel au dessus de la grille : &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;Button&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt; x&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;Name&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;="BoutonSauvegarde"&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt; Content&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;="Sauvegarder les changements"&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt; Click&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;="BoutonSauvegarde_Click" /&amp;gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Maintenant, il nous faut lancer l’opération de sauvegarde avec ce code C# : &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; BoutonSauvegarde_Click(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, System.Windows.&lt;SPAN style="COLOR: #2b91af"&gt;RoutedEventArgs&lt;/SPAN&gt; e) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;{ &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (source.HasChanges)&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{ &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;source.SubmitChanges();&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;MessageBox&lt;/SPAN&gt;.Show(&lt;SPAN style="COLOR: #a31515"&gt;"Aucun changement detecté."&lt;/SPAN&gt;);&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;} &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT face="Courier New"&gt;&lt;BR&gt;&lt;/FONT&gt;Notre objet contenant les enregistrements en mémoire maintient en effet une liste des modifications effectuées (ajout, suppression ou modification). On teste donc le booléen &lt;I style="mso-bidi-font-style: normal"&gt;HasChanges&lt;/I&gt; pour savoir si quelque chose a été changé par l’utilisateur et si c’est le cas on voit les changements au serveur Web via la commande &lt;I style="mso-bidi-font-style: normal"&gt;SubmitChanges()&lt;/I&gt; pour que ce dernier s’occupe à son tour de mettre à jour la base de données.&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; COLOR: #0070c0; FONT-SIZE: 9pt; mso-ansi-language: fr" lang=FR&gt; &lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: #0070c0; mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Utilisation d’une Child Window &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Si aucun changement n’a été détecté et que l’utilisateur clique sur le bouton de sauvegarde, une fenêtre externe à Silverlight de style popup JavaScript est levée :&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage17 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3574263424/" mce_href="http://www.flickr.com/photos/35281337@N05/3574263424/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage17 src="http://farm4.static.flickr.com/3633/3574263424_ffd0ed21ff_o.jpg" width=743 height=475 mce_src="http://farm4.static.flickr.com/3633/3574263424_ffd0ed21ff_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: #0070c0; mso-no-proof: yes"&gt;&lt;SHAPE style="WIDTH: 336pt; HEIGHT: 214.2pt; VISIBILITY: visible; mso-wrap-style: square" id=Picture_x0020_1 o:spid="_x0000_i1028" type="#_x0000_t75"&gt;&lt;IMAGEDATA mce_src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image007.png" src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image007.png" o:title="o:title"&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/IMAGEDATA&gt;&lt;/SHAPE&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: #0070c0; mso-ansi-language: fr" lang=FR&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Ce n’est pas optimal en termes d’expérience utilisateur. On va utiliser une autre nouveauté de Silverlight 3 pour améliorer tout cela. Ajoutez un nouvel élément à votre projet Silverlight de type « Silverlight Child Window » et nommez le « InfoWindow.xaml » :&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage18 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3573457415/" mce_href="http://www.flickr.com/photos/35281337@N05/3573457415/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage18 src="http://farm4.static.flickr.com/3386/3573457415_80b0bd6c94_o.jpg" width=593 height=379 mce_src="http://farm4.static.flickr.com/3386/3573457415_80b0bd6c94_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Remplacez le XAML proposé par celui-ci : &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;controls&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;ChildWindow&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Class&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="GestionClientsRIA.InfoWindow"&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;A href="http://schemas.microsoft.com/winfx/2006/xaml/presentation" mce_href="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/A&gt;&lt;/SPAN&gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;x&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;A href="http://schemas.microsoft.com/winfx/2006/xaml" mce_href="http://schemas.microsoft.com/winfx/2006/xaml"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/A&gt;&lt;/SPAN&gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;controls&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Width&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="200"&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt; Height&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="100"&lt;/SPAN&gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Title&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="Information utilisateur"&amp;gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="LayoutRoot"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="2"&amp;gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Grid.RowDefinitions&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;RowDefinition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; /&amp;gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;RowDefinition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Height&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="Auto" /&amp;gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Grid.RowDefinitions&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="InfoToDisplay"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Grid.Row&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="0" /&amp;gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Button&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="OKButton"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Content&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="OK"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Click&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="OKButton_Click"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Width&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="75"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Height&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="23"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; HorizontalAlignment&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="Right"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="0,12,79,0"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Grid.Row&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="1" /&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;controls&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;ChildWindow&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&amp;gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=2 face=Arial&gt;&lt;BR&gt;&lt;/FONT&gt;Revenons maintenant dans notre vue HomePage.xaml.cs et utilisez ce code en remplacement du précédent : &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt; &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; nombreEntiteesModifiees = 0; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&lt;FONT color=#000000 size=2 face=Arial&gt;&lt;BR&gt;&lt;/FONT&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; BoutonSauvegarde_Click(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, System.Windows.&lt;SPAN style="COLOR: #2b91af"&gt;RoutedEventArgs&lt;/SPAN&gt; e) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (source.HasChanges)&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;nombreEntiteesModifiees = source.DomainContext.Entities.GetChanges().ModifiedEntities.Count();&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;source.SubmitChanges();&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;InfoWindow&lt;/SPAN&gt; infoWindow = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;InfoWindow&lt;/SPAN&gt;();&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;infoWindow.InfoToDisplay.Text = &lt;SPAN style="COLOR: #a31515"&gt;"Aucun changement détecté."&lt;/SPAN&gt;;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;infoWindow.Show();&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;} &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;}&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; source_SubmittedChanges(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, SubmittedChangesEventArgs e) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;InfoWindow&lt;/SPAN&gt; infoWindow = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;InfoWindow&lt;/SPAN&gt;();&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;infoWindow.InfoToDisplay.Text = nombreEntiteesModifiees + &lt;SPAN style="COLOR: #a31515"&gt;" modifications effectuées"&lt;/SPAN&gt;;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;infoWindow.Show();&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;nombreEntiteesModifiees = 0; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=2 face=Arial&gt;&lt;BR&gt;&lt;/FONT&gt;Et ajoutez ce « using » :&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;using&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; System.Windows.Ria.Data; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Enfin ajoutez l’abonnement à l’évènement SubmittedChanges au niveau de la source dans le XAML&amp;nbsp;: &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;SubmittedChanges&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;="source_SubmittedChanges" &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;On a désormais une expérience utilisateur plus « intégrée » :&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage19 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3574263726/" mce_href="http://www.flickr.com/photos/35281337@N05/3574263726/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage19 src="http://farm4.static.flickr.com/3320/3574263726_fd5ed24e7b_o.jpg" width=717 height=446 mce_src="http://farm4.static.flickr.com/3320/3574263726_fd5ed24e7b_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; COLOR: #0070c0; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SHAPE style="WIDTH: 337.2pt; HEIGHT: 209.4pt; VISIBILITY: visible; mso-wrap-style: square" id=Picture_x0020_7 o:spid="_x0000_i1026" type="#_x0000_t75"&gt;&lt;IMAGEDATA mce_src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image011.png" src="file:///C:\Users\davrous\AppData\Local\Temp\msohtmlclip1\01\clip_image011.png" o:title="o:title"&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/IMAGEDATA&gt;&lt;/SHAPE&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; COLOR: #0070c0; FONT-SIZE: 9pt; mso-ansi-language: fr" lang=FR&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;Et on a surtout la main sur le design de la fenêtre affichée. J’aurais pu y mettre de la vidéo, une belle image, etc.&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; COLOR: #0070c0; FONT-SIZE: 9pt; mso-ansi-language: fr" lang=FR&gt; &lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 12pt; mso-ansi-language: fr" lang=FR&gt;&lt;FONT face=Calibri&gt;Mise en place d’une règle de validation&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Maintenant que nous laissons l’utilisateur sauvegarder les données, il serait peut-être bon d’ajouter un peu de validation de ses saisies. Retournons dans l’application ASP.NET et plus précisément dans le fichier « CustomersService.metadata.cs » qui fut généré automatiquement grâce à la case « Generate associated classes for metadata ». &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Rendez-vous sur le champ Country (Pays). Nous allons spécifier une expression régulière sur ce champ indiquant que les valeurs autorisées ne peuvent qu’être des caractères alphabétiques commençant par une majuscule. Cela nous donne le résultat suivant : &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;RegularExpression&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"[A-Z][A-Za-z]*"&lt;/SPAN&gt;, ErrorMessage=&lt;SPAN style="COLOR: #a31515"&gt;"Les caractères non alphabétiques ne sont pas autorisés"&lt;/SPAN&gt;)] &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;public&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; Country; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=2 face=Arial&gt;&lt;BR&gt;&lt;/FONT&gt;On indique également le message d’erreur a affiché si l’utilisateur s’égard à vouloir insérer des caractères étranges pour saisir le nom du pays. Compilez l’ensemble et testez la solution.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage20 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3574264030/" mce_href="http://www.flickr.com/photos/35281337@N05/3574264030/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage20 src="http://farm4.static.flickr.com/3297/3574264030_a918601821_o.jpg" width=747 height=445 mce_src="http://farm4.static.flickr.com/3297/3574264030_a918601821_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Si vous tentez alors de modifier un nom de pays en ajoutant un chiffre, le message d’erreur de validation est automatiquement levé. Aucun aller/retour serveur n’a été nécessaire pour cela, la logique est bien embarquée coté client Silverlight. Il suffit d’aller le voir dans le proxy client généré : &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;DataMember&lt;/SPAN&gt;()]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;RegularExpression&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"[A-Z][A-Za-z]*"&lt;/SPAN&gt;, ErrorMessage=&lt;SPAN style="COLOR: #a31515"&gt;"Les caractères non alphabétiques ne sont pas autorisés"&lt;/SPAN&gt;)]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;StringLength&lt;/SPAN&gt;(15)]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; Country&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;get&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;._country;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;set&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; ((&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;._country != &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.ValidateProperty(&lt;SPAN style="COLOR: #a31515"&gt;"Country"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.OnCountryChanging(&lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.RaiseDataMemberChanging(&lt;SPAN style="COLOR: #a31515"&gt;"Country"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;._country = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.RaiseDataMemberChanged(&lt;SPAN style="COLOR: #a31515"&gt;"Country"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.OnCountryChanged();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;&lt;FONT size=2 face=Arial&gt;&lt;BR&gt;&lt;/FONT&gt;Un ensemble d’attributs peuvent ainsi être spécifiés sur les champs de vos objets métiers couvrant les scénarios les plus communs. Vous pouvez également implémenter votre propre logique de validation avec une classe de type « Shared » qui sera automatiquement répliquée coté client.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Concluons et observons le résultat final en action en vidéo dans le &lt;A href="http://blogs.msdn.com/davrous/archive/2009/05/29/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-4-4.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/05/29/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-4-4.aspx"&gt;4ème et dernier billet&lt;/A&gt;.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9649228" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="ASPNET" scheme="http://blogs.msdn.com/davrous/archive/tags/ASPNET/default.aspx" /><category term="Silverlight 3" scheme="http://blogs.msdn.com/davrous/archive/tags/Silverlight+3/default.aspx" /><category term=".NET RIA Services" scheme="http://blogs.msdn.com/davrous/archive/tags/.NET+RIA+Services/default.aspx" /></entry><entry><title>Comment développer des applications d’entreprises orientées données avec Silverlight 3 : introduction à .NET RIA Services (2/4)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-2-4.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-2-4.aspx</id><published>2009-05-29T00:14:00Z</published><updated>2009-05-29T00:14:00Z</updated><content type="html">&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #c00000; FONT-SIZE: 11pt; mso-ansi-language: FR; mso-fareast-language: EN-US; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-bidi-language: AR-SA" lang=FR&gt;&lt;STRONG&gt;Article mis à jour&amp;nbsp;: juillet 2009 pour la sortie de Silverlight 3 RTW et .NET RIA Services Juillet 2009&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;J’espère vous avoir donné l’eau à la bouche avec la précédente vidéo &lt;A href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-1-4.aspx"&gt;du 1er billet&lt;/A&gt;. Nous allons maintenant créer une petite application de bout en bout et introduire quelques concepts principaux au fur et à mesure. Pour cela, nous allons utiliser la célèbre base de données d’exemple NorthWind. Vous pouvez la télécharger &lt;A href="http://www.microsoft.com/Downloads/details.aspx?FamilyID=06616212-0356-46a0-8da2-eebc53a68034&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/Downloads/details.aspx?FamilyID=06616212-0356-46a0-8da2-eebc53a68034&amp;amp;displaylang=en"&gt;ici&lt;/A&gt;. Vous pouvez également voir le résultat final en action dans la vidéo contenue dans le dernier billet.&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;Note : les captures d'écrans ont été réalisés avec le thème par défaut d'une application "Business Application" avec Silverlight 3 Beta et .NET RIA Services Mai 2009. Vous n'aurez pas le même template d'affichage avec Silverlight 3 RTW et .NET RIA Services Juillet 2009 mais j'ai bien mis&amp;nbsp;à jour l'ensemble des 4 articles pour la RTW. &lt;/P&gt;
&lt;P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 12pt; mso-ansi-language: fr" lang=FR&gt;&lt;FONT face=Calibri&gt;Création d’une petite application étape par étape &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;I&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: #0070c0; mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;STRONG&gt;Création du projet Silverlight 3 &lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;&lt;/I&gt;Lancez Visual Studio 2008 et créer un nouveau projet Silverlight 3 de type « &lt;STRONG&gt;Silverlight Business Application&lt;/STRONG&gt; » cette fois-ci et nommez le « GestionClientsRIA ». 
&lt;P&gt;&lt;A title="RIAImage1 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3574261304/" mce_href="http://www.flickr.com/photos/35281337@N05/3574261304/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; WIDTH: 533px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 442px; BORDER-LEFT-WIDTH: 0px" title=RIAImage1 border=0 alt=RIAImage1 src="http://farm3.static.flickr.com/2471/3716783407_22f2b19d13_o.jpg" width=533 height=442 mce_src="http://farm3.static.flickr.com/2471/3716783407_22f2b19d13_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Une fois le projet créé, si vous vous rendez dans les propriétés du projet Silverlight, vous noterez l’apparition d’une nouvelle option :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3573455193/" mce_href="http://www.flickr.com/photos/35281337@N05/3573455193/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; WIDTH: 417px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 58px; BORDER-LEFT-WIDTH: 0px" title=3573455193 border=0 alt=3573455193 src="http://farm3.static.flickr.com/2601/3716783289_da7cf167c3_o.jpg" width=417 height=58 mce_src="http://farm3.static.flickr.com/2601/3716783289_da7cf167c3_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Cela vous permettra de lier le projet ASP.NET au projet Silverlight 3. C’est la fameuse glue dont je vous parlais plus haut. Vous allez mieux comprendre au fur et à mesure. On peut éventuellement établir cette liaison plus tard sur un projet existant par exemple.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;I&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #0070c0; FONT-SIZE: 11pt; mso-ansi-language: fr; mso-fareast-language: en-us; mso-fareast-font-family: calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-bidi-language: ar-sa" lang=FR&gt;Découverte de l’application par défaut &lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Vous pouvez dors et déjà lancer l’application Silverlight 3 pour tester ce que l’on vous propose « Out of the box » comme disent les Américains :&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage3 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3574261570/" mce_href="http://www.flickr.com/photos/35281337@N05/3574261570/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage3 src="http://farm3.static.flickr.com/2445/3574261570_289cd0308d_o.jpg" width=659 height=511 mce_src="http://farm3.static.flickr.com/2445/3574261570_289cd0308d_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Note : dans la version Silverlight 3 RTW, vous aurez plutôt un écran ressemblant à cela:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 500px; HEIGHT: 429px" title="Template Business Application SL3 RTW" alt="Template Business Application SL3 RTW" src="http://farm3.static.flickr.com/2631/3717596394_d028cdeb7d.jpg" width=500 height=429 mce_src="http://farm3.static.flickr.com/2631/3717596394_d028cdeb7d.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Essayez par exemple de cliquer sur « about » et de revenir ensuite sur « home ». Vous verrez alors 2 choses intéressantes :&lt;/P&gt;
&lt;P&gt;1 – les URLs changent derrière le symbole # pour viser la bonne vue : &lt;A href="http://localhost:port/BusinessApplicationTestPage.aspx#/Home" mce_href="http://localhost:port/BusinessApplicationTestPage.aspx#/Views/HomePage.xaml"&gt;http://localhost:port/BusinessApplicationTestPage.aspx#/Home&lt;/A&gt; pour la page d’accueil par exemple et &lt;A href="http://localhost:port/BusinessApplicationTestPage.aspx#/About" mce_href="http://localhost:port/BusinessApplicationTestPage.aspx#/Views/AboutPage.xaml"&gt;http://localhost:port/BusinessApplicationTestPage.aspx#/About&lt;/A&gt; pour la page « A propos ». &lt;BR&gt;2 – Cela permet alors de naviguer dans votre application Silverlight 3 avec la gestion de l’historique du navigateur :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3573455503/" mce_href="http://www.flickr.com/photos/35281337@N05/3573455503/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3573455503 src="http://static.flickr.com/3646/3573455503_72fd339228.jpg" width=245 height=228 mce_src="http://static.flickr.com/3646/3573455503_72fd339228.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Le tout sans avoir encore rien codé. Sympa non ? :) Silverlight 3 embarque en effet un framework de navigation. Vous pouvez alors modifier les URLs pour masquer le nom des vues et avoir des choses plus explicites comme &lt;A href="http://localhost:port/votrepage.aspx#Accueil" mce_href="http://localhost:port/votrepage.aspx#Accueil"&gt;http://localhost:port/votrepage.aspx#Accueil&lt;/A&gt; par exemple. Mais ne nous attarderons pas sur cette notion ici, j’y reviendrais probablement dans un futur billet.&lt;/P&gt;
&lt;P&gt;Continuons de jouer avec l’application fournie par défaut et cliquez sur « login » :&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage5 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3573455621/" mce_href="http://www.flickr.com/photos/35281337@N05/3573455621/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage5 src="http://farm4.static.flickr.com/3354/3573455621_5d0d572a54_o.jpg" width=603 height=330 mce_src="http://farm4.static.flickr.com/3354/3573455621_5d0d572a54_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Depuis la mise à jour de Mai 2009 de .NET RIA Services, on vous propose une gestion intégrée de l’authentification des utilisateurs. Cliquez sur « Register now » et créez-vous un utilisateur.&lt;/P&gt;
&lt;P&gt;Vous notez alors déjà certaines fonctionnalités sympathiques :&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage6 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3574261928/" mce_href="http://www.flickr.com/photos/35281337@N05/3574261928/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage6 src="http://farm3.static.flickr.com/2455/3574261928_9de913a02f_o.jpg" width=659 height=272 mce_src="http://farm3.static.flickr.com/2455/3574261928_9de913a02f_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;En effet, une validation coté client Silverlight est proposée grâce à .NET RIA Services après avoir défini la règle coté serveur. L’expérience utilisateur est également relativement agréable. Nous allons voir comment mettre en place cette validation un peu plus loin.&lt;/P&gt;&lt;I&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: #0070c0; mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;STRONG&gt;Gestion de la couche d’accès aux données &lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;&lt;/I&gt;Récupérez la base de données NorthWind et glissez/déplacez le fichier NORTHWND.MDF dans le dossier « App_Data » de votre projet ASP.NET. 
&lt;P&gt;&lt;A title="RIAImage7 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3574261996/" mce_href="http://www.flickr.com/photos/35281337@N05/3574261996/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage7 src="http://farm4.static.flickr.com/3597/3574261996_d731430c23_o.jpg" width=241 height=159 mce_src="http://farm4.static.flickr.com/3597/3574261996_d731430c23_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Ajoutez un nouvel élément à votre projet ASP.NET de type ADO.NET Entity Data Model et nommez le CustomersModel&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage8 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3574262170/" mce_href="http://www.flickr.com/photos/35281337@N05/3574262170/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage8 src="http://farm4.static.flickr.com/3586/3574262170_6b9d6c3f6a_o.jpg" width=576 height=368 mce_src="http://farm4.static.flickr.com/3586/3574262170_6b9d6c3f6a_o.jpg"&gt;&lt;/A&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Choisissez « Generate from database » et faites « Next » jusqu’à cet écran :&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage9 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3573456161/" mce_href="http://www.flickr.com/photos/35281337@N05/3573456161/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage9 src="http://farm4.static.flickr.com/3661/3573456161_7e56242837_o.jpg" width=549 height=559 mce_src="http://farm4.static.flickr.com/3661/3573456161_7e56242837_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Cliquez sur la table « Customers » et nommez le modèle « CustomersModel » puis « Finish ».&lt;/P&gt;
&lt;P&gt;Un modèle Entity Framework sera donc généré automatiquement pour vous. Considérons qu’il représente votre couche d’accès aux données. Le code généré automatiquement se trouve dans « CustomersModel.Designer.cs ». Avant tout chose, &lt;B&gt;compilez votre solution&lt;/B&gt;. Cela est nécessaire pour que le modèle Entity soit visible dans l’étape suivante.&lt;/P&gt;
&lt;P&gt;Il faut désormais rendre accessible cette couche d’accès aux données au client Silverlight qui se trouve de l’autre coté du tuyau ou de l’autre coté du nuage. &lt;/P&gt;
&lt;P&gt;Pour cela, ajoutez un élément de type « Domain Service Class » à votre projet ASP.NET et nommez le CustomersService.cs&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage10 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3573456315/" mce_href="http://www.flickr.com/photos/35281337@N05/3573456315/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage10 src="http://farm4.static.flickr.com/3394/3573456315_0f6e4aedf5_o.jpg" width=527 height=337 mce_src="http://farm4.static.flickr.com/3394/3573456315_0f6e4aedf5_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Cliquez sur « Add », vous arrivez sur cette fenêtre :&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage11 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3573456457/" mce_href="http://www.flickr.com/photos/35281337@N05/3573456457/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage11 src="http://farm3.static.flickr.com/2438/3573456457_c0eb4ac6e4_o.jpg" width=422 height=432 mce_src="http://farm3.static.flickr.com/2438/3573456457_c0eb4ac6e4_o.jpg"&gt;&lt;/A&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Cochez toutes les cases. Pour faire simple, avant de rentrer un peu plus dans le détail :&lt;/P&gt;
&lt;P&gt;- « &lt;B&gt;Enable Client access&lt;/B&gt; » permet d’exposer votre logique métier vers le client Silverlight &lt;BR&gt;- « &lt;B&gt;Enable editing&lt;/B&gt; » va permettre de générer automatiquement les méthodes pour mettre à jour, ajouter, supprimer des enregistrements. &lt;BR&gt;- « &lt;B&gt;Generate associated classes for metadata&lt;/B&gt; » va nous permettre de spécifier des règles de validation coté serveur sur des champs via des attributs. Ces règles seront alors automatiquement répliquées et appliquées coté client comme on a pu le voir avec le contrôle de création d’un utilisateur plus haut. Le fait de cocher cette case va nous prémâcher le travail en générant à nouveau du code pour nous mais on aurait tout à fait pu le faire à la main plus tard.&lt;/P&gt;
&lt;P&gt;Le service qui sera exposé au client se trouve alors dans le fichier « CustomersService.cs ». 4 méthodes ont été générées pour nous :&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IQueryable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Customers&lt;/SPAN&gt;&amp;gt; GetCustomers() &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; InsertCustomers(&lt;SPAN style="COLOR: #2b91af"&gt;Customers&lt;/SPAN&gt; customers) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; UpdateCustomers(&lt;SPAN style="COLOR: #2b91af"&gt;Customers&lt;/SPAN&gt; currentCustomers, &lt;SPAN style="COLOR: #2b91af"&gt;Customers&lt;/SPAN&gt; originalCustomers) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; DeleteCustomers(&lt;SPAN style="COLOR: #2b91af"&gt;Customers&lt;/SPAN&gt; customers) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Permettant respectivement de récupérer la liste des clients, insérer un nouveau client, mettre à jour et supprimer un client dans la base. Si nous n’avions pas coché la case « Enable editing », nous n’aurions eu que la 1&lt;SUP&gt;ère&lt;/SUP&gt; méthode. D’ailleurs notez que cette dernière retourne un IQueryable. Nous allons donc pouvoir lancer une requête LINQ coté client pour ne récupérer que les enregistrements qui nous intéressent. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Compilez la solution à nouveau&lt;/B&gt;. C’est obligatoire pour que le client Silverlight puisse voir ce service. &lt;/P&gt;&lt;B&gt;&lt;I&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: #0070c0; mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Utilisation du service .NET RIA coté client &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/I&gt;&lt;/B&gt;
&lt;P&gt;Rendez-vous dans le projet Silverlight et dans la vue Home.xaml. &lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Identifiez le contenu du StackPanel et retirer le. Glissez/déposez le contrôle DataGrid dedans et nommez la grille «&amp;nbsp;GrilleClients&amp;nbsp;». Voici le XAML correspondant au container Grid&amp;nbsp;:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="LayoutRoot"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;ScrollViewer&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="PageScrollViewer"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Style&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;StaticResource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; PageScrollViewerStyle&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;}" &amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;StackPanel&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="ContentStackPanel"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Style&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;StaticResource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; ContentStackPanelStyle&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;}"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="HeaderText"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Style&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;StaticResource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; HeaderTextStyle&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;FONT color=#000000&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: red"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Text&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="Grille Clients"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;data&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;DataGrid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;="GrilleClients"&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;data&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;DataGrid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;StackPanel&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;ScrollViewer&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;Rendez-vous dans le code behind dans Home.xaml.cs et ajoutez ce « using » :&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;using&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt; GestionClientsRIA.Web; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Surprenant n’est ce pas ? On demande à utiliser du code défini sur le serveur d’une certaine manière. Déclarez cette variable membre :&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;CustomersContext&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt; contexte = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;CustomersContext&lt;/SPAN&gt;();&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt; mso-ansi-language: fr" lang=FR&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Cela correspond à la projection coté client de notre service CustomersService présent sur le serveur Web. Ajoutez alors ce code dans le constructeur en dessous de InitializeComponent() :&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// On définit la source de données pour le binding&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;FONT color=#000000&gt;GrilleClients.ItemsSource = contexte.Customers;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// On charge les données depuis le serveur en asynchrone&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes; mso-fareast-language: EN-US; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-language: AR-SA" lang=FR&gt;&lt;FONT color=#000000&gt;contexte.Load(contexte.GetCustomersQuery());&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;On précise l’entité à associer à la grille (on aurait pu en effet choisir plusieurs tables lors de la conception de notre modèle avec Entity Framework) et on lance le téléchargement des données. Le téléchargement se fait ensuite automatiquement de manière asynchrone et de manière transparente. En effet, vous ne voyez ici aucun abonnement au moindre évènement et la moindre utilisation de délégué. Cette complexité est par défaut masquée. Par contre, ne vous étonnez pas si vous ne voyez pas les données apparaître de suite lorsque vous application Silverlight commence à s’afficher. Il faut en effet attendre que la 2&lt;SUP&gt;ème&lt;/SUP&gt; phase du chargement asynchrone soit déclenchée pour que les données soit injectées dans la grille. &lt;/P&gt;
&lt;P&gt;Allez, lançons l’ensemble pour voir à quoi cela ressemble !&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage12 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3573456575/" mce_href="http://www.flickr.com/photos/35281337@N05/3573456575/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage12 src="http://farm4.static.flickr.com/3353/3573456575_b59b649dc8_o.jpg" width=759 height=380 mce_src="http://farm4.static.flickr.com/3353/3573456575_b59b649dc8_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Et voilà, j’ai déjà l’ensemble des clients de la base dans mon contrôle DataGrid en ayant écrit que 3 lignes de code. Pas mal non ? A noter que vous pouvez déjà cliquer sur les colonnes pour effectuer un tri sur celles-ci et même changer une valeur en cliquant dans l’une des cases. Cependant, la modification ne sera effectuée qu’en mémoire coté client vu que nous n’avons pas encore implémenté la sauvegarde vers la base.&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #0070c0; FONT-SIZE: 11pt; mso-ansi-language: fr; mso-fareast-language: en-us; mso-fareast-font-family: calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-bidi-language: ar-sa" lang=FR&gt;&lt;STRONG&gt;&lt;EM&gt;Utilisons un peu de LINQ&lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Vous noterez que la méthode Load() prend en paramètre une requête.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Pour l’instant, nous avons utilisé une requête retournant l’ensemble des clients. Filtrons un peu plus les données. Pour cela, commencez par ajouter ce using&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;using&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; System.Windows.Ria.Data;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt; mso-ansi-language: FR" lang=FR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt; mso-ansi-language: fr" lang=FR&gt;&amp;nbsp;&lt;/SPAN&gt;Et chargez désormais les données à l’aide de ces lignes de code :&lt;/P&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: en-us; mso-no-proof: yes; mso-fareast-language: en-us; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-bidi-language: ar-sa"&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;//Création du filtre à envoyer au serveur&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;var&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; query = &lt;SPAN style="COLOR: blue"&gt;from&lt;/SPAN&gt; clients &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; contexte.GetCustomersQuery()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;where&lt;/SPAN&gt; clients.Country.Equals(&lt;SPAN style="COLOR: #a31515"&gt;"France"&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;select&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt; clients;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;// On charge les données depuis le serveur en asynchrone&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: FR; mso-no-proof: yes" lang=FR&gt;contexte.Load(query);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: en-us; mso-no-proof: yes; mso-fareast-language: en-us; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-bidi-language: ar-sa"&gt;&lt;/SPAN&gt;On indique donc que l’on souhaite récupérer uniquement les clients habitant en France. Il est très important de comprendre que cette requête LINQ n’est pas exécutée coté client après avoir récupéré l’ensemble des enregistrements depuis le serveur. Cela n’aurait aucun intérêt et engorgerait le réseau inutilement. Non, cette requête LINQ est sérialisée et envoyée au serveur Web qui effectue lui-même la requête au près du serveur de base de données et le résultat est alors renvoyé du serveur Web vers le client Silverlight ! La plomberie a bien été entièrement masquée et on a traversé les différents tiers sans aucune difficulté.&lt;/P&gt;
&lt;P&gt;On peut également filtrer en amont sur le service exposé au client Silverlight. Pour cela, rendez-vous dans « CustomersService.cs » du projet ASP.NET et ajoutez cette méthode :&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IQueryable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Customers&lt;/SPAN&gt;&amp;gt; &lt;B style="mso-bidi-font-weight: normal"&gt;Get&lt;/B&gt;CustomersByCountry(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; country) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;var&lt;/SPAN&gt; customersInThisCountry =&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;from&lt;/SPAN&gt; c &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.Context.Customers&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;where&lt;/SPAN&gt; c.Country == country&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;select&lt;/SPAN&gt; c;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; customersInThisCountry; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;}&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Compilez votre solution. Retournez dans le code du client Silverlight et vous verrez qu’une nouvelle méthode nommée &lt;B style="mso-bidi-font-weight: normal"&gt;Get&lt;/B&gt;CustomersByCountryQuery() est apparue. Remplacez l’appel à GetCustomersQuery() par cette ligne de code&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;contexte.Load(contexte.GetCustomersByCountryQuery(&lt;SPAN style="COLOR: #a31515"&gt;"France"&lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Relancez l’ensemble : on obtient bien le même résultat sauf que cette fois-ci, on expose directement une collection limitée d’enregistrements depuis notre serveur Web. Nous avons donc la liberté de filtrer les informations remontées à chaque tiers. &lt;/P&gt;&lt;I&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: #0070c0; mso-ansi-language: fr" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;STRONG&gt;Explication d’une partie de la magie cachée derrière &lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;&lt;/I&gt;J’imagine votre curiosité sur l’implémentation sous-jacente de cette magie. Faisons un parallèle avec des notions déjà connues, prenons l’exemple d’un service Web. Ce dernier expose ses méthodes disponibles à travers un contrat en WSDL et la sérialisation des informations envoyées entre le service et le client consommant les méthodes se fait en SOAP/XML. On peut donc ensuite imaginer écrire un client consommant ce service en écrivant du code soi-même envoyant des requêtes HTTP vers le service Web, gérant soi-même l’encapsulation en XML/SOAP des données, etc. C’est ce que l’on appelle écrire un proxy client. Mais que c’est fastidieux de faire tout cela à la main ! Heureusement, Visual Studio nous propose depuis longtemps de faire simplement un « Add Web Reference » et on lui donne l’URL où se trouve exposé le WSDL. Il se débrouille alors comme un grand pour fabriquer le proxy client. Il ne nous reste plus alors qu’à ajouter le bon « using » coté client et on a l’impression de pouvoir appeler des méthodes en local alors que ces dernières sont bien exécutées de l’autre coté. Productivité et complexité masquée. 
&lt;P&gt;On peut tout à fait appliquer cette même idée de génération de proxy client avec .NET RIA Services. Vous définissez un service coté ASP.NET vous permettant de charger des enregistrements, des les mettre à jour. Vous définissez également les règles de validation à appliquer sur les champs des objets associés aux enregistrements. Vous pourriez alors écrire vous-même un client consommant ce service en réécrivant du code pour faire l’appel au service (via WCF) et s’occupant de valider les champs de saisie (duplication du code). Heureusement, .NET RIA Services s’occupe de cela pour vous. &lt;/P&gt;
&lt;P&gt;Le début de la magie commence par cet attribut :&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;EnableClientAccess&lt;/SPAN&gt;()] &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Cela va indiquer à Visual Studio d’analyser les méthodes présentes dans votre classe service dérivant dans notre cas de &lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes; mso-fareast-language: en-us; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-bidi-language: ar-sa" lang=FR&gt;LinqToEntitiesDomainService&lt;/SPAN&gt;. Alors où est caché le proxy client résultant coté Silverlight ? Pour le voir, cliquez sur le bouton « Show All Files » sur votre projet Silverlight.&lt;/P&gt;
&lt;P&gt;&lt;A title="RIAImage13 de d_rousset, sur Flickr" href="http://www.flickr.com/photos/35281337@N05/3573456659/" mce_href="http://www.flickr.com/photos/35281337@N05/3573456659/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=RIAImage13 src="http://farm3.static.flickr.com/2341/3573456659_f07a099d22_o.jpg" width=269 height=201 mce_src="http://farm3.static.flickr.com/2341/3573456659_f07a099d22_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Un dossier apparaît nommé « Generated_Code » et vous découvrez à l’intérieur un fichier « GestionClientsRIA.Web.g.cs » (.g pour generated). C’est le proxy client ! On y découvre nos différentes méthodes Load notamment et on peut voir dans le constructeur par défaut vers quel type d’URL va se faire la requête HTTP sous-jacente :&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; CustomersContext() :&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;base&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;HttpDomainClient&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Uri&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"DataService.axd/GestionClientsRIA-Web-CustomersService/"&lt;/SPAN&gt;, System.&lt;SPAN style="COLOR: #2b91af"&gt;UriKind&lt;/SPAN&gt;.Relative)))&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-ansi-language: fr; mso-no-proof: yes" lang=FR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt; mso-ansi-language: fr" lang=FR&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Si l’on y ajoute un petit coup de &lt;A href="http://www.fiddler2.com/" mce_href="http://www.fiddler2.com/"&gt;Fiddler&lt;/A&gt; pour analyser le trafic réseau et si l’on charge les enregistrements avec cette ligne de code :&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;contexte.Load(contexte.GetCustomersByCountryQuery(&lt;SPAN style="COLOR: #a31515"&gt;"Italy"&lt;/SPAN&gt;));&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;On voit partir cette requête :&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt"&gt;&lt;FONT face=Calibri&gt;#&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Result&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Protocol&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Host&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;URL&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Body&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Caching&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Content-Type&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Process&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Comments&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Custom &lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt"&gt;&lt;FONT face=Calibri&gt;17&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;200&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;HTTP&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;127.0.0.1:52878&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;/ClientBin/DataService.axd/GestionClientsRIA-Web-CustomersService/GetCustomersByCountry?country=Italy&lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt; &lt;/SPAN&gt;1 194&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;no-cache&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Expires: -1&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;text/json&lt;/SPAN&gt;; charset=utf-8&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;iexplore:6648 &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Cela ressemble donc méchamment à l’utilisation de REST et JSON derrière. :) Voici d’ailleurs le retour :&lt;/P&gt;
&lt;P&gt;{"__type":"DataServiceResult:DomainServices","IsDomainServiceException":false,"Results":[{"__type":"Customers:http://schemas.datacontract.org/2004/07/GestionClientsRIA.Web","Address":"Via Monte Bianco 34","City":"Torino","CompanyName":"Franchi S.p.A.","ContactName":"Paolo Accorti","ContactTitle":"Sales Representative","Country":"Italy","CustomerID":"FRANS","Fax":"011-4988261","Phone":"011-4988260","PostalCode":"10100","Region":null},{"__type":"Customers:http://schemas.datacontract.org/2004/07/GestionClientsRIA.Web","Address":"Via Ludovico il Moro 22","City":"Bergamo","CompanyName":"Magazzini Alimentari Riuniti","ContactName":"Giovanni Rovelli","ContactTitle":"Marketing Manager","Country":"Italy","CustomerID":"MAGAA","Fax":"035-640231","Phone":"035-640230","PostalCode":"24100","Region":null},{"__type":"Customers:http://schemas.datacontract.org/2004/07/GestionClientsRIA.Web","Address":"Strada Provinciale 124","City":"Reggio Emilia","CompanyName":"Reggiani Caseifici","ContactName":"Maurizio Moroni","ContactTitle":"Sales Associate","Country":"Italy","CustomerID":"REGGC","Fax":"0522-556722","Phone":"0522-556721","PostalCode":"42100","Region":null}],"TotalCount":-2,"ResultCount":3}&lt;/P&gt;
&lt;P&gt;Grâce à l’utilisation de ces standards, vous pourriez donc tout à fait faire appel au service .NET RIA exposé coté ASP.NET depuis AJAX ou PHP. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;Astuce :&lt;/U&gt;&lt;/B&gt; &lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-ansi-language: fr; mso-fareast-language: en-us; mso-fareast-font-family: calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-bidi-language: ar-sa" lang=FR&gt;par défaut Fiddler ne voit pas le trafic sur localhost. Changez alors l’URL pour accéder à votre application Web de &lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-fareast-font-family: calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-bidi-language: ar-sa"&gt;&lt;SPAN style="mso-ansi-language: fr" lang=FR&gt;&lt;FONT color=#0033cc&gt;&lt;A href="http://localhost:port/BusinessApplicationTestPage.aspx#/Home"&gt;http://&lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;localhost&lt;/SPAN&gt;:port/BusinessApplicationTestPage.aspx#/Home&lt;/A&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-ansi-language: fr; mso-fareast-language: en-us; mso-fareast-font-family: calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-bidi-language: ar-sa" lang=FR&gt;vers &lt;FONT color=#0033cc&gt;&lt;A href="http://ipv4.fiddler:port/BusinessApplicationTestPage.aspx#/Home"&gt;http://&lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;ipv4.fiddler&lt;/SPAN&gt;:port/BusinessApplicationTestPage.aspx#/Home&lt;/A&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-ansi-language: fr; mso-fareast-language: en-us; mso-fareast-font-family: calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-bidi-language: ar-sa" lang=FR&gt;Nous allons maintenant voir comment utiliser de nouveaux contrôles orientés données de Silverlight 3 et comment spécifier des règles de validation pour améliorer notre application dans ce &lt;A href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-3-4.aspx"&gt;3ème billet&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9649091" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="ASPNET" scheme="http://blogs.msdn.com/davrous/archive/tags/ASPNET/default.aspx" /><category term="Silverlight 3" scheme="http://blogs.msdn.com/davrous/archive/tags/Silverlight+3/default.aspx" /><category term=".NET RIA Services" scheme="http://blogs.msdn.com/davrous/archive/tags/.NET+RIA+Services/default.aspx" /></entry><entry><title>Comment développer des applications d’entreprises orientées données avec Silverlight 3 : introduction à .NET RIA Services (1/4)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-1-4.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-1-4.aspx</id><published>2009-05-28T23:58:00Z</published><updated>2009-05-28T23:58:00Z</updated><content type="html">&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;&lt;FONT face=Calibri&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: #c00000; mso-ansi-language: FR" lang=FR&gt;&lt;FONT size=3&gt;Article mis à jour&amp;nbsp;: juillet 2009 pour la sortie de Silverlight 3 RTW et .NET RIA Services Juillet 2009&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;
&lt;P&gt;Selon une étude Gartner de Mai 2005, environ 60% des nouvelles applications utiliseront une technologie RIA d’ici 2010. Aujourd’hui, nous pouvons utiliser différentes technologies pour construire une application RIA comme par exemple AJAX, Flash et Silverlight. Coté AJAX, on atteints déjà en grande partie le maximum de ce que l’on peut faire en terme d’expérience utilisateur à cause des limitations du HTML et des langages de scripts client. En attendant de voir ce que nous fournira HTML5 et CSS3 d’ici quelques années, cela positionne Silverlight comme particulièrement intéressants avec le bon goût d’être disponible de suite. Ainsi, nous allons nous pencher ici sur les nouveautés de&lt;STRONG&gt; Silverlight 3&lt;/STRONG&gt; et plus spécifiquement autour de la &lt;STRONG&gt;simplification de l’écriture d’applications n-tiers orientées données&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Silverlight est une technologie particulièrement intéressante pour rendre la couche cliente d’une application Web efficace et attrayante mais je rencontre malgré tout souvent des développeurs sceptiques sur sa capacité à représenter la couche de présentation d’une application d’entreprise. Pourtant, elle permet de se soustraire de problématiques agaçantes et récurrentes comme la gestion des CSS, du rendu multi-navigateurs, de l’adaptation à la résolution de l’écran, d’animations… sans compter la présence d’un environnement .NET dans le navigateur !&lt;/P&gt;
&lt;P&gt;Bref, je ne reviendrais pas sur les avantages d’une technologie comme Silverlight dans un scénario RIA. Cependant, bien que Silverlight 2 constitue un sous-ensemble de WPF (Windows Presentation Foundation) et du .NET Framework 3.5, une grande partie des fonctionnalités de WPF permettant de créer des applications orientées données n’ont pas été portées. En conséquence, certains développeurs ont fait l’impasse sur Silverlight 2 car l’implémentation de l’infrastructure centrée sur les données dans une solution Web leur semblait trop compliquée à mettre en œuvre. &lt;/P&gt;
&lt;P&gt;Revenons d’ailleurs rapidement sur la problématique du flux de données dans une application n-tiers sur le Web. Analysons le diagramme suivant récupéré du document &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce&amp;amp;displaylang=en"&gt;Microsoft .NET RIA Services May 2009 Preview&lt;/A&gt; :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://farm4.static.flickr.com/3587/3573504021_6e54f54e82_o.jpg" mce_href="http://farm4.static.flickr.com/3587/3573504021_6e54f54e82_o.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3573504021 src="http://static.flickr.com/3587/3573504021_c0f86a98ea.jpg" width=659 height=359 mce_src="http://static.flickr.com/3587/3573504021_c0f86a98ea.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;C’est un schéma relativement classique. Nos données sont stockées dans une base de données (Database) comme SQL Server, Oracle, MySQL. Ce serveur pouvant être stocké ou non sur la même machine où se trouve hébergée notre application Web. Pour accéder à nos données depuis notre application, on met en place une couche d’accès aux données (Data Access Layer). Ce travail peut aujourd’hui être simplifié par l’utilisation de technologies comme LINQ to SQL ou Entity Framework. Il faut ensuite implémenter les règles métiers et la logique globale de notre application. &lt;/P&gt;
&lt;P&gt;Une fois l’ensemble des ces tâches effectuées, on peut considérer avoir terminé la partie serveur de notre application Web. Si l’on décide de partir sur un frontal client en technologie Silverlight, comment allons-nous exposer cette partie serveur au client ? Jusqu’à présent, cela consistait à l’exposer sous la forme d’un WebService ou d’un service WCF avec l’aide ou non de technologies type REST/ADO.NET Data Services. Ensuite, si l’on souhaitait éviter un aller/retour serveur sur la validation de certaines contraintes (valeurs autorisées dans un formulaire de saisie par exemple), il fallait répliquer une partie du code de validation serveur dans le code du client. &lt;/P&gt;
&lt;P&gt;Vous aurez donc compris que ce que l’on gagne à mieux tirer partie de la puissance du poste client avec des technologies RIA comme Silverlight ou même AJAX, on le perds d’un autre coté en complexité avec la plomberie à mettre en place pour faire communiquer le client et le serveur Web.&lt;/P&gt;
&lt;P&gt;L’idéal serait donc de faire appel à une technologie ou un framework nous permettant de simplifier ces concepts. En tant que développeur, on ne veut ainsi pas perdre de temps à implémenter la plomberie de communication entre le client et le serveur, de validation coté client (voir réplication) des règles métiers définies coté serveur mais comme d’habitude se concentrer sur l’essentiel. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;.NET RIA Services : développez des applications n-tiers sans vous en rendre compte !&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;.NET RIA Services a exactement pour but de simplifier et de masquer toute cette plomberie nécessaire à la création d’une application Web dite RIA (Rich Internet Application) orientée données. Pour cela, cette technologie fournit un jeu de composants et d’extensions d’ASP.NET facilitant le processus de développement d’une application n-tiers, rendant votre application presque aussi simple à développer que si vous étiez sur un seul tiers (ou 2 tiers si la base de données n’est pas sur le serveur Web). De plus, certains services tels que l’authentification ou la gestion des rôles sont également fournis. &lt;/P&gt;
&lt;P&gt;De son coté, Silverlight 3 apporte de nouveaux contrôles et de nouvelles fonctionnalités voués également à simplifier le développement d’applications orientées données comme les nouveaux contrôles de données type DataGrid, de navigation, de validation et de gestion de fenêtres. &lt;/P&gt;
&lt;P&gt;La combinaison de ces apports coté serveur à ASP.NET et coté client à Silverlight 3 va donc nous permettre de développer des applications d’entreprise de manière extrêmement simplifiée. Ses concepteurs considèrent ainsi que .NET RIA Services apporte une expérience RAD (Rapid Application Development) au monde RIA. Une productivité bienvenue en ces périodes sombres de fortes contraintes économiques…&lt;/P&gt;
&lt;P&gt;Si l’on reprend le diagramme précédent, .NET RIA Services va donc jouer le rôle de glue entre notre serveur (sa couche d’accès aux données et ses règles métiers) et le client Silverlight. Elle va nous permettre de développer dans notre projet Silverlight en nous donnant l’impression d’être physiquement sur le serveur Web. Une expérience de développement particulièrement agréable vous allez voir !&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;Note :&lt;/U&gt;&lt;/B&gt; .NET RIA Services va être démontré dans cet article sous l’aspect Silverlight avec l’utilisation d’Entity Framework en tant qu’ORM. Cependant, il est important de noter que .NET RIA Services n’est pas exclusivement lié à Silverlight 3 ou à Entity Framework comme le montre le schéma suivant :&lt;/P&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3573504107/" mce_href="http://www.flickr.com/photos/35281337@N05/3573504107/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3573504107 src="http://farm4.static.flickr.com/3565/3573504107_6a419abf9b_o.jpg" width=741 height=330 mce_src="http://farm4.static.flickr.com/3565/3573504107_6a419abf9b_o.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Il a donc pour but final de simplifier les problématiques n-tiers dans de multiples scenarios. Aujourd’hui sont supportés de manière native Linq to SQL et Linq to Entity. Vous pouvez déjà vous connecter à des tables de Windows Azure par exemple mais cela nécessitera un peu plus de travail de votre part.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Préparation du poste de développement&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Voici les pré-requis pour pouvoir développer une application Silverlight 3 / .NET RIA Services :&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;1 – Visual Studio 2008 SP1 ou sa déclinaison gratuite&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 6.5pt; mso-ansi-language: FR" lang=FR&gt; &lt;/SPAN&gt;&lt;A href="http://www.microsoft.com/express/vwd/"&gt;&lt;SPAN style="COLOR: blue; mso-ansi-language: FR; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;Visual Web Developer Express 2008 SP1&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;&lt;BR&gt;&lt;FONT size=3 face=Calibri&gt;2 – Silverlight 3&amp;nbsp;RTW : le &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=2050E580-F1D5-4040-BB09-E6185591B6B5&amp;amp;displaylang=en"&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;SDK&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;&lt;FONT size=3 face=Calibri&gt; et les &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://go.microsoft.com/fwlink/?LinkID=143571"&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;&lt;FONT color=#0033cc size=3 face=Calibri&gt;outils pour Visual Studio 2008&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;&lt;FONT size=3 face=Calibri&gt;.&lt;BR&gt;3 - &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://go.microsoft.com/fwlink/?LinkId=144609"&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;&lt;FONT color=#0033cc size=3 face=Calibri&gt;.NET RIA Services&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="mso-ansi-language: FR" lang=FR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;: c’est la version de Juillet 2009 allant bien avec Silverlight 3 RTW&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Un clavier, une souris et vos doigts. :)&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;Note :&lt;/U&gt;&lt;/B&gt; &lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-ansi-language: FR; mso-fareast-language: EN-US; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-bidi-language: AR-SA" lang=FR&gt;Visual Studio 2010 Beta 1 supporte bien les projets de type Silverlight 3 Beta mais pas encore .NET RIA Services. Il faudra attendre Visual Studio 2010 Beta 2 pour avoir un support parfait de Silverlight 3 RTW et .NET RIA Services avec un nouveau designer de surface bien plus évolué que celui de VS 2008 pour Silverlight 2.&amp;nbsp;Dans cet article, nous resterons donc sur Visual Studio 2008 SP1. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Un aperçu rapide de .NET RIA Services en vidéo&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Avant toute chose, voici un bref aperçu des nouvelles possibilités offertes par .NET RIA Services et Silverlight 3. Un &lt;I&gt;teasing &lt;/I&gt;en mode Hello World de .NET RIA en quelques sortes. :) – Double-cliquez sur la vidéo pour la mettre en plein écran – &lt;/P&gt;
&lt;P&gt;&lt;IFRAME style="WIDTH: 500px; HEIGHT: 375px" src="http://silverlight.services.live.com/invoke/94157/Teasing%20.NET%20RIA%20Services/iframe.html" frameBorder=0 scrolling=no mce_src="http://silverlight.services.live.com/invoke/94157/Teasing%20.NET%20RIA%20Services/iframe.html"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;Rendez-vous maintenant dans le &lt;A href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-2-4.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/05/28/comment-d-velopper-des-applications-d-entreprises-orient-es-donn-es-avec-silverlight-3-introduction-net-ria-services-2-4.aspx"&gt;2ème billet&lt;/A&gt; pour découvrir étape par étape comment écrire une petite application RIA de gestion de clients et comprendre un peu mieux comment .NET RIA Services fonctionne. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9649020" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="ASPNET" scheme="http://blogs.msdn.com/davrous/archive/tags/ASPNET/default.aspx" /><category term="Silverlight 3" scheme="http://blogs.msdn.com/davrous/archive/tags/Silverlight+3/default.aspx" /><category term=".NET RIA Services" scheme="http://blogs.msdn.com/davrous/archive/tags/.NET+RIA+Services/default.aspx" /></entry><entry><title>Réflexions sur l’utilisation de PHP dans le monde Microsoft et sur ses intérêts</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davrous/archive/2009/05/04/r-flexions-sur-l-utilisation-de-php-dans-le-monde-microsoft-et-sur-ses-int-r-ts.aspx" /><id>http://blogs.msdn.com/davrous/archive/2009/05/04/r-flexions-sur-l-utilisation-de-php-dans-le-monde-microsoft-et-sur-ses-int-r-ts.aspx</id><published>2009-05-04T19:59:00Z</published><updated>2009-05-04T19:59:00Z</updated><content type="html">&lt;P&gt;Ces derniers temps, il m’arrive souvent d’avoir la chance de pouvoir discuter avec des développeurs de la communauté PHP. En comparant nos 2 univers, on peut voir clairement qu’il y a de bonnes synergies à mettre en place et que les 2 mondes ont beaucoup à apprendre l’un de l’autre en les faisant communiquer. &lt;/P&gt;
&lt;P&gt;Il y a plusieurs scénarios intéressants à mon sens. Je vous propose de les revoir ensemble. N’ayant pas encore énormément de recul sur le monde merveilleux du développement PHP, je suis ouvert à toutes les formes de commentaires et de critiques. Dès l’instant qu’elles sont constructives bien sûr!&lt;/P&gt;
&lt;H4&gt;1 – &lt;STRONG&gt;Vous êtes développeur sur la plateforme LAMP et vous êtes très heureux ainsi&lt;/STRONG&gt;. Utilisez nos services grâce aux standards! &lt;/H4&gt;
&lt;P&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3500455163/" mce_href="http://www.flickr.com/photos/35281337@N05/3500455163/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 0px 0px 10px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3500455163 align=right src="http://static.flickr.com/3394/3500455163_b05d9c56d5.jpg" width=302 height=226 mce_src="http://static.flickr.com/3394/3500455163_b05d9c56d5.jpg"&gt;&lt;/A&gt;Vous ne souhaitez pas toucher à la moindre lettre de votre éclairage. Genre, la touche W de votre clavier ne vous inspire pas du tout. :) Malgré tout, certains services peuvent être susceptibles de vous intéresser. Prenons par exemple les services Live proposant la possibilité d’authentifier des utilisateurs sur vos sites Web avec leur Live ID. Cela peut clairement avoir un intérêt vu les plus de&lt;FONT color=#800080&gt; &lt;STRONG&gt;600 millions de Live ID présents sur Internet&lt;/STRONG&gt;&lt;/FONT&gt; à l’heure actuelle! &lt;/P&gt;
&lt;P&gt;Pour cela, le &lt;A href="http://blogs.msdn.com/davrous/archive/2008/12/09/tentons-de-mieux-comprendre-live-fx-live-mesh-et-ses-possibilit-s.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2008/12/09/tentons-de-mieux-comprendre-live-fx-live-mesh-et-ses-possibilit-s.aspx"&gt;Live Framework&lt;/A&gt; pourra vous aider à mettre en place cette intégration. Basé sur les standards du Web, cela ne devrait pas vous poser la moindre difficulté. Vous pourrez alors ensuite accéder aux contacts, accéder à un espace Live Mesh, utiliser Virtual Earth, etc. &lt;/P&gt;
&lt;P&gt;Si le sujet vous intéresse, je vous conseille de regarder ces 2 WebCasts (en Anglais):&lt;/P&gt;
&lt;P&gt;- PDC09 : “Live Services: Programming Live Services Using Non-Microsoft Technologies” : &lt;A title=http://channel9.msdn.com/pdc2008/BB51/ href="http://channel9.msdn.com/pdc2008/BB51/" mce_href="http://channel9.msdn.com/pdc2008/BB51/"&gt;http://channel9.msdn.com/pdc2008/BB51/&lt;/A&gt; . Vous trouverez également &lt;STRONG&gt;&lt;FONT color=#800080&gt;un helper PHP pour le Live Framework&lt;/FONT&gt;&lt;/STRONG&gt; &lt;A href="http://code.msdn.microsoft.com/LiveFramework/Release/ProjectReleases.aspx?ReleaseId=2412" mce_href="http://code.msdn.microsoft.com/LiveFramework/Release/ProjectReleases.aspx?ReleaseId=2412"&gt;ici&lt;/A&gt; &lt;BR&gt;&lt;BR&gt;- MIX09 : “Running PHP on Microsoft Servers and Services” : &lt;A title=http://videos.visitmix.com/MIX09/T21F href="http://videos.visitmix.com/MIX09/T21F" mce_href="http://videos.visitmix.com/MIX09/T21F"&gt;http://videos.visitmix.com/MIX09/T21F&lt;/A&gt; vers la 43ème minute. Vous verrez comment&lt;FONT color=#800080&gt; &lt;STRONG&gt;interagir avec les services Live depuis une application PHP&lt;/STRONG&gt;&lt;/FONT&gt; (avec WordPress en l’occurrence).&lt;/P&gt;
&lt;P&gt;Les standards sont également intensivement utilisés dans notre plateforme Azure. Vous pourrez ainsi facilement faire appel à des services exposés sous forme de WebServices depuis vos applications PHP. Si ce sujet spécifique vous intéresse, je vous conseille alors cette session d’1h en Français : “&lt;A href="http://www.microsoft.com/france/vision/mstechdays09/Webcast.aspx?EID=1ff5abc8-7ef6-47cf-973b-768d181c5ea9" mce_href="http://www.microsoft.com/france/vision/mstechdays09/Webcast.aspx?EID=1ff5abc8-7ef6-47cf-973b-768d181c5ea9"&gt;Scénarios d'interopérabilité de la plateforme Azure en Java, Ruby et Cobol&lt;/A&gt;” . Les principes exposés étant les mêmes pour un accès depuis PHP. &lt;/P&gt;
&lt;H4&gt;2 – &lt;STRONG&gt;Vous souhaitez développer sur Windows mais déployer sous Linux&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;Pour quelles raisons? Parce vous trouvez plus agréable une machine sous Windows pour travailler et développer. Pourquoi pas, ce n’est pas moi qui vous dirais le contraire ! :)&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3501270832/" mce_href="http://www.flickr.com/photos/35281337@N05/3501270832/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 0px 0px 10px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3501270832 align=right src="http://static.flickr.com/3374/3501270832_6fb5153fce.jpg" width=201 height=207 mce_src="http://static.flickr.com/3374/3501270832_6fb5153fce.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Dans ces cas là, je vous invite alors à regarder la solution &lt;STRONG&gt;&lt;FONT color=#800080&gt;WAMP&lt;/FONT&gt;&lt;/STRONG&gt; suivante : &lt;A title=http://www.wampserver.com/ href="http://www.wampserver.com/" mce_href="http://www.wampserver.com/"&gt;http://www.wampserver.com/&lt;/A&gt; et à lire le blog suivant très intéressant : &lt;A title=http://blog.wampserver.com/ href="http://blog.wampserver.com/" mce_href="http://blog.wampserver.com/"&gt;http://blog.wampserver.com/&lt;/A&gt; animé par Romain BOURDON.&lt;/P&gt;
&lt;P&gt;Voici un bref descriptif issu du site: “&lt;EM&gt;WampServer est une plate-forme de développement Web sous Windows. Il vous permet de développer des applications Web dynamiques à l'aide du serveur Apache2, du langage de scripts PHP et d'une base de données MySQL. Il possède également PHPMyAdmin et SQLite Manager pour gérer plus facilement vos bases de données.&lt;/EM&gt;”&lt;/P&gt;
&lt;H4&gt;3 – &lt;STRONG&gt;Vous souhaitez porter ou écrire votre application PHP de Linux/Apache vers Windows/IIS&lt;/STRONG&gt; (avec FastCGI). &lt;/H4&gt;
&lt;P&gt;J’ai en effet constaté que les développeurs LAMP développent souvent sous Windows (avec WAMP donc) et publient ensuite sous Linux. Il serait donc peut-être plus intéressant d’avoir un ensemble cohérent avec une station de développement sous Windows et le serveur Web également sous Windows. De plus, il arrive également que certaines demandes clientes imposent l’utilisation de serveur Windows pour le déploiement des solutions PHP. &lt;/P&gt;
&lt;P&gt;Par ailleurs, cela vous permet alors d’héberger des applications ASP.NET et PHP sur le même serveur grâce à l’utilisation du couple Windows/IIS. Simplification des problématiques d’administration donc. &lt;/P&gt;
&lt;P&gt;&lt;U&gt;A noter:&lt;/U&gt; qui à passer sous Windows, il me semble qu’il faut mieux passer sous IIS/FastCGI. Les raisons sont assez simples: Apache vient du monde Unix et lève par défaut un processus par demande (même si cela peut-être changé depuis la version 2 avec le module &lt;A href="http://httpd.apache.org/docs/2.2/mod/mpm_winnt.html" mce_href="http://httpd.apache.org/docs/2.2/mod/mpm_winnt.html"&gt;mpm_winnt_module&lt;/A&gt;). Pour des choix d’architecture, Windows est nettement moins à l’aise avec la création de nombreux processus par rapport à une base Unix. Mieux vaut donc partir sur le serveur Web IIS (Internet Information Server) prévu pour tirer le maximum de l’architecture de Windows et présent par défaut. D’autre part, sauf erreur de ma part, WAMP n’est pas actuellement supporté en production. &lt;/P&gt;
&lt;P&gt;Pour vous aider à développer du PHP sur Windows, il est important de noter que nous avons sorti une série de kit de formation autour de ce sujet téléchargeable ici : “&lt;STRONG&gt;&lt;FONT color=#0080ff&gt;PHP on Windows Training Kit (April 2009)&lt;/FONT&gt;&lt;/STRONG&gt;” : &lt;A href="http://go.microsoft.com/?linkid=9656081" mce_href="http://go.microsoft.com/?linkid=9656081"&gt;http://go.microsoft.com/?linkid=9656081&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;A l’intérieur de ce kit PHP, voici les ateliers susceptibles de vous intéresser: &lt;/P&gt;&lt;B&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/B&gt;
&lt;P&gt;&lt;B&gt;&lt;EM&gt;Utilisation des fonctionnalités de contrôle d’accès d’IIS 7.0 pour PHP&lt;/EM&gt;&lt;/B&gt;&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=745&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=141&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3501271108/" mce_href="http://www.flickr.com/photos/35281337@N05/3501271108/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 10px 0px 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3501271108 src="http://static.flickr.com/3625/3501271108_3844c736e8.jpg" width=170 height=127 mce_src="http://static.flickr.com/3625/3501271108_3844c736e8.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=602&gt;
&lt;P&gt;Cet exercice vous introduit l’utilisation des fonctionnalités de contrôle d’accès d’IIS 7.0. Cela vous permet alors de créer une gestion des accès flexible et facile à administrer. &lt;BR&gt;&lt;BR&gt;Ainsi, contrairement au passé avec CGI, IIS 7.0 et FastCGI permettent à PHP d’avoir un modèle d’exécution simplifiant l’administration de la sécurité. Dans ce nouveau modèle, les scripts PHP peuvent être exécutés en utilisant l’identité de “l’application pool” à laquelle l’application est rattachée.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Utilisation des fonctionnalités média d’IIS 7.0 au sein d’une application PHP&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=744&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=141&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3500455587/" mce_href="http://www.flickr.com/photos/35281337@N05/3500455587/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3500455587 src="http://static.flickr.com/3637/3500455587_0379a7785f.jpg" width=130 height=125 mce_src="http://static.flickr.com/3637/3500455587_0379a7785f.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=601&gt;
&lt;P&gt;Vous verrez ici l’utilisation des fonctionnalités Media d’IIS 7.0. Cela vous permettra de construire rapidement une application PHP pour proposer une solution Web de diffusion vidéo en utilisant les fonctionnalités proposées par défaut d’IIS 7.0 et de réduire les coûts de diffusion média en contrôlant la bande passante.&lt;/P&gt;
&lt;P&gt;Vous verrez également comment embarquer un player de vidéos en Silverlight 2 dans votre page PHP&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;B&gt;&lt;EM&gt;Comment débugger du PHP sur IIS&lt;/EM&gt;&lt;/B&gt;&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=743&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=187&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3500455659/" mce_href="http://www.flickr.com/photos/35281337@N05/3500455659/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 10px 0px 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3500455659 src="http://static.flickr.com/3644/3500455659_720c585bb5.jpg" width=177 height=134 mce_src="http://static.flickr.com/3644/3500455659_720c585bb5.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=554&gt;
&lt;P&gt;Cette partie explique brièvement les problèmes classiques que l’on rencontre lorsque l’on installe PHP sur IIS 7.0. Vous y trouverez ainsi une illustration des techniques de “troubleshooting” (débogage) pouvant être mise en œuvre pour diagnostiquer et résoudre des problèmes PHP sous IIS 7.0.&lt;/P&gt;
&lt;P&gt;Une fois maitrisées, ces techniques peuvent réduire de manière significative le temps passé à débugger son application pendant le cycle de développement ainsi que lors de la mise en production. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;B&gt;&lt;EM&gt;Comment migrer une application PHP vers IIS 7.0&lt;/EM&gt;&lt;/B&gt;&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=743&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=187&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3500455737/" mce_href="http://www.flickr.com/photos/35281337@N05/3500455737/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 10px 0px 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3500455737 src="http://static.flickr.com/3093/3500455737_02f7033ebe.jpg" width=175 height=128 mce_src="http://static.flickr.com/3093/3500455737_02f7033ebe.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=554&gt;
&lt;P&gt;Vous verrez ici la stratégie typique de migration d’une application PHP vers IIS 7.0 Vous verrez ainsi que le support de PHP d’IIS 7.0 est très compatible avec l’existant et dans la plupart des cas ne requiert pas de modifications spécifiques pour passer d’Apache vers IIS 7.0/FastCGI.&lt;/P&gt;
&lt;P&gt;Par ailleurs, un des points bloquants historique et connu a toujours été le module Apache de réécriture d’URLs mod_rewrite. IIS 7.0 propose désormais le module “URL Rewrite” permettant de formater les URLs pour une meilleure indexation par les moteurs de recherches par exemple.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Pour terminer sur cette partie, un des bénéfices induit par le travail de migration d’une application PHP de Linux/Apache vers Windows/IIS/FastCGI est l’ouverture vers le Cloud. En effet,&lt;FONT color=#ff0080&gt; &lt;/FONT&gt;&lt;FONT color=#800080&gt;&lt;STRONG&gt;vous vous ouvrez alors facilement le portage vers notre plateforme d’hébergement et d’exécution dans le Cloud&lt;/STRONG&gt;&lt;/FONT&gt; : Windows Azure. Si ce sujet vous intéresse, mon collègue Pierre Lagarde vous indique la marche à suivre pour publier une application PHP dans Windows Azure à travers ces 2 billets:&lt;/P&gt;
&lt;P&gt;- “Support de Fast-CGI dans l’hébergement Windows Azure” : &lt;A title=http://blogs.msdn.com/pierlag/archive/2009/03/20/support-de-fast-cgi-dans-l-h-bergement-windows-azure.aspx href="http://blogs.msdn.com/pierlag/archive/2009/03/20/support-de-fast-cgi-dans-l-h-bergement-windows-azure.aspx" mce_href="http://blogs.msdn.com/pierlag/archive/2009/03/20/support-de-fast-cgi-dans-l-h-bergement-windows-azure.aspx"&gt;http://blogs.msdn.com/pierlag/archive/2009/03/20/support-de-fast-cgi-dans-l-h-bergement-windows-azure.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;- “Solution Azure Php (Exemple)” : &lt;A title=http://blogs.msdn.com/pierlag/archive/2009/03/30/solution-azure-php-exemple.aspx href="http://blogs.msdn.com/pierlag/archive/2009/03/30/solution-azure-kphp-exemple.aspx" mce_href="http://blogs.msdn.com/pierlag/archive/2009/03/30/solution-azure-kphp-exemple.aspx"&gt;http://blogs.msdn.com/pierlag/archive/2009/03/30/solution-azure-kphp-exemple.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;La session indiquée plus haut du MIX09 : “Running PHP on Microsoft Servers and Services” vous intéressera alors également. &lt;/P&gt;
&lt;H4&gt;4 – &lt;STRONG&gt;Vous souhaitez bénéficier de services dans vos applications PHP non disponibles dans MySQL&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P mce_keep="true"&gt;Rien ne vous empêche dès lors de faire appel à SQL Server 2008 depuis PHP. &lt;/P&gt;&lt;U&gt;&lt;/U&gt;
&lt;P&gt;&lt;U&gt;A noter:&lt;/U&gt; notre équivalent gratuit à MySQL se nomme SQL Server 2008 Express. Vous pouvez donc le télécharger gratuitement ici : &lt;A title="Sql Express 2008" href="http://www.microsoft.com/express/sql/download/" mce_href="http://www.microsoft.com/express/sql/download/"&gt;Sql Express 2008&lt;/A&gt; . Ce dernier bénéfice bien par exemple des nouveaux types spatiaux même dans sa version gratuite. &lt;/P&gt;
&lt;P&gt;Dans le &lt;A href="http://go.microsoft.com/?linkid=9656081"&gt;kit présenté plus haut&lt;/A&gt;, voici la série qui pourra vous intéresser :&lt;/P&gt;
&lt;P&gt;&lt;A title=DemosSection name=DemosSection&gt;&lt;/A&gt;&lt;FONT color=#800000 size=2&gt;&lt;STRONG&gt;Démos&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=Spatial_Demo name=Spatial_Demo&gt;&lt;/A&gt;&lt;STRONG&gt;&lt;EM&gt;Démo&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; avec les nouveaux types pour la géo-localisation &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=747&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=211&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3500455823/" mce_href="http://www.flickr.com/photos/35281337@N05/3500455823/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 10px 0px 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3500455823 src="http://static.flickr.com/3413/3500455823_0c61fc6d84.jpg" width=206 height=128 mce_src="http://static.flickr.com/3413/3500455823_0c61fc6d84.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=534&gt;
&lt;P&gt;Cette démo a pour but de vous présenter les capacités spatiales de SQL Server 2008 intégrée dans PHP. &lt;/P&gt;
&lt;P&gt;Cette application se repose ainsi sur SQL Server pour le stockage et les calculs sur les types de données géo-spatiaux pour ensuite passer la main à Virtual Earth afin de rendre les figures sur une carte. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;B&gt;&lt;EM&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: 0px" border=0 alt=3501270968 src="http://static.flickr.com/3361/3501270968_0812569096.jpg" width=504 height=112 mce_src="http://static.flickr.com/3361/3501270968_0812569096.jpg"&gt;&lt;/EM&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;EM&gt;Démo de rapports avec &lt;B&gt;SQL Server Reporting Services &lt;/B&gt;&lt;/EM&gt;&lt;/B&gt;&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=745&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=191&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3501271554/" mce_href="http://www.flickr.com/photos/35281337@N05/3501271554/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 10px 0px 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3501271554 src="http://static.flickr.com/3387/3501271554_57aab3f3a7.jpg" width=198 height=124 mce_src="http://static.flickr.com/3387/3501271554_57aab3f3a7.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=552&gt;
&lt;P&gt;Cette démo a pour but de vous montrer les fonctionnalités de “reporting” de SQL Server 2008 au sein d’une application PHP. Cette application s’appuie ainsi sur SQL Server Reporting Services (le service de génération de rapports intégré à SQL Server) pour générer et exposer des rapports personnalisés.&amp;nbsp; &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;FONT color=#800000 size=2&gt;&lt;STRONG&gt;&lt;FONT color=#800000 size=2&gt;&lt;STRONG&gt;&lt;FONT color=#800000 size=2&gt;&lt;STRONG&gt;Ateliers&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=Introduction_to_Using_SQL_Server_with_PHP name=Introduction_to_Using_SQL_Server_with_PHP&gt;&lt;/A&gt;&lt;B&gt;&lt;EM&gt;Introduction à l’utilisation de SQL Server depuis PHP&lt;/EM&gt;&lt;/B&gt;&amp;nbsp; &lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=742&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=193&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 5px 10px 0px 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3500455999 src="http://static.flickr.com/3593/3500455999_aff26fba62.jpg" width=177 height=138 mce_src="http://static.flickr.com/3593/3500455999_aff26fba62.jpg"&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=547&gt;A travers cet atelier, vous apprendrez à effectuer les opérations classiques d’accès aux données (Création, Lecture, Mise à jour, Suppression) vers SQL Server depuis des scripts PHP tournant sous IIS 7. Vous verrez ainsi les étapes à suivre pour vous connecter à la base de données et comment effectuer ces opérations au sein d’une transaction.&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;EM&gt;&lt;B&gt;&lt;B&gt;Utilisation des fonctionnalités de recherche de texte libre et des BLOBs depuis PHP grâce à SQL Server&lt;/B&gt;&amp;nbsp;&amp;nbsp; &lt;/B&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=748&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=192&gt;&lt;A title="Photo Sharing" href="http://www.flickr.com/photos/35281337@N05/3501271702/" mce_href="http://www.flickr.com/photos/35281337@N05/3501271702/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 10px 0px 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3501271702 src="http://static.flickr.com/3643/3501271702_aac3af5a3d.jpg" width=176 height=108 mce_src="http://static.flickr.com/3643/3501271702_aac3af5a3d.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=554&gt;
&lt;P&gt;A travers cet atelier, vous apprendrez à tirer partie des fonctionnalités de recherches de texte libre (Full-Text Search) et gestion de “Filestream” (flux de données) depuis votre application Web PHP. &lt;/P&gt;
&lt;P&gt;Vous utiliserez ainsi des scripts PHP pour effectuer des recherches plein texte sur des documents stockés sous la forme de BLOBs (binary large objects data). &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Les requêtes de type texte libre effectuent des recherches linguistiques sur des données de type texte en travaillant sur des mots et des phrases à travers des règles spécifiques à chaque langage comme le Français ou le Japonais par exemple. Pour chacun des langages supportés, SQL Server fournit des composants linguistiques spécifiques. Vous pouvez même éventuellement rechercher des synonymes. &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#800000 size=2&gt;&lt;STRONG&gt;Ressources complémentaires&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Comment accéder aux bases de données SQL Server depuis PHP &lt;/B&gt;&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=756&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=205&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 10px 0px 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=3500456221 src="http://static.flickr.com/3623/3500456221_87d3c61a6c.jpg" width=166 height=118 mce_src="http://static.flickr.com/3623/3500456221_87d3c61a6c.jpg"&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=549&gt;
&lt;P&gt;Le driver Microsoft SQL Server pour PHP permet aux développeurs PHP d’accéder aux données d’une base SQL Server 2005 ou SQL Server 2008. Ce driver inclut le support des méthodes d’authentification Windows et SQL, les transactions, l’accès aux métadonnées, la gestion d’erreur, le pooling de connections, etc. Cet article explique comment charger et configurer le driver et présente comment tirer partie de plusieurs des fonctionnalités mentionnées avant. Cet article peut être consulté en ligne directement ici : &lt;A title=http://msdn.microsoft.com/en-us/library/cc793139(SQL.90).aspx href="http://msdn.microsoft.com/en-us/library/cc793139(SQL.90).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc793139(SQL.90).aspx"&gt;http://msdn.microsoft.com/en-us/library/cc793139(SQL.90).aspx&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;H4&gt;5 – &lt;STRONG&gt;Notre outil de développement Visual Studio 2008 grâce à VS.PHP&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/davrous/WindowsLiveWriter/PHPsurWindowsetPHPavecSQLServerunesriede_916B/dd647545.php-atelier-01(fr-fr,MSDN.10)%5B1%5D_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/davrous/WindowsLiveWriter/PHPsurWindowsetPHPavecSQLServerunesriede_916B/dd647545.php-atelier-01(fr-fr,MSDN.10)%5B1%5D_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 0px 0px 5px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=dd647545.php-atelier-01(fr-fr,MSDN.10)[1] border=0 alt=dd647545.php-atelier-01(fr-fr,MSDN.10)[1] align=right src="http://blogs.msdn.com/blogfiles/davrous/WindowsLiveWriter/PHPsurWindowsetPHPavecSQLServerunesriede_916B/dd647545.php-atelier-01(fr-fr,MSDN.10)%5B1%5D_thumb.jpg" width=154 height=267 mce_src="http://blogs.msdn.com/blogfiles/davrous/WindowsLiveWriter/PHPsurWindowsetPHPavecSQLServerunesriede_916B/dd647545.php-atelier-01(fr-fr,MSDN.10)%5B1%5D_thumb.jpg"&gt;&lt;/A&gt; S’il y a bien une chose qui m’ait marqué ces derniers temps en côtoyant les développeurs PHP, c’est la multitude d’outils utilisés rarement bien intégrés les uns aux autres. Par ailleurs, certaines fonctions qui me paraissent aujourd’hui vitales ne sont pas toujours de la partie. C’est le cas de la complétion automatique nommée IntelliSense chez Microsoft ou alors également du debugging facile de son application.&lt;/P&gt;
&lt;P&gt;De même, l’intégration continue, la gestion de tests unitaires ou de tests de montée en charge d’application Web sont des fonctionnalités intégrées de facto dans les versions Team de Visual Studio par exemple. Ce n’est pas toujours évident de mettre tout cela en place avec les outils gratuits pour gérer du PHP. Le couplage de Visual Studio avec TFS (Team Foundation Server) permet une gestion avancée du code source. On retrouve aussi des choses comme la génération de build basée sur des critères de qualité (build si uniquement couverture &amp;gt;80% des tests par exemple). &lt;/P&gt;
&lt;P&gt;Pour être honnête, s’il y a bien quelque chose sur lequel on me titille jamais à la concurrence, c’est bien notre outil de développement Visual Studio. &lt;/P&gt;
&lt;P&gt;&lt;U&gt;Note:&lt;/U&gt; A ma grande surprise, j’ai actuellement rencontré peu de personnes développant avec Eclipse pour faire du PHP. Si j’ai rencontré le mauvais échantillon, n’hésitez pas à venir vers moi me vanter les mérites d’Eclipse pour faire du PHP! A mon sens, c’est en effet l’outil de développement qui fait clairement face à Visual Studio dans ma tête. &lt;/P&gt;
&lt;P&gt;Alors je sais: chez Microsoft nos outils de développement ne sont pas gratuits (encore que… voir &lt;A href="http://msdn.microsoft.com/fr-fr/express/default.aspx" mce_href="http://msdn.microsoft.com/fr-fr/express/default.aspx"&gt;la gamme gratuite Express&lt;/A&gt;). Mais cela peut valoir le coup je pense de se poser la question: ne vaut-il mieux parfois investir dans ces outils plutôt que de galérer à mettre en place une 12aine d’outils gratuits finalement plus complexes à maitriser ? C’est un vaste débat que l’on ne pourra pas couvrir en quelques lignes ici…&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/davrous/WindowsLiveWriter/PHPsurWindowsetPHPavecSQLServerunesriede_916B/dd647546.clip_image002(fr-fr,MSDN.10)%5B1%5D_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/davrous/WindowsLiveWriter/PHPsurWindowsetPHPavecSQLServerunesriede_916B/dd647546.clip_image002(fr-fr,MSDN.10)%5B1%5D_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 10px 0px 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=dd647546.clip_image002(fr-fr,MSDN.10)[1] border=0 alt=dd647546.clip_image002(fr-fr,MSDN.10)[1] align=left src="http://blogs.msdn.com/blogfiles/davrous/WindowsLiveWriter/PHPsurWindowsetPHPavecSQLServerunesriede_916B/dd647546.clip_image002(fr-fr,MSDN.10)%5B1%5D_thumb.jpg" width=240 height=43 mce_src="http://blogs.msdn.com/blogfiles/davrous/WindowsLiveWriter/PHPsurWindowsetPHPavecSQLServerunesriede_916B/dd647546.clip_image002(fr-fr,MSDN.10)%5B1%5D_thumb.jpg"&gt;&lt;/A&gt;Malgré tout, vous devriez jeter un coup d’œil au plug-in VS.PHP de la société &lt;A href="http://www.jcxsoftware.com/" mce_href="http://www.jcxsoftware.com/"&gt;JCX Software&lt;/A&gt; permettant le support de PHP directement au sein de Visual Studio. A vous le support abouti de l’IntelliSense, des points d’arrêt pour le debugging facile et de la gestion du source code par TFS ! &lt;/P&gt;
&lt;P&gt;Pour en savoir davantage, je vous conseille 2 pointeurs:&lt;/P&gt;
&lt;P&gt;1 – la &lt;FONT color=#800040&gt;&lt;STRONG&gt;vidéo de notre plénière des TechDays 2009&lt;/STRONG&gt;&lt;/FONT&gt; (&lt;A href="http://www.microsoft.com/france/vision/mstechdays09/" mce_href="http://www.microsoft.com/france/vision/mstechdays09/"&gt;Plénière Jour 1&lt;/A&gt;) où mon collègue &lt;A href="http://blogs.msdn.com/pierlag" mce_href="http://blogs.msdn.com/pierlag"&gt;Pierre Lagarde&lt;/A&gt; vous faisait une démonstration du produit en action. C’est l’une des 1ères démonstrations. &lt;/P&gt;
&lt;P&gt;2 –&lt;FONT color=#800040&gt;&lt;STRONG&gt; le coach MSDN VS.PHP&lt;/STRONG&gt;&lt;/FONT&gt; : &lt;A title=http://msdn.microsoft.com/fr-fr/vstudio/msdn.coach.vsphp.aspx href="http://msdn.microsoft.com/fr-fr/vstudio/msdn.coach.vsphp.aspx" mce_href="http://msdn.microsoft.com/fr-fr/vstudio/msdn.coach.vsphp.aspx"&gt;http://msdn.microsoft.com/fr-fr/vstudio/msdn.coach.vsphp.aspx&lt;/A&gt; où retrouverez un atelier accompagné d’une vidéo pour apprendre à maitriser l’ensemble. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Une offre commerciale sur VS.PHP en cours&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Si cet outil vous intéresse, sachez qu’il existe actuellement une offre commerciale en cours. Voici comment cela se présente. La société STR propose la vente de ce plug-in en France: &lt;A href="http://www.str.fr/" mce_href="http://www.str.fr/"&gt;http://www.str.fr/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Le produit VS.PHP coute environ 100€ mais son achat ouvre le droit à la “competitive upgrade” vous permettant d’acheter la référence suivante:&lt;/P&gt;
&lt;P&gt;Visual Studio Professional / Visual Studio Pro 2008 Win32 French UPG DVD / Developer Tools / C5E-00253 &lt;BR&gt;&lt;FONT size=1&gt;Prix constaté : ~630€&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Au lieu de cette référence classique:&lt;/P&gt;
&lt;P&gt;Visual Studio Professional /&amp;nbsp; Visual Studio Pro 2008 Win32 French DVD / Developer Tools / C5E-00251 &lt;BR&gt;&lt;FONT size=1&gt;Prix constaté : ~920€&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Soit VS+PHP à environ 730€ au lieu de VS nu à environ 920€ (attention, ce sont des prix en boite. Les prix en volume sont clairement inférieurs). Par ailleurs, ce sont des prix constatés sans aucun engagement de ma part. Contactez directement le revendeur pour avoir plus de détails si besoin. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Je pense que vous aurez compris que Microsoft ne prends pas à la légère la communauté PHP et l’immense expertise des développeurs PHP sur le marché. D’après ma brève expérience, ils existent de nombreux profiles différents de développeurs PHP, utilisant des framework différents, des outils différents, des méthodologies différentes avec des niveaux techniques différents. On retrouve en effet des développeurs “formés sur le tas” ou des passionnés faisant intensivement usage du copier/coller de code aux développeurs chevronnés adeptes du pattern MVC, de l’intégration continue, mettant en place de vrais projets industriels. On partage donc à ce niveau là une histoire commune! Dans la communauté du développement Microsoft, on passe également facilement du développeur de macros VBA formé sur le tas aux développeurs Web &lt;A href="http://blogs.msdn.com/davrous/archive/2009/04/07/une-s-rie-de-tutoriaux-avec-vid-os-sur-asp-net-mvc-disponible.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/04/07/une-s-rie-de-tutoriaux-avec-vid-os-sur-asp-net-mvc-disponible.aspx"&gt;ASP.NET MVC&lt;/A&gt; adeptes du TDD (Test Driven Development), j’en passe et des meilleurs. Bref, il existe une mixité de profiles et de talents dans les 2 communautés. Pourquoi ne pas mixer l’ensemble un peu plus? :-)&lt;/P&gt;
&lt;P&gt;Cependant, il serait mal venu de tenter de résumer l’intérêt que pourrait avoir le monde PHP à travailler avec des technologies Microsoft à travers ce simple billet. Il y a par exemple d’autres scénarios non encore traités qui sont également très intéressants comme l’utilisation de &lt;A href="http://blogs.msdn.com/davrous/archive/2009/03/20/mix09-silverlight-3-une-version-d-finitivement-majeure.aspx" mce_href="http://blogs.msdn.com/davrous/archive/2009/03/20/mix09-silverlight-3-une-version-d-finitivement-majeure.aspx"&gt;Silverlight 3&lt;/A&gt; comme couche de présentation frontale à votre site Web PHP. J’espère que nous aurons l’occasion d’en rediscuter prochainement. &lt;/P&gt;
&lt;P&gt;J’espère cependant avoir abordé certains sujets ayant attisé votre curiosité. J’attends maintenant vos retours! &lt;/P&gt;
&lt;P&gt;A bientôt. &lt;/P&gt;
&lt;P&gt;David&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9586094" width="1" height="1"&gt;</content><author><name>davrous</name><uri>http://blogs.msdn.com/members/davrous.aspx</uri></author><category term="Live" scheme="http://blogs.msdn.com/davrous/archive/tags/Live/default.aspx" /><category term="Live Mesh" scheme="http://blogs.msdn.com/davrous/archive/tags/Live+Mesh/default.aspx" /><category term="Azure" scheme="http://blogs.msdn.com/davrous/archive/tags/Azure/default.aspx" /><category term="Live FX" scheme="http://blogs.msdn.com/davrous/archive/tags/Live+FX/default.aspx" /><category term="MVC" scheme="http://blogs.msdn.com/davrous/archive/tags/MVC/default.aspx" /><category term="PHP" scheme="http://blogs.msdn.com/davrous/archive/tags/PHP/default.aspx" /><category term="VS.PHP" scheme="http://blogs.msdn.com/davrous/archive/tags/VS.PHP/default.aspx" /></entry></feed>