<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2661757067011288732</id><updated>2011-11-25T02:29:14.813-08:00</updated><title type='text'>Un blog, parmi tant d'autres...</title><subtitle type='html'>Sur ce blog on discute (sans prétention!) des technologies Microsoft. Au fil des découvertes et des envies vous pourrez trouver des billets sur des sujets variés: .NET, Silverlight, SQL Server, SSIS, SSRS, WCF,...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-5902918818803386773</id><published>2011-11-25T02:29:00.001-08:00</published><updated>2011-11-25T02:29:14.819-08:00</updated><title type='text'>SQL Server 2012 RC</title><content type='html'>&lt;p&gt;C’est avec un peu de retard, certes, mais avec beaucoup de joie que je relaye cette information: SQL Server 2012 est disponible en RC à cette adresse : &lt;a href="http://technet.microsoft.com/fr-fr/evalcenter/hh225126" target="_blank"&gt;Download Microsoft SQL Server 2012 Realease Candidate&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Enjoy !!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-5902918818803386773?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/5902918818803386773/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2011/11/sql-server-2012-rc.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/5902918818803386773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/5902918818803386773'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2011/11/sql-server-2012-rc.html' title='SQL Server 2012 RC'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-2512642290708292421</id><published>2011-01-28T05:57:00.001-08:00</published><updated>2011-01-28T05:57:10.001-08:00</updated><title type='text'>Nova4Kinect by Vertice</title><content type='html'>&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:bfb94ea8-a074-44a5-90a4-5a92436654bf" class="wlWriterEditableSmartContent"&gt;&lt;div id="9698f289-965f-4469-8ca1-af3aeefc78fd" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=82ieg_xABzs" target="_new"&gt;&lt;img src="http://lh5.ggpht.com/_oumjLG2Z2ck/TULLNDK6VqI/AAAAAAAALcg/jBDOMNIRGOQ/video5ac763877170%5B4%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('9698f289-965f-4469-8ca1-af3aeefc78fd'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/82ieg_xABzs?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/82ieg_xABzs?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-2512642290708292421?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/2512642290708292421/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2011/01/nova4kinect-by-vertice.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/2512642290708292421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/2512642290708292421'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2011/01/nova4kinect-by-vertice.html' title='Nova4Kinect by Vertice'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_oumjLG2Z2ck/TULLNDK6VqI/AAAAAAAALcg/jBDOMNIRGOQ/s72-c/video5ac763877170%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-7149069572477884578</id><published>2011-01-14T00:38:00.001-08:00</published><updated>2011-01-14T01:50:01.257-08:00</updated><title type='text'>SQL Server 2008 spatial – WP7 - Bing Maps II</title><content type='html'>&lt;h1&gt;&lt;font size="5"&gt;&lt;strong&gt;Utilisation du GeoSpatial dans SQL SERVER 2008 et interaction avec WP7 et Bing Maps – Partie2&lt;/strong&gt;&lt;/font&gt;&lt;/h1&gt;  &lt;h3&gt;&lt;a name="_Toc273947743"&gt;Introduction&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Avec l’amélioration des technologies et les nouvelles Interfaces Homme/Machine, il est intéressant de pouvoir présenter l’information sous une autre forme que la forme, historique, textuelle.&lt;/p&gt;  &lt;p&gt;Dans cet article, l’objectif est de présenter, de bout en bout, comment localiser géographiquement des données sur une carte à partir d’un mobile Windows Phone 7. Pour ce faire, nous utilisons l’API Bing Maps pour Windows Phone 7.&lt;/p&gt;  &lt;p&gt;En début d’année scolaire, j’ai rédigé un petit article. Et je n’ai jamais pris le temps de le publier. Je me suis fait violence et j’ai publié &lt;a href="http://becauseofintellisense.blogspot.com/2010/12/sql-server-2008-spatial-wp7-bing-maps.html"&gt;la première partie&lt;/a&gt; le mois dernier. Voici donc la suite.&lt;/p&gt;  &lt;p&gt;Ce deuxième volet se concentre plus sur l’interaction avec WP7 et Bing Maps.&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc273947752"&gt;Contexte&lt;/a&gt; : Comment créer une application Windows Phone 7&lt;/h3&gt;  &lt;p&gt;Nous avons une liste de points d’intérêts, classés par type, que nous souhaiterions afficher sur une carte géographique (Bing Maps).&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc273947753"&gt;Pré requis&lt;/a&gt;&lt;/h3&gt;  &lt;h5&gt;&lt;a name="_Toc273947754"&gt;Windows Phone Developer Tools&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;&lt;a href="http://developer.windowsphone.com/windows-phone-7/"&gt;http://developer.windowsphone.com/windows-phone-7/&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;h5&gt;&lt;a name="_Toc273947755"&gt;SDK Bing Maps&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=beb29d27-6f0c-494f-b028-1e0e3187e830"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=beb29d27-6f0c-494f-b028-1e0e3187e830&lt;/a&gt;&lt;/p&gt;  &lt;h5&gt;&lt;a name="_Toc273947756"&gt;Créer une clé de développement Bing Maps&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;Créer une clé de développement sur le site &lt;i&gt;Bing Maps&lt;/i&gt; grâce à votre LiveId.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.bingmapsportal.com/"&gt;https://www.bingmapsportal.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc273947757"&gt;Côté Serveur&lt;/a&gt;&lt;/h3&gt;  &lt;h5&gt;&lt;a name="_Toc273947758"&gt;L’accès aux données : EF4&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;Entity Framework 4 ne supportant pas le type &lt;i&gt;SqlGeography&lt;/i&gt;, il faudra absolument utiliser une version « textuelle » des points géographiques. Pour ce faire :&lt;/p&gt;  &lt;p&gt;· soit il est nécessaire de faire une conversion de données en utilisant l’instruction T-SQL &lt;b&gt;&lt;i&gt;.STAsText()&lt;/i&gt;&lt;/b&gt; (ex : &lt;i&gt;MonChamp.&lt;b&gt;STAsText()&lt;/b&gt;&lt;/i&gt;).&lt;/p&gt;  &lt;p&gt;· soit il est nécessaire de faire cohabiter à la fois la donnée sous forme géographique et à la fois la donnée sous forme de string. C’est-à-dire avoir un champ de type &lt;i&gt;geography&lt;/i&gt;, avoir un champ de type &lt;i&gt;varchar&lt;/i&gt; pour la latitude et avoir un champ de type &lt;i&gt;varchar&lt;/i&gt; pour la longitude.&lt;/p&gt;  &lt;p&gt;Dans cet article, nous avons fait le choix de passer par une vue SQL pour plusieurs raisons :&lt;/p&gt;  &lt;p&gt;· EF4 verra cette vue sous forme d’entité, ce qui facilitera son utilisation et sa manipulation entre les couches plutôt que de manipuler un « type complexe » issu d’une procédure stockée.&lt;/p&gt;  &lt;p&gt;· On ne duplique pas la donnée de type &lt;i&gt;geography&lt;/i&gt;. On ne fait que la convertir.&lt;/p&gt;  &lt;p align="left"&gt;CREATE VIEW [dbo].[v_PointInteret]    &lt;br /&gt;AS     &lt;br /&gt;SELECT ID, osm_id, name, type, Position_Geo.STAsText() AS Position_Geo     &lt;br /&gt;FROM dbo.PointInteret&lt;/p&gt;  &lt;p&gt;Avant de créer le modèle de données EF4, nous allons créer le projet qui contiendra ce modèle.&lt;/p&gt;  &lt;p&gt;1. Créer un projet du type &lt;i&gt;WCF Service Application&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;2. Créer un répertoire &lt;i&gt;Data et a&lt;/i&gt;jouter un nouvel élément au projet de type ADO.NET Entity Data Model :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oumjLG2Z2ck/TTAb2S9Z-9I/AAAAAAAALZU/ATpwzDI76Lo/s1600-h/image%5B1%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oumjLG2Z2ck/TTALFUPA6uI/AAAAAAAALZY/3aLcT6PkOtw/image_thumb.png?imgmax=800" width="551" height="412" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_oumjLG2Z2ck/TTALGcM8E_I/AAAAAAAALTs/hYWEUPdUdXo/s1600-h/image%5B90%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oumjLG2Z2ck/TTALHXzxDGI/AAAAAAAALT4/r1wOmi8nz6Q/image_thumb%5B46%5D.png?imgmax=800" width="471" height="440" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oumjLG2Z2ck/TTALIJyvpJI/AAAAAAAALUA/fhHn5fdkrqo/s1600-h/image%5B91%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oumjLG2Z2ck/TTALIrG_tII/AAAAAAAALUE/5qKxpaVvOhI/image_thumb%5B47%5D.png?imgmax=800" width="470" height="439" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oumjLG2Z2ck/TTALJFskEJI/AAAAAAAALUM/1tp431EF_MI/s1600-h/image%5B92%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_oumjLG2Z2ck/TTALKLxDyeI/AAAAAAAALUU/EqzHlGNEcco/image_thumb%5B48%5D.png?imgmax=800" width="474" height="435" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_oumjLG2Z2ck/TTALK4LC-_I/AAAAAAAALZg/2NRadQiTnBY/s1600-h/image13%5B1%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oumjLG2Z2ck/TTALLUAUE3I/AAAAAAAALZo/imoHiPOj6LM/image13_thumb.png?imgmax=800" width="571" height="265" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h5&gt;&lt;a name="_Toc273947759"&gt;La couche métier et service : WCF Data Services&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;1. Une fois le modèle de données implémenté, il va falloir ajouter un élément de type &lt;i&gt;WcfDataService&lt;/i&gt; au projet.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oumjLG2Z2ck/TTALME4W2II/AAAAAAAALUo/LroacX4ENLw/s1600-h/image%5B94%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oumjLG2Z2ck/TTALNGUu4lI/AAAAAAAALU4/VpJvvxnPKPc/image_thumb%5B50%5D.png?imgmax=800" width="476" height="351" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. Supprimer l’élément &lt;i&gt;Service1.svc&lt;/i&gt; de type &lt;i&gt;WCF&lt;/i&gt; &lt;i&gt;Service&lt;/i&gt; créé par défaut lors de la création du projet. &lt;/p&gt;  &lt;p&gt;3. Et renommer le fichier IService1.cs en IServicePOIViewer.cs.&lt;/p&gt;  &lt;p&gt;Cela doit donner l’arborescence suivante :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oumjLG2Z2ck/TTALNugqeBI/AAAAAAAALU8/r7xz9hBVPvk/s1600-h/image%5B95%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oumjLG2Z2ck/TTALOHgJ14I/AAAAAAAALVI/i0Ocr1NN92I/image_thumb%5B51%5D.png?imgmax=800" width="316" height="295" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. Nous allons maintenant implémenter le service en écrivant le code suivant dans le fichier &lt;i&gt;WcfDataServicePOIViewer.svc.cs&lt;/i&gt; :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oumjLG2Z2ck/TTALOvkF6gI/AAAAAAAALZw/PE1udHZ9SGs/s1600-h/image23%5B1%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oumjLG2Z2ck/TTALPaVXkKI/AAAAAAAALZ4/ejAM3PtnGRI/image23_thumb.png?imgmax=800" width="573" height="452" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A la ligne 12, nous avons donné le type de notre &lt;i&gt;DataModel&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;Aux lignes 17 et 18, nous affectons des droits d’accès aux ressources exposées. Ici, nous donnons des droits sur tous les &lt;i&gt;EntitySet&lt;/i&gt; et toutes les &lt;i&gt;opérations de service&lt;/i&gt; grâce aux « * » ;&lt;/p&gt;  &lt;p&gt;A la ligne 23, nous définissons une opération de service. Une &lt;i&gt;opération de service&lt;/i&gt; est une méthode exposable via un service &lt;i&gt;WCF Data Services&lt;/i&gt;. &lt;/p&gt;  &lt;p&gt;&lt;i&gt;« Les opérations de service sont annotées par l'attribut [&lt;b&gt;WebGet&lt;/b&gt;] pour celles adressables via une requête HTTP GET et par l'attribut [&lt;b&gt;WebInvoke&lt;/b&gt;] pour celles adressables via une requête HTTP POST.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Des paramètres de type simple uniquement peuvent être spécifiés pour les opérations de service. Celles-ci peuvent retourner &lt;b&gt;void&lt;/b&gt; (&lt;b&gt;Nothing&lt;/b&gt; en VB.NET), &lt;b&gt;IEnumerable&lt;/b&gt;, &lt;b&gt;IQueryable&lt;/b&gt;, une entité du modèle de donnée ou un type primitif. Retourner &lt;b&gt;IQueryable&lt;/b&gt; permet de supporter des options de requête (pagination, filtre, etc.) et de naviguer via les propriétés de navigation des entités retournées. »&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Source :&lt;/i&gt; &lt;a href="http://badger.developpez.com/tutoriels/dotnet/odata-wcf-data-services/"&gt;&lt;i&gt;http://badger.developpez.com/tutoriels/dotnet/odata-wcf-data-services/&lt;/i&gt;&lt;/a&gt;&lt;i&gt; &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;5. Nous allons maintenant modifier le code du fichier &lt;i&gt;IServicePOIViewer.cs&lt;/i&gt; pour définir le contrat de l’opération de service créée.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_oumjLG2Z2ck/TTALQC_VKbI/AAAAAAAALVk/3ac8Idzpg7c/s1600-h/image%5B97%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oumjLG2Z2ck/TTALQ_IHS4I/AAAAAAAALVs/OMBcErMcb34/image_thumb%5B53%5D.png?imgmax=800" width="471" height="424" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;6. Vérifier la bonne marche du service :    &lt;br /&gt;&lt;a href="http://localhost/BSE.POIViewer.Service/WcfDataServicePOIViewer.svc/Types"&gt;http://localhost/BSE.POIViewer.Service/WcfDataServicePOIViewer.svc/Types&lt;/a&gt; &lt;a href="http://localhost/BSE.POIViewer.Service/WcfDataServicePOIViewer.svc/GetPOIs?typeOfPOI='zoo"&gt;http://localhost/BSE.POIViewer.Service/WcfDataServicePOIViewer.svc/GetPOIs?typeOfPOI='zoo&lt;/a&gt;'     &lt;br /&gt;Pour plus de détails sur ce type d’URL : &lt;a href="http://msdn.microsoft.com/fr-fr/library/dd728279.aspx"&gt;http://msdn.microsoft.com/fr-fr/library/dd728279.aspx&lt;/a&gt; .&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc273947760"&gt;Côté Client&lt;/a&gt;&lt;/h3&gt;  &lt;h5&gt;&lt;a name="_Toc273947761"&gt;Silverlight for Windows Phone 7&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;1. Ajouter un projet du type &lt;i&gt;Windows Phone List Application&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oumjLG2Z2ck/TTALRQWtAEI/AAAAAAAALZ8/enLW3OJ57Ho/s1600-h/image33%5B1%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oumjLG2Z2ck/TTALSS9TXyI/AAAAAAAALaI/zk9pSqlu3lg/image33_thumb.png?imgmax=800" width="514" height="384" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. Ajouter les références suivantes au projet :&lt;/p&gt;  &lt;p&gt;· Microsoft.Maps.MapControl.Common.dll&lt;/p&gt;  &lt;p&gt;· Microsoft.Maps.MapControl.dll&lt;/p&gt;  &lt;p&gt;· System.Windows.Browser.dll&lt;/p&gt;  &lt;p&gt;· System.Data.Services.Client.dll&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oumjLG2Z2ck/TTALTMaOADI/AAAAAAAALaQ/g4t8K-pavsw/s1600-h/image37%5B1%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_oumjLG2Z2ck/TTALUIUDT4I/AAAAAAAALaY/hlLnHZjFL08/image37_thumb.png?imgmax=800" width="582" height="193" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. Créer un répertoire « Classes » dans lequel nous mettrons les différentes classes que nous créerons.&lt;/p&gt;  &lt;p&gt;4. Générer le proxy client du service :    &lt;br /&gt;&lt;i&gt;DataSvcutil.exe /uri:http://localhost/BSE.POIViewer.Service/WcfDataServicePOIViewer.svc/ /DataServiceCollection /Version:2.0 /out:C:\wcf\WcfDataServicePOIViewer.cs      &lt;br /&gt;(DataSvcutil.exe se situe dans C:\Windows\Microsoft.NET\Framework\v4.0.30319)&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;5. Ajouter la classe générée au projet.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oumjLG2Z2ck/TTALU8nxaVI/AAAAAAAALWU/z-mx3Oq2kvQ/s1600-h/image%5B101%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_oumjLG2Z2ck/TTALVQhuGbI/AAAAAAAALWk/9Qgy9FoyugI/image_thumb%5B57%5D.png?imgmax=800" width="286" height="377" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;6. Le &lt;i&gt;Binding&lt;/i&gt; et le &lt;i&gt;ViewModel&lt;/i&gt; sont déjà générés. Nous allons nous appuyer dessus en le modifiant un peu pour répondre à notre besoin. &lt;/p&gt;  &lt;p&gt;7. Créer la classe &lt;i&gt;ItemLocation&lt;/i&gt;: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oumjLG2Z2ck/TTAcCTEb0OI/AAAAAAAALag/6RJNNkjg-A0/s1600-h/image%5B5%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oumjLG2Z2ck/TTAcD_zhQpI/AAAAAAAALak/jbaCITenCXs/image_thumb%5B2%5D.png?imgmax=800" width="568" height="291" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;8. Ouvrir le fichier &lt;i&gt;MainViewModel&lt;/i&gt;.&lt;i&gt;cs &lt;/i&gt;et supprimer la méthode &lt;i&gt;SampleMethod()&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;9. Renommer la propriété &lt;i&gt;sampleProperty&lt;/i&gt; en &lt;i&gt;SelectedTypeOfPOI&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;10. Créer la propriété privée suivante :    &lt;br /&gt;private POIViewerDataModelcnx _context;&lt;/p&gt;  &lt;p&gt;11. Créer la collection suivante :    &lt;br /&gt;public ObservableCollection&amp;lt;ItemLocation&amp;gt; Locations { get; private set; }&lt;/p&gt;  &lt;p&gt;12. Créer la méthode suivante pour récupérer la liste des types de POI :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oumjLG2Z2ck/TTALXG92bRI/AAAAAAAALao/G7PZpLDAxus/s1600-h/image50%5B1%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oumjLG2Z2ck/TTALXqWmtyI/AAAAAAAALas/YDIhWgCDaao/image50_thumb.png?imgmax=800" width="526" height="221" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;13. Créer la méthode suivant pour vider la collection &lt;i&gt;Locations&lt;/i&gt; :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_oumjLG2Z2ck/TTALX3lezpI/AAAAAAAALXI/7PcCcoNsxXM/s1600-h/image%5B104%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oumjLG2Z2ck/TTALYW9_fbI/AAAAAAAALXQ/ocKdjhh5ehE/image_thumb%5B60%5D.png?imgmax=800" width="338" height="113" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;14. Créer les deux méthodes suivantes pour récupérer la liste des points d’intérêt :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oumjLG2Z2ck/TTALY1gHu7I/AAAAAAAALa4/D3eEqO4nIJg/s1600-h/image58%5B1%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oumjLG2Z2ck/TTALZRJFrEI/AAAAAAAALbA/DOTf6tYVpjs/image58_thumb.png?imgmax=800" width="534" height="263" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;La première exécute une requête. La deuxième traite le résultat de la requête obtenu de façon asynchrone.&lt;/p&gt;  &lt;p&gt;15. Remplacer le corps du constructeur &lt;i&gt;MainViewModel&lt;/i&gt;() par le suivant :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oumjLG2Z2ck/TTALaMPQ9jI/AAAAAAAALbE/Qi_hGZn_yQ0/s1600-h/image63%5B1%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_oumjLG2Z2ck/TTALame1AsI/AAAAAAAALbM/zAOthBOTYEM/image63_thumb.png?imgmax=800" width="536" height="140" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A cette étape, si vous lancez l’application, vous devriez déjà avoir une première page listant les types de point d’intérêt.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oumjLG2Z2ck/TTALa4GHWsI/AAAAAAAALX4/TiaoUyhuzqc/s1600-h/image%5B107%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oumjLG2Z2ck/TTALbTMF90I/AAAAAAAALYA/Hx4xRcR32dQ/image_thumb%5B63%5D.png?imgmax=800" width="153" height="282" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Pour éviter d’avoir des espaces entre les lignes, il suffit de mettre en commentaire la ligne 39 du fichier &lt;i&gt;MainPage.xaml&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oumjLG2Z2ck/TTALcOlnkYI/AAAAAAAALbY/sN6F6nxH8M8/s1600-h/image70%5B5%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_oumjLG2Z2ck/TTALch9p-hI/AAAAAAAALbg/xJsSqmAow4Q/image70_thumb%5B5%5D.png?imgmax=800" width="580" height="372" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A la ligne 26, vous pouvez écrire le nom de votre application dans l’attribut &lt;i&gt;Text&lt;/i&gt;. A la ligne 27, vous pouvez écrire le nom de la liste qui est affichée, dans l’attribut &lt;i&gt;Text&lt;/i&gt; également.&lt;/p&gt;  &lt;p&gt;Nous allons maintenant nous occuper de la deuxième page : la page de détails. Elle sera affichée lorsqu’on sélectionne un type de point d’intérêt.&lt;/p&gt;  &lt;p&gt;7. Pour la partie graphique, le XAML, ouvrons le fichier &lt;i&gt;DetailsPage.xaml&lt;/i&gt; et modifions le XAML pour qu’il soit identique à celui-ci :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oumjLG2Z2ck/TTAcL8MAhXI/AAAAAAAALbk/GZ2peFPoQ5A/s1600-h/image%5B9%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oumjLG2Z2ck/TTAcMjpvLiI/AAAAAAAALbs/Y3VZ-VZ4pNM/image_thumb%5B4%5D.png?imgmax=800" width="577" height="369" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A la ligne 9, nous rajoutons un lien vers &lt;i&gt;l’assembly&lt;/i&gt; fournit par &lt;i&gt;Bing Maps&lt;/i&gt; qui nous permettra d’utiliser le fameux control &lt;i&gt;Bing Maps&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;A la ligne 18, nous définissons la manière dont chaque Point d’intérêt va être affiché. Ici nous utilisons des contrôles &lt;i&gt;PushPin&lt;/i&gt; tout simple. Ce contrôle est fourni par l’API de &lt;i&gt;Bing Maps&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;A la ligne 34, nous modifions le titre de la page dans l’attribut &lt;i&gt;Text&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;A la ligne 35, nous modifions le &lt;i&gt;binding&lt;/i&gt; pour pointer vers la propriété &lt;i&gt;SelectedTypeOfPOI.&lt;/i&gt; Cela permettra de se souvenir de quel type de point d’intérêt nous avons sélectionné.&lt;/p&gt;  &lt;p&gt;Enfin, à la ligne 40, nous mettons en commentaire le &lt;i&gt;TextBlock&lt;/i&gt; qui était généré, pour insérer notre contrôle &lt;i&gt;Bing Maps&lt;/i&gt; :&lt;/p&gt;  &lt;p&gt;· L’attribut &lt;i&gt;NavigationVisibility&lt;/i&gt; permet de masquer ou d’afficher la barre à outil noire, de zoom et de déplacement sur la carte.&lt;/p&gt;  &lt;p&gt;· L’attribut &lt;i&gt;Mode&lt;/i&gt; permet de définir le type de vue que l’on souhaite avoir en fond de carte : vue du relief, nom des villes et routes, ect…&lt;/p&gt;  &lt;p&gt;· L’attribut &lt;i&gt;Center&lt;/i&gt; permet de positionner la vue d’arrivée sur la carte. Ici nous ciblons la France. &lt;/p&gt;  &lt;p&gt;· L’attribut &lt;i&gt;ZoomLevel&lt;/i&gt; permet de zoomer sur la France plutôt que de rester trop élevé dans la vue de la carte.&lt;/p&gt;  &lt;p&gt;· L’attribut &lt;i&gt;CredentialProvider&lt;/i&gt; doit contenir la clé de développement que vous avez précédemment créée sur le site de &lt;i&gt;Bing Maps&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;A la ligne 44, nous affectons le &lt;i&gt;binding&lt;/i&gt; à la collection des objets de type &lt;i&gt;ItemLocation&lt;/i&gt; du ViewModel en spécifiant que le rendu devait se faire grâce au template &lt;i&gt;POITemplate.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oumjLG2Z2ck/TTALfLwAuxI/AAAAAAAALb0/z21X40hP7v0/s1600-h/image78%5B1%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oumjLG2Z2ck/TTALfg5UZlI/AAAAAAAALb4/xRWEs5dfgYs/image78_thumb.png?imgmax=800" width="535" height="249" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;8. Pour le code de la page, modifiez l’évènement &lt;i&gt;OnNavigatedTo&lt;/i&gt; :&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Rappel&lt;/b&gt; : Dans cet article, nous nous appuyons au maximum sur ce qui est généré.&lt;/p&gt;  &lt;p&gt;Vous devriez maintenant voir apparaitre une liste de point d’intérêt sur une carte de la France :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oumjLG2Z2ck/TTALg4nVNwI/AAAAAAAALcE/fMB5wkZF2XQ/s1600-h/image83%5B1%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oumjLG2Z2ck/TTALhXP0gmI/AAAAAAAALcM/Z5X5irMRlGI/image83_thumb.png?imgmax=800" width="248" height="479" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc273947762"&gt;Axe d’améliorations&lt;/a&gt;&lt;/h3&gt; Bien entendu, il ne s’agit ici que d’un article décrivant pas à pas comment faire de l’affichage géospatial sur Windows Phone 7 en utilisant &lt;i&gt;Bing Maps&lt;/i&gt;. Les aspects, architecture de la solution, ergonomie, fonctionnalités, ect, peuvent être nettement améliorés.   &lt;h3&gt;&lt;a name="_Toc273947763"&gt;Remerciements&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Je tiens à remercier Lionel et Franck pour leur aide dans la réalisation du prototype de cet article.    &lt;br /&gt;Lionel LIMOZIN &lt;a href="http://www.paslatek.net/"&gt;http://www.paslatek.net/&lt;/a&gt;&amp;#160; &lt;br /&gt;Franck LIZZI &lt;a href="http://dotnet.over-blog.fr/"&gt;http://dotnet.over-blog.fr/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc273947764"&gt;Pour aller plus loin…&lt;/a&gt;&lt;/h3&gt;  &lt;h5&gt;&lt;a name="_Toc273947765"&gt;Bibliographie&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/dp/1430229799?tag=amazedsasnetj-20&amp;amp;camp=213761&amp;amp;creative=393545&amp;amp;linkCode=bpl&amp;amp;creativeASIN=1430229799&amp;amp;adid=1EEYRW59Q9NSVCPYRE4B&amp;amp;"&gt;Pro Silverlight 4 in C#&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;a href="http://www.amazon.com/Entity-Framework-Experts-Voice-NET/dp/159059990X/ref=sr_1_2?s=books&amp;amp;ie=UTF8&amp;amp;qid=1283942891&amp;amp;sr=1-2"&gt;Pro Entity Framework 4.0&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;a href="http://www.amazon.com/Programming-Entity-Framework-Building-Centric/dp/0596807260/ref=sr_1_3?s=books&amp;amp;ie=UTF8&amp;amp;qid=1283942891&amp;amp;sr=1-3"&gt;Programming Entity Framework&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;a href="http://www.amazon.com/dp/1449388361?tag=amazedsasnetj-20&amp;amp;camp=213761&amp;amp;creative=393545&amp;amp;linkCode=bpl&amp;amp;creativeASIN=1449388361&amp;amp;adid=017KD5RR0NB3C81C4RXJ&amp;amp;"&gt;Learning Windows Phone Programming&lt;/a&gt;&lt;/p&gt;  &lt;h5&gt;&lt;a name="_Toc273947766"&gt;Webographie&lt;/a&gt;&lt;/h5&gt;  &lt;h6&gt;&lt;a name="_Toc273947768"&gt;WCF Data Services&lt;/a&gt;     &lt;br /&gt;&lt;/h6&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/cc668792.aspx"&gt;http://msdn.microsoft.com/fr-fr/library/cc668792.aspx&lt;/a&gt;&lt;/p&gt;  &lt;h6&gt;&lt;a name="_Toc273947769"&gt;Windows Phone 7&lt;/a&gt;     &lt;br /&gt;&lt;/h6&gt;  &lt;p&gt;&lt;a href="http://developer.windowsphone.com/windows-phone-7/"&gt;http://developer.windowsphone.com/windows-phone-7/&lt;/a&gt;&lt;/p&gt;  &lt;h6&gt;&lt;a name="_Toc273947770"&gt;Bing Maps&lt;/a&gt;&lt;/h6&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/maps/"&gt;http://www.microsoft.com/maps/&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff941093(VS.92).aspx"&gt;http://msdn.microsoft.com/en-us/library/ff941093(VS.92).aspx&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;a href="http://www.microsoft.com/maps/isdk/silverlight/#MapControlInteractiveSdk.Tutorials.ShowMap.ShowMapWithCulture"&gt;http://www.microsoft.com/maps/isdk/silverlight/#MapControlInteractiveSdk.Tutorials.ShowMap.ShowMapWithCulture&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-7149069572477884578?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/7149069572477884578/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2011/01/sql-server-2008-spatial-wp7-bing-maps.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/7149069572477884578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/7149069572477884578'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2011/01/sql-server-2008-spatial-wp7-bing-maps.html' title='SQL Server 2008 spatial – WP7 - Bing Maps II'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_oumjLG2Z2ck/TTALFUPA6uI/AAAAAAAALZY/3aLcT6PkOtw/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-1832388129587860822</id><published>2010-11-29T06:30:00.000-08:00</published><updated>2011-01-14T00:37:26.159-08:00</updated><title type='text'>SQL Server 2008 spatial – WP7 - Bing Maps I</title><content type='html'>&lt;h2&gt;Utilisation du GeoSpatial dans SQL SERVER 2008 et interaction avec WP7 et Bing Maps – Partie1&lt;/h2&gt;  &lt;h3&gt;&lt;a name="_Toc273947743"&gt;Introduction&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Avec l’amélioration des technologies et les nouvelles Interfaces Homme/Machine, il est intéressant de pouvoir présenter l’information sous une autre forme que la forme, historique, textuelle.&lt;/p&gt;  &lt;p&gt;Dans cet article, l’objectif sera de présenter, de bout en bout, comment localiser géographiquement des données sur une carte à partir d’un mobile Windows Phone 7. Pour ce faire, nous utiliserons l’API Bing Maps pour Windows Phone 7.&lt;/p&gt;  &lt;p&gt;En début d’année scolaire, j’ai rédigé un petit article. Et je n’ai jamais pris le temps de le publier. Voici chose faite avec cette première partie.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc273947745"&gt;Où se trouvent les données géographiques ?&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Pour les données géographiques, il existe plusieurs possibilités dépendantes en partie de votre besoin:&lt;/p&gt;  &lt;p&gt;· Soit il s’agit d’une base de données métier, dans laquelle vous avez déjà des données géographiques au format texte. La plupart du temps, il s’agit de deux colonnes (Latitude et longitude) au format &lt;i&gt;varchar&lt;/i&gt;. Il vous suffira donc de créer une colonne de type &lt;i&gt;geography&lt;/i&gt; et de renseigner celle-ci à l’aide des colonnes textes en faisant une conversion. Les étapes nécessaires pour effectuer cette conversion sont présentées au chapitre &lt;b&gt;&lt;i&gt;Comment convertir ses latitudes/longitudes en type geography&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· Soit il s’agit d’une base dans laquelle vous avez déjà des données géographiques, mais vous souhaitez pouvoir superposer à ces données des territoires par exemple. Ceci afin de mieux visualiser vos données sur des fonds de cartes notamment. Les étapes nécessaires pour réaliser ce besoin sont présentées au chapitre &lt;b&gt;&lt;i&gt;Comment importer des données géographiques externes?&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc273947746"&gt;&lt;/a&gt;&lt;a name="_Ref271712542"&gt;Comment convertir ses latitudes/longitudes en type &lt;i&gt;geography&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;/i&gt;&lt;/h3&gt;  &lt;p&gt;Le système géodésique le plus utilisé dans le monde est le WGS 84 (World Geodesic System of 1984). Ce système permet de placer des coordonnées sur le globe terrestre. Pour qu’un point puisse être placé de façon présente en utilisant ce système, il doit avoir un format bien particulier.&lt;/p&gt;  &lt;p&gt;L’exemple suivant part du principe que les coordonnées géographiques qui sont à notre disposition sont au format dit « décimal ».&lt;/p&gt;  &lt;p&gt;Etape1 : Ajouter la colonne de type &lt;i&gt;geography&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;ALTER TABLE [dbo].[AGENCE] ADD [Position_Geo] GEOGRAPHY&lt;/p&gt;  &lt;p&gt;Etape 2 : Alimenter cette colonne&lt;/p&gt;  &lt;p&gt;Dans la vraie vie, les latitudes et longitudes ne sont jamais toutes renseignées correctement. Il faut donc faire attention à ne pas prendre les champs NULL par exemple. Au-delà des données NULL, il faudra faire attention à tous les enregistrements pour lesquels il y a une faute de frappe, etc.…&lt;/p&gt;  &lt;p&gt;Exemple de données telles qu’on peut les voir chez un client :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oumjLG2Z2ck/TQd7yZV-R6I/AAAAAAAALPw/0nLPzyMtiMw/s1600-h/image%5B2%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oumjLG2Z2ck/TQd7y_6yLHI/AAAAAAAALP0/oGmmKyDqlpY/image_thumb.png?imgmax=800" width="203" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Pour cet exemple la requête permettant d’alimenter la colonne &lt;i&gt;Position&lt;/i&gt;_Geo sera la suivante :&lt;/p&gt;  &lt;p&gt;UPDATE [dbo].[AGENCE]&lt;/p&gt;  &lt;p&gt;SET [POSITION_GEO] = geography::STPointFromText('POINT(' + CAST([LONGITUDE] AS VARCHAR(20)) + ' ' + CAST([LATITUDE] AS VARCHAR(20)) + ')', 4326)&lt;/p&gt;  &lt;p&gt;where LONGITUDE is not null&lt;/p&gt;  &lt;p&gt;and LONGITUDE &amp;lt;&amp;gt; ''&lt;/p&gt;  &lt;p&gt;and LATITUDE is not null&lt;/p&gt;  &lt;p&gt;and LATITUDE &amp;lt;&amp;gt; ''&lt;/p&gt;  &lt;p&gt;and LATITUDE like '%.%'&lt;/p&gt;  &lt;p&gt;and LONGITUDE like '%.%'&lt;/p&gt;  &lt;p&gt;and LONGITUDE not like '%E9%'&lt;/p&gt;  &lt;p&gt;and LONGITUDE not like '%''%'&lt;/p&gt;  &lt;p&gt;and LONGITUDE not like '%°%'&lt;/p&gt;  &lt;p&gt;and LATITUDE not like '%:%'&lt;/p&gt;  &lt;p&gt;Dans cette requête la clause WHERE nous permet de ne sélectionner que les lignes dont les coordonnées sont:&lt;/p&gt;  &lt;p&gt;· Différentes de NULL&lt;/p&gt;  &lt;p&gt;· Différentes de vide&lt;/p&gt;  &lt;p&gt;· Notées sous forme décimales et non DMS (Degrés Minutes Secondes). Si vous avez des coordonnées sous cette forme &lt;i&gt;43°16'56.70&amp;quot;N , 5°36'7.45&amp;quot;E&lt;/i&gt;, il faut alors les convertir préalablement au format « décimal » en appliquant la règle de calcul suivante :     &lt;br /&gt;Degrés + (Minutes / 60) + (Secondes / 3600) = Degrés sous forme décimale&lt;/p&gt;  &lt;p&gt;Etape 3 : Le résultat&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oumjLG2Z2ck/TQd7zjh6nfI/AAAAAAAALP4/fZvZnn5b3Jw/s1600-h/image%5B7%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oumjLG2Z2ck/TQd70qdR99I/AAAAAAAALP8/YqV16nH8FS0/image_thumb%5B3%5D.png?imgmax=800" width="396" height="254" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notez que le format &lt;i&gt;geography&lt;/i&gt; stocke les données sous forme binaire.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc273947747"&gt;&lt;/a&gt;&lt;a name="_Ref271712622"&gt;Comment importer des données géographiques externes?&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Il existe un certain nombre de sources qui mettent à disposition des données géographiques sous forme de &lt;i&gt;shapefile&lt;/i&gt;. Un &lt;i&gt;shapefile&lt;/i&gt; est un format de fichier issu du monde des Systèmes d'Informations Géographiques (SIG) contenant toute l'information liée à la géométrie des objets décrits, qui peuvent être des points, des lignes ou des polygones.&lt;/p&gt;  &lt;p&gt;Shape2SQL est un outil gratuit permettant d’importer facilement dans une base MS SQL Server 2008 ce type d’information géographique : &lt;a href="http://www.sharpgis.net/page/Shape2SQL.aspx"&gt;http://www.sharpgis.net/page/Shape2SQL.aspx&lt;/a&gt; .&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oumjLG2Z2ck/TQd71ck7ErI/AAAAAAAALQA/GLYQ7ISpaKQ/s1600-h/image%5B11%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oumjLG2Z2ck/TQd7182ICvI/AAAAAAAALQE/z7tZ5vJ3bAw/image_thumb%5B5%5D.png?imgmax=800" width="355" height="323" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Pour réaliser cet article nous nous sommes basés sur un &lt;i&gt;shapefile&lt;/i&gt; contenant des points d’intérêts (parc, zoo, restaurant,…). Ce &lt;i&gt;shapefile&lt;/i&gt; peut être téléchargé depuis la page suivante : &lt;a href="http://www.mapcruzin.com/free-france-arcgis-maps-shapefiles.htm"&gt;http://www.mapcruzin.com/free-france-arcgis-maps-shapefiles.htm&lt;/a&gt;. Les données ont été importées en utilisant l’outil &lt;i&gt;Shape2SQL&lt;/i&gt;. La table issue de cet import est la suivante :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oumjLG2Z2ck/TQd72eGSzCI/AAAAAAAALQI/XxH9jNiSV_E/s1600-h/image%5B14%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oumjLG2Z2ck/TQd7270ukDI/AAAAAAAALQM/L3zkF8t-ClE/image_thumb%5B6%5D.png?imgmax=800" width="244" height="126" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Une autre table a été créée pour les besoins de l’article : une table &lt;i&gt;Type&lt;/i&gt;, qui contient l’ensemble des types de point d’intérêt possible.&lt;/p&gt;  &lt;p&gt;CREATE TABLE [dbo].[Type](&lt;/p&gt;  &lt;p&gt;[ID] [int] IDENTITY(1,1) NOT NULL,&lt;/p&gt;  &lt;p&gt;[Libelle] [varchar](100) NULL&lt;/p&gt;  &lt;p&gt;) ON [PRIMARY]&lt;/p&gt;  &lt;p&gt;INSERT INTO [dbo].[Type]&lt;/p&gt;  &lt;p&gt;select distinct Type from dbo.PointInteret order by Type&lt;/p&gt;  &lt;p&gt;Plusieurs sites mettent à disposition des ressources contenant différent type de données (géographiques, topographiques, etc…), parfois gratuitement. Mais ce n’est pas l’objet de cet article.&lt;/p&gt;  &lt;p&gt;Autre exemple de ressource&lt;i&gt; &lt;/i&gt;disponible, la carte du monde représentant les frontières des pays du globe : &lt;a href="http://www.beginningspatial.com/world_borders_dataset"&gt;http://www.beginningspatial.com/world_borders_dataset&lt;/a&gt; . Cette fois-ci, c’est un fichier plat contenant les instructions SQL permettant de générer une table représentant les frontières de tous les pays du monde. Nous nous servirons de ces données dans notre exemple au chapitre &lt;b&gt;&lt;i&gt;Comment requêter les données géographiques ?&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc273947748"&gt;&lt;/a&gt;&lt;a name="_Ref271809864"&gt;Comment requêter les données géographiques ?&lt;/a&gt;&lt;/h3&gt;  &lt;h5&gt;&lt;a name="_Toc273947749"&gt;Les types de données (lignes, points, polygones…)&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;&lt;b&gt;Point&lt;/b&gt; : Un point est une représentation exacte, définie grâce à un X et un Y. Il peut également y avoir une élévation Z et une mesure M.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;LineString&lt;/b&gt; : Segment représentant le chemin le plus court entre deux ou plusieurs points. Si le point de départ est le même que le point d’arrivée, on parle de « ring ».&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Polygon&lt;/b&gt; : Forme géométrique fermée, possédant une aire. Un &lt;i&gt;polygon&lt;/i&gt; peut être « creux » en son centre grâce au retranchement d’un autre polygone en son sein.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Collection&lt;/b&gt; : C’est similaire à une collection en .Net. Cela contient plusieurs instances des objets précités. Les collections &lt;i&gt;MultiPolygon&lt;/i&gt;, &lt;i&gt;MultiLineString&lt;/i&gt; et &lt;i&gt;MultiPoint&lt;/i&gt;, elles, comme leur nom l’indique, ne peuvent contenir que des objets d’un type bien particulier.&lt;/p&gt;  &lt;h5&gt;&lt;a name="_Toc273947750"&gt;Requêter&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;La requête suivante ramène tous les points d’intérêt de type zoo. On constate que les données géographiques sont stockées sous forme binaire et qu’on doit les convertir grâce aux fonctions existantes pour les rendre lisible.&lt;/p&gt;  &lt;p&gt;select *, Position_Geo.STAsText() as WKT from PointInteret where type = 'zoo'&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oumjLG2Z2ck/TQd73Sfn0wI/AAAAAAAALQQ/p8z4MnXscBU/s1600-h/image%5B19%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oumjLG2Z2ck/TQd733xvuBI/AAAAAAAALQU/5pwe9bWEnjQ/image_thumb%5B9%5D.png?imgmax=800" width="426" height="93" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Outre la vue tabulaire, SSMS propose une vue du résultat sous forme spatiale. L’onglet « Spatial Results » permet donc de visualiser le résultat sous un rendu beaucoup plus fun et sexy qu’un tableau.&lt;/p&gt;  &lt;p&gt;On peut également combiner les résultats de requêtes pour faire se superposer plusieurs résultats, à la manière de calques. Prenons par exemple la requête suivante, qui va permettre de visualiser les points d’intérêts de type zoo sur une carte géographique du monde délimitant les frontières.&lt;/p&gt;  &lt;p&gt;SELECT Position_Geo.STAsText() AS WKT FROM PointInteret WHERE type = 'zoo'&lt;/p&gt;  &lt;p&gt;UNION ALL&lt;/p&gt;  &lt;p&gt;SELECT geog FROM World_Borders&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oumjLG2Z2ck/TQd74ZM-8OI/AAAAAAAALQY/QieP3EFhiG8/s1600-h/image%5B23%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oumjLG2Z2ck/TQd74xD69zI/AAAAAAAALQc/vuxvDmwl1TI/image_thumb%5B11%5D.png?imgmax=800" width="426" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h6&gt;Les fonctions natives&lt;/h6&gt;  &lt;p&gt;Nous ne pouvons pas toutes les citer et ce n’est pas le but, mais il existe nativement des fonctions permettant de manipuler ces données géographiques afin de réaliser des opérations de :&lt;/p&gt;  &lt;p&gt;· Conversion (ex : STAsText())&lt;/p&gt;  &lt;p&gt;· Agrégation (ex: STDijoint(),STContains())&lt;/p&gt;  &lt;p&gt;· Mesure (ex: STDistance(), STLength())&lt;/p&gt;  &lt;p&gt;Par exemple la requête suivante permet de récupérer la liste des cinq zoos les plus proches du zoo de la Barben :&lt;/p&gt;  &lt;p&gt;SELECT top 5 *, Position_Geo.STAsText()AS WKT,&lt;/p&gt;  &lt;p&gt;Position_Geo.STDistance((select Position_Geo.STAsText() from PointInteret where name = 'Zoo de la Barben')) AS Distance &lt;/p&gt;  &lt;p&gt;FROM PointInteret &lt;/p&gt;  &lt;p&gt;WHERE type = 'zoo'&lt;/p&gt;  &lt;p&gt;and name &amp;lt;&amp;gt; 'Zoo de la Barben'&lt;/p&gt;  &lt;p&gt;order by 7&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc273947764"&gt;Pour aller plus loin…&lt;/a&gt;&lt;/h3&gt;  &lt;h4&gt;&lt;a name="_Toc273947765"&gt;Bibliographie&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/Beginning-Spatial-SQL-Server-2008/dp/1430218290"&gt;Beginning Spatial with SQL Server 2008&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc273947766"&gt;Webographie&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933790.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb933790.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx"&gt;http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://207.46.19.254/france/serveur/sql/donnees-geospatiales/donnees-geospatiales.mspx"&gt;http://207.46.19.254/france/serveur/sql/donnees-geospatiales/donnees-geospatiales.mspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/bb933917.aspx"&gt;http://technet.microsoft.com/en-us/library/bb933917.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-1832388129587860822?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/1832388129587860822/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/12/sql-server-2008-spatial-wp7-bing-maps.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/1832388129587860822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/1832388129587860822'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/12/sql-server-2008-spatial-wp7-bing-maps.html' title='SQL Server 2008 spatial – WP7 - Bing Maps I'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_oumjLG2Z2ck/TQd7y_6yLHI/AAAAAAAALP0/oGmmKyDqlpY/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-7963256143911695269</id><published>2010-10-19T07:54:00.001-07:00</published><updated>2010-10-19T07:54:53.878-07:00</updated><title type='text'>Windows Phone 7 Camp</title><content type='html'>&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_oumjLG2Z2ck/TL2xOeEjWPI/AAAAAAAALPc/AzgVCH5CX-w/s1600-h/Phone7Bewise4.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Phone7Bewise" border="0" alt="Phone7Bewise" src="http://lh3.ggpht.com/_oumjLG2Z2ck/TL2xPLEFT1I/AAAAAAAALPg/mKxRQpWVOC4/Phone7Bewise_thumb2.jpg?imgmax=800" width="301" height="453" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-7963256143911695269?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/7963256143911695269/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/10/windows-phone-7-camp.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/7963256143911695269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/7963256143911695269'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/10/windows-phone-7-camp.html' title='Windows Phone 7 Camp'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_oumjLG2Z2ck/TL2xPLEFT1I/AAAAAAAALPg/mKxRQpWVOC4/s72-c/Phone7Bewise_thumb2.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-6027628175982447178</id><published>2010-06-17T04:49:00.001-07:00</published><updated>2010-12-14T08:18:25.845-08:00</updated><title type='text'>SSRS – Paramètres Dynamiques Code Custom</title><content type='html'>&lt;h2&gt;Reporting Services -Paramètres dynamiques issus d’un Code Custom&lt;/h2&gt;  &lt;p&gt;Pour définir les valeurs disponibles d’un paramètre dans un rapport, Reporting Services 2008 ne vous propose que de définir des valeurs fixes ou de récupérer le résultat d’une requête sur une source de données.&lt;/p&gt;  &lt;p&gt;Néanmoins, si vous avez du code métier un peu “touchy” qui lui seul serait capable de remonter la liste des paramètres disponibles, grâce aux expressions, vous pouvez le faire.&lt;/p&gt;  &lt;p&gt;Pour ce faire:&lt;/p&gt;  &lt;p&gt;Votre méthode .Net de votre code custom doit renvoyer une chaine de caractère correctement formatée pour pouvoir être “splittée” par la suite.&lt;/p&gt;  &lt;p&gt;public string GetListeAgence()    &lt;br /&gt;{     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return &amp;quot;test,test1,test2&amp;quot;;     &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;Ensuite via les propriétés du paramètre ciblé, il vous suffit de créé une expression qui appelle votre méthode et split la chaine obtenue.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_oumjLG2Z2ck/TBoLv1QEZAI/AAAAAAAALOc/cVknT-EQpsA/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oumjLG2Z2ck/TBoLwj95dhI/AAAAAAAALOg/0Q3l0FSzpn4/image_thumb.png?imgmax=800" width="244" height="202" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;=Split(Code.MyCustomCodeNonSigne.GetListeAgence(),&amp;quot;,&amp;quot;) &lt;/p&gt;  &lt;p&gt;Et voila le résultat:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oumjLG2Z2ck/TBoLxJbOjhI/AAAAAAAALOk/2cQQ44GuSG8/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_oumjLG2Z2ck/TBoLxiCP2qI/AAAAAAAALOo/eDzenjgsVhU/image_thumb%5B1%5D.png?imgmax=800" width="244" height="134" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-6027628175982447178?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/6027628175982447178/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/06/ssrs-parametres-dynamiques-issus-de.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/6027628175982447178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/6027628175982447178'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/06/ssrs-parametres-dynamiques-issus-de.html' title='SSRS – Paramètres Dynamiques Code Custom'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_oumjLG2Z2ck/TBoLwj95dhI/AAAAAAAALOg/0Q3l0FSzpn4/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-6093749425778556336</id><published>2010-05-19T09:22:00.000-07:00</published><updated>2011-03-24T04:39:56.753-07:00</updated><title type='text'>SSRS – DLL Custom Code : Référencer et Utiliser</title><content type='html'>&lt;h2&gt;Reporting Services – Référencer et utiliser une DLL de code custom&lt;/h2&gt;  &lt;p&gt;A partir des propriétés d’un rapport, Reporting Services vous permet d’écrire des fonctions, en VB.NET uniquement pour le moment.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oumjLG2Z2ck/S_OrwaD0UvI/AAAAAAAALOE/co2TLS8jHns/s1600-h/image%5B21%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_oumjLG2Z2ck/S_OrxKXIcZI/AAAAAAAALOI/Bm46dQND5sk/image_thumb%5B9%5D.png?imgmax=800" width="434" height="342" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Mais Reporting Services, permet aussi, fort heureusement, de référencer des assemblys métier afin d’en exploiter les fonctionnalités. &lt;/p&gt;  &lt;p&gt;Pour ce faire, il suffit de référencer une dll dans le rapport que vous ciblez. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oumjLG2Z2ck/TYssQbvMrsI/AAAAAAAALdo/Tnq4xNt-yr4/s1600-h/image%5B8%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oumjLG2Z2ck/TYssQ1P4QoI/AAAAAAAALds/mFDNDSV3Ka8/image_thumb%5B2%5D.png?imgmax=800" width="208" height="175" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Il vous faut également instancier un objet de votre classe que vous souhaitez utiliser. Si c’est une classe instanciable bien évidemment: pas besoin d’objet dans le cas de méthodes statiques.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Attention&lt;/u&gt; : “Class Name” = Namespace.NomDeLaClasse&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_oumjLG2Z2ck/TYssRf_ZW6I/AAAAAAAALdw/IHCtnYZYGVM/s1600-h/image%5B2%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oumjLG2Z2ck/TYssRwhsrlI/AAAAAAAALd0/X-qNK8eJxKY/image_thumb.png?imgmax=800" width="442" height="344" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Pensez à ajouter votre DLL ou dans les répertoires suivants pour pouvoir tester votre rapport sous Visual Studio et utiliser votre rapport dans Report Manager:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;C:\Program Files\Microsoft SQL Server\MSRS10.SQLSERVER2008\Reporting Services\ReportServer\bin&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Vous pouvez également déployer votre DLL dans le GAC en la signant, mais vous aurez certainement un problème droit.&lt;/p&gt;  &lt;p&gt;Il suffit ensuite d’appeler vos méthodes en utilisant les expressions (&lt;em&gt;Code.MonObjet.MaMethode()&lt;/em&gt;):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oumjLG2Z2ck/TYssSJwJQLI/AAAAAAAALd4/qQMuF9LQqSU/s1600-h/image%5B5%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oumjLG2Z2ck/TYssSkKLVPI/AAAAAAAALd8/7kKsaPDk7Ok/image_thumb%5B1%5D.png?imgmax=800" width="530" height="159" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;La colonne CustomCode contient l’expression suivante :    &lt;br /&gt;=Code.MaClasseInstanciee.Addition(Fields!ID1.Value ,Fields!ID2.Value)&lt;/p&gt;  &lt;p&gt;On additionne les colonnes ID1 et ID2. Bien entendu votre code métier sera certainement bien plus compliqué et fera certainement appel plus en profondeur aux capacité du Framework .NET.&lt;/p&gt;  &lt;p&gt;Le résultat (mes colonnes ID1 et ID2 ont des valeurs fixes. Il est donc normal que le résultat se répète) :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oumjLG2Z2ck/TYstiaAylSI/AAAAAAAALeE/5F3cMmQipgk/s1600-h/image%5B11%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oumjLG2Z2ck/TYsti4qLzTI/AAAAAAAALeI/LMsAPGJZ7ek/image_thumb%5B3%5D.png?imgmax=800" width="552" height="237" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-6093749425778556336?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/6093749425778556336/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/05/ssrs-referencer-et-utiliser-des-dll.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/6093749425778556336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/6093749425778556336'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/05/ssrs-referencer-et-utiliser-des-dll.html' title='SSRS – DLL Custom Code : Référencer et Utiliser'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_oumjLG2Z2ck/S_OrxKXIcZI/AAAAAAAALOI/Bm46dQND5sk/s72-c/image_thumb%5B9%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-2414855360450344525</id><published>2010-05-01T09:24:00.001-07:00</published><updated>2010-05-01T09:24:07.870-07:00</updated><title type='text'>Project could not be opened because Microsoft Visual C# 2008 compiler could not be created</title><content type='html'>&lt;p&gt;Si vous avez ce message d’erreur sous Visual Studio 2008 lorsque vous ouvrez une solution, il faut modifier des clés de registre pour pouvoir à nouveau ouvrir votre solution sans embuche:&lt;/p&gt;  &lt;p&gt;Il suffit de modifier toutes les clés “&lt;strong&gt;&lt;em&gt;SkipLoading&lt;/em&gt;&lt;/strong&gt;” situé dans le répertoire suivant : &lt;em&gt;&lt;strong&gt;HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Packages&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Passez leur valeur de 1 à 0.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Source&lt;/u&gt; : &lt;a title="http://social.msdn.microsoft.com/forums/en-US/Vsexpressinstall/thread/04be49aa-de6b-4f45-9a27-86e3f214a0fe/" href="http://social.msdn.microsoft.com/forums/en-US/Vsexpressinstall/thread/04be49aa-de6b-4f45-9a27-86e3f214a0fe/"&gt;http://social.msdn.microsoft.com/forums/en-US/Vsexpressinstall/thread/04be49aa-de6b-4f45-9a27-86e3f214a0fe/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-2414855360450344525?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/2414855360450344525/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/05/project-could-not-be-opened-because.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/2414855360450344525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/2414855360450344525'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/05/project-could-not-be-opened-because.html' title='Project could not be opened because Microsoft Visual C# 2008 compiler could not be created'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-6125154355991467242</id><published>2010-04-22T00:20:00.001-07:00</published><updated>2010-04-22T23:59:19.275-07:00</updated><title type='text'>SQL Server 2008 R2 RTM</title><content type='html'>&lt;p&gt;Microsoft a annoncé le 21 Avril le &lt;a href="http://www.microsoft.com/presspass/presskits/sqlserver/"&gt;lancement en version RTM&lt;/a&gt; de SQL Server 2008 R2. Néanmoins, cette nouvelle mouture ne devrait être réellement disponible via les canaux habituels de distribution Microsoft que dans quelques jours.&lt;/p&gt;  &lt;p&gt;Pour patienter : &lt;a title="http://www.sqlserverlaunch.com/" href="http://www.sqlserverlaunch.com/"&gt;http://www.sqlserverlaunch.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Pour télécharger la version Trial de SQL Server 2008 R2 RTM : &lt;a href="http://technet.microsoft.com/fr-fr/sqlserver/ee315247(en-us).aspx"&gt;Ici&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oumjLG2Z2ck/S8_86jy2IiI/AAAAAAAALNQ/cSG04rawj7U/s1600-h/SQLSERVER2008R2%5B5%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="SQL Server 2008 R2" border="0" alt="SQL Server 2008 R2" src="http://lh4.ggpht.com/_oumjLG2Z2ck/S8_87WKXYzI/AAAAAAAALNU/SmwOBZRdJbc/SQLSERVER2008R2_thumb%5B3%5D.jpg?imgmax=800" width="240" height="49" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-6125154355991467242?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/6125154355991467242/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/04/sql-server-2008-r2-rtm.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/6125154355991467242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/6125154355991467242'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/04/sql-server-2008-r2-rtm.html' title='SQL Server 2008 R2 RTM'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_oumjLG2Z2ck/S8_87WKXYzI/AAAAAAAALNU/SmwOBZRdJbc/s72-c/SQLSERVER2008R2_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-1896118086466751535</id><published>2010-04-07T23:39:00.000-07:00</published><updated>2010-04-16T04:15:36.891-07:00</updated><title type='text'>Bewise Day Conference 2010</title><content type='html'>&lt;a href="http://bse.bewise.fr/BDC2010/?f=af7fc6f4-f8f6-4a54-b489-d414ae555d2e"&gt;&lt;img style="text-align: center; margin: 0px auto 10px; width: 320px; display: block; height: 110px; cursor: hand" id="BLOGGER_PHOTO_ID_5457656900277669506" border="0" alt="" src="http://2.bp.blogspot.com/_oumjLG2Z2ck/S71-CO8CjoI/AAAAAAAALLs/8s_eqtloEXI/s320/anim_bdc_aix_small.jpg" /&gt;&lt;/a&gt;Evénement Bewise Sud Est !  &lt;br /&gt;  &lt;br /&gt;Après bientôt trois ans d'existence, Bewise Sud Est organise la première BDC sur Aix-en-Provence.  &lt;br /&gt;  &lt;p&gt;Les innovations technologiques Microsoft pour les développeurs et les IT pro présentées par les meilleurs experts de Bewise et Microsoft ! Evénement gratuit destiné aux professionnels du développement et de l'IT, aux enseignants et étudiants, venez découvrir:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;1 Session Plénière &lt;/li&gt;    &lt;li&gt;8 Sessions dédiées par technologie&lt;/li&gt;    &lt;li&gt;10 Espaces de démonstration et de discussion avec des Experts&lt;/li&gt;    &lt;li&gt;20 Experts Bewise &amp;amp; Microsoft à votre service&lt;/li&gt;    &lt;li&gt;Présentation de la table Surface de Microsoft     &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p align="center"&gt;Inscrivez-vous vite !   &lt;br /&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p align="center"&gt;&amp;gt;&amp;gt; &lt;a href="http://bse.bewise.fr/BDC2010/?f=af7fc6f4-f8f6-4a54-b489-d414ae555d2e"&gt;S'inscrire&lt;/a&gt; &amp;lt;&amp;lt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://bse.bewise.fr/BDC2010/?f=af7fc6f4-f8f6-4a54-b489-d414ae555d2e"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="MSdays_480x323" border="0" alt="MSdays_480x323" src="http://lh6.ggpht.com/_oumjLG2Z2ck/S8hGqHT1TFI/AAAAAAAALMs/uDbdNzqyQm8/MSdays_480x323%5B3%5D.jpg?imgmax=800" width="244" height="166" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/dd637688.aspx"&gt;&lt;img style="text-align: center; margin: 0px auto 10px; width: 320px; display: block; height: 310px; cursor: hand" id="BLOGGER_PHOTO_ID_5457686510569168130" border="0" alt="" src="http://1.bp.blogspot.com/_oumjLG2Z2ck/S72Y9x3qnQI/AAAAAAAALMA/mNx9MCdzBE8/s320/CarteMSDays.png" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;u&gt;Mots clés&lt;/u&gt; : Microsoft Days 2010, MS Days 2010, BDC 2010 Aix-en-Provence&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-1896118086466751535?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/1896118086466751535/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/04/bewise-day-conference-2010.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/1896118086466751535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/1896118086466751535'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/04/bewise-day-conference-2010.html' title='Bewise Day Conference 2010'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_oumjLG2Z2ck/S71-CO8CjoI/AAAAAAAALLs/8s_eqtloEXI/s72-c/anim_bdc_aix_small.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-134851877760815219</id><published>2010-02-15T06:54:00.000-08:00</published><updated>2010-02-15T07:23:01.806-08:00</updated><title type='text'>Windows Phone 7 Series</title><content type='html'>Au Mobile World Congress de Barcelone, Microsoft vient de lever le voile sur son prochain OS pour téléphone mobile : Windows Phone 7. L'innovation principale de cette nouvelle version de l'OS pour téléphone mobile est le fait de proposer l'agrégation d'information depuis plusieurs source (applications, web, services...) pour les présenter sous forme de "Hub":People, Images, Jeux, Musique, Video...&lt;br /&gt;&lt;br /&gt;Pour plus d'information: &lt;a href="http://www.windowsphone7series.com/"&gt;http://www.windowsphone7series.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-134851877760815219?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/134851877760815219/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/02/windows-phone-7-series.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/134851877760815219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/134851877760815219'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2010/02/windows-phone-7-series.html' title='Windows Phone 7 Series'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-406479737031733715</id><published>2009-07-22T07:27:00.000-07:00</published><updated>2009-07-22T07:50:16.143-07:00</updated><title type='text'>Multiple Host Header (mutiple binding) IIS 7 &amp; WCF</title><content type='html'>WCF "by design" ne supporte pas plusieurs binding sur un même site. Ce qui est génant, car on trouve très souvent plusieurs binding.... Si vous utilisez le Framework 3.5, il est assez simple de "by passer" ce problème. Coller ces lignes dans le fichier de config du service:&lt;br /&gt;&lt;br /&gt;&amp;lt;system.servicemodel&amp;gt;&lt;br /&gt;&amp;lt;servicehostingenvironment&amp;gt;&lt;br /&gt;&amp;lt;baseaddressprefixfilters&amp;gt;&lt;br /&gt;&amp;lt;add prefix=&amp;quot;http://MonSite.com:9000&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/baseaddressprefixfilters&amp;gt;&lt;br /&gt;&amp;lt;/servicehostingenvironment&amp;gt;&lt;br /&gt;&amp;lt;/system.serviceModel&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-406479737031733715?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/406479737031733715/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2009/07/multiple-host-header-mutiple-binding.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/406479737031733715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/406479737031733715'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2009/07/multiple-host-header-mutiple-binding.html' title='Multiple Host Header (mutiple binding) IIS 7 &amp; WCF'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-5439610032705110605</id><published>2009-04-09T06:41:00.000-07:00</published><updated>2009-04-09T06:55:22.035-07:00</updated><title type='text'>Bewise Day Conference 2009</title><content type='html'>Evenement Bewise Sud Ouest !&lt;br /&gt;&lt;p&gt;Les innovations technologiques Microsoft pour les développeurs et les IT pro présentées par les meilleurs experts de Bewise et Microsoft ! Evénement gratuit destiné aux professionnels du développement et de l'IT, aux enseignants et étudiants, venez découvrir:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;2 Sessions Plénières &lt;/li&gt;&lt;li&gt;8 Sessions Dédiées IT Pro et Développeurs &lt;/li&gt;&lt;li&gt;25 Espaces de démonstration &lt;/li&gt;&lt;li&gt;40 Experts Bewise &amp;amp; Microsoft &lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;Inscrivez-vous vite ! &lt;/p&gt;&lt;p align="center"&gt;&gt;&gt; &lt;a href="http://bdc2009.bewise.fr/inscription.aspx"&gt;S'inscrire&lt;/a&gt; &lt;&lt;&lt;/p&gt;&lt;a href="http://bdc2009.bewise.fr/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5322687382350423090" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 109px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_oumjLG2Z2ck/Sd37-TNzZDI/AAAAAAAAJFc/zJ4PgPPA_qU/s320/BDC2009.png" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-5439610032705110605?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/5439610032705110605/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2009/04/bewise-day-conference-2009.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/5439610032705110605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/5439610032705110605'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2009/04/bewise-day-conference-2009.html' title='Bewise Day Conference 2009'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oumjLG2Z2ck/Sd37-TNzZDI/AAAAAAAAJFc/zJ4PgPPA_qU/s72-c/BDC2009.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-2142137782418255383</id><published>2009-04-03T09:04:00.000-07:00</published><updated>2009-04-03T09:36:14.314-07:00</updated><title type='text'>Ajax History - Server Side</title><content type='html'>&lt;p class="MsoNormal"&gt;Vous utilisez des update panels pour améliorer les temps de réponses de votre site, mais vous vous rendez compte que les fonctions « page suivante » et « page précédente » de votre navigateur ne prennent pas en compte l’historique de votre navigation ? &lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;Ajax permet pourtant de gérer cet historique de navigation. Néanmoins il vous faut gérer cet historique « à la main ». C'est-à-dire qu’à chaque évenement modifiant l’état de votre page, vous devez sauvegarder les valeurs des variables vous permettant de restituer le même état de navigation, ultérieurement. &lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;Pour cela plusieurs étapes :&lt;/p&gt;&lt;ol&gt;&lt;li class="MsoNormal"&gt;Activer l’historique de navigation dans votre contrôle ScriptManager et s’abonner à l’évènement « OnNavigate »:&lt;?xml:namespace prefix = asp /&gt;&lt;asp:scriptmanager color="#ff0000"&gt;ID&lt;/span&gt;&lt;span style="color:#3366ff;"&gt;="ScriptManager1"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;EnableHistory&lt;/span&gt;&lt;span style="color:#3366ff;"&gt;="true"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;OnNavigate&lt;/span&gt;&lt;span style="color:#3366ff;"&gt;="ScriptManager1_Navigate"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#3366ff;"&gt;="server"&lt;/span&gt; /&gt;&lt;br /&gt;Sauvegarder vos valeurs grâce à la méthode « AddHistoryPoint » du contrôle « ScriptManager ».&lt;br /&gt;Ex : if (!&lt;span style="color:#3366ff;"&gt;ScriptManager1&lt;/span&gt;.IsNavigating &amp;amp;&amp;amp; IsPostBack)&lt;br /&gt;{&lt;br /&gt;ScriptManager1.AddHistoryPoint(“Var1”, &lt;span style="color:#3366ff;"&gt;MaVariable&lt;/span&gt;.ToString());&lt;br /&gt;}&lt;/li&gt;&lt;li class="MsoNormal"&gt;Cette méthode prend des couples Key/Value. Ces ensembles Key/Value sont stockés dans l’URL. Ces valeurs peuvent être sécurisées grâce à l’attribut « &lt;span style="color:#ff0000;"&gt;EnableSecureHistoryState&lt;/span&gt; » du contrôle « ScriptManager ». Si ca valeur est à « True », les paires Key/Value seront chiffrées, sinon elles seront affichées en clair dans l’URL.&lt;/li&gt;&lt;li class="MsoNormal"&gt;Déclarer et implémenter la méthode « void ScriptManager1_Navigate(object sender, HistoryEventArgs e) » :&lt;br /&gt;void ScriptManager1_Navigate(object sender, HistoryEventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;MaVariable&lt;/span&gt; = e.State[“Var1”] ;&lt;br /&gt;}&lt;br /&gt;Cette méthode permet de recharger l’état de votre page. Cette méthode est déclenchée automatiquement lorsque le ScriptManager détecte des éléments dans l’url.&lt;/li&gt;&lt;/ol&gt;&lt;p class="MsoNormal"&gt;Ce mécanisme de gestion de la navigation côté serveur est également possible côté client.&lt;/p&gt;&lt;br /&gt;&lt;/asp:scriptmanager&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-2142137782418255383?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/2142137782418255383/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2009/04/ajax-history-server-side.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/2142137782418255383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/2142137782418255383'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2009/04/ajax-history-server-side.html' title='Ajax History - Server Side'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-3017273873864909548</id><published>2009-04-01T11:02:00.001-07:00</published><updated>2009-04-02T02:15:10.780-07:00</updated><title type='text'>OBA - Office Business Application</title><content type='html'>Evènement Bewise Sud Est !&lt;br /&gt;&lt;br /&gt;Le Mercredi 08 Avril, Bewise Sud Est organise un évènement autour d'Office Business Application et VSTO:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Quelles utilisations ?&lt;/li&gt;&lt;li&gt;Quelle utilité ?&lt;/li&gt;&lt;li&gt;Avec quels outils ?&lt;/li&gt;&lt;li&gt;A partir de quel existant ?&lt;/li&gt;&lt;li&gt;Quels sont les gains envisageables pour moi ou mon entité ?&lt;/li&gt;&lt;li&gt;Avantages&lt;/li&gt;&lt;li&gt;Inconvénients&lt;/li&gt;&lt;/ul&gt;Inscriptions : &lt;a href="http://bse.bewise.fr/EvenementOBA"&gt;http://bse.bewise.fr/EvenementOBA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Profitez en, si ce sujet vous interesse... Bewise Sud Est présentera également un projet récent autour de ces technologies.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bse.bewise.fr/EvenementOBA"&gt;&lt;img id="BLOGGER_PHOTO_ID_5319787158449477938" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 109px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_oumjLG2Z2ck/SdOuPDQQ2TI/AAAAAAAAI-k/f7EAezXDNL4/s320/image003.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-3017273873864909548?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/3017273873864909548/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2009/04/oba-office-business-application.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/3017273873864909548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/3017273873864909548'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2009/04/oba-office-business-application.html' title='OBA - Office Business Application'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_oumjLG2Z2ck/SdOuPDQQ2TI/AAAAAAAAI-k/f7EAezXDNL4/s72-c/image003.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2661757067011288732.post-4201399843710991927</id><published>2009-04-01T06:00:00.000-07:00</published><updated>2009-04-01T06:03:37.076-07:00</updated><title type='text'>C'est l'ouverture !</title><content type='html'>Voici un nouveau blog, dans lequel, je l'espère, vous trouverez parfois quelques informations utiles pour vos développements autour des technologies Microsoft.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2661757067011288732-4201399843710991927?l=becauseofintellisense.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://becauseofintellisense.blogspot.com/feeds/4201399843710991927/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://becauseofintellisense.blogspot.com/2009/04/cest-louverture.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/4201399843710991927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2661757067011288732/posts/default/4201399843710991927'/><link rel='alternate' type='text/html' href='http://becauseofintellisense.blogspot.com/2009/04/cest-louverture.html' title='C&apos;est l&apos;ouverture !'/><author><name>Rouge</name><uri>http://www.blogger.com/profile/10967940149095896472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oumjLG2Z2ck/SdXd-BXhsdI/AAAAAAAAI_A/l0Fzf9VPqco/S220/me.png'/></author><thr:total>0</thr:total></entry></feed>
