﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>Wilfried Woivré &amp; .Net</title>
    <description>Derniers articles</description>
    <link>http://blog.woivre.fr</link>
    <item>
      <title>Trucs et astuces avec Windows Azure Table Storage</title>
      <description>&lt;p&gt;En ce vendredi quasiment férié…. je vous donne une petite astuce pour valider vos connexion avec le Table Storage.&lt;/p&gt;&#xD;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;Bon je suppose que vous connaissez tous la classe CloudStorageAccount, vu que le Table Storage c’est la vie. En ce moment je travaille beaucoup sur des outils génériques autour du Table Storage pour changer. J’ai donc une problématique, je dois valider que la chaine de connexion saisie par l’utilisateur est bien valide. &lt;/p&gt;&#xD;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;Alors pour rappel, il est possible de créer une instance de CloudStorageAccount de deux façons : &lt;/p&gt;&#xD;
&lt;div class="code"&gt;&#xD;
&lt;div style="font-family: 'Courier New', courier, monospace"&gt;&#xD;
&lt;div style="overflow: auto"&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; accountKey = &lt;/span&gt;&lt;span style="color: #a31515"&gt;"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; accountName = &lt;/span&gt;&lt;span style="color: #a31515"&gt;"azertyqsdfgh"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt; csa = &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CloudStorageAccount&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;StorageCredentials&lt;/span&gt;&lt;span style="color: #000000"&gt;(accountName, accountKey), &lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt; csa2 = &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CloudStorageAccount&lt;/span&gt;&lt;span style="color: #000000"&gt;.Parse(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Format(&lt;/span&gt;&lt;span style="color: #a31515"&gt;"DefaultEndpointsProtocol=https;AccountName={&lt;/span&gt;&lt;span style="color: #3cb371"&gt;0}&lt;/span&gt;&lt;span style="color: #a31515"&gt;;AccountKey={&lt;/span&gt;&lt;span style="color: #3cb371"&gt;1}&lt;/span&gt;&lt;span style="color: #a31515"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;, accountKey, accountName));&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;Le problème, c’est qu’avec cette méthode il est tout à fait possible de créer un CloudStorageAccount, mais cela ne nous dit pas s’il correspond à un vrai storage derrière, ce qui peut être problématique dans de nombreux cas. &lt;/p&gt;&#xD;
&lt;p&gt;Alors tant que Microsoft ne nous fournit pas une méthode simple de validation, il faut tout simplement réaliser une requête vers notre storage afin de savoir qu’il y a bien quelque chose derrière. Je vous conseille de faire un test non intrusif, donc par exemple lister les tables, les blobs ou les queues, mais en aucun cas créer un élément de “test” afin de voir que cela répond bien.&lt;/p&gt;&#xD;
&lt;p&gt;Et vu que je suis un grand seigneur aujourd’hui (comme tous les jours) je vous fournis ma méthode d’extension qui fait cela.&lt;/p&gt;&#xD;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div class="code"&gt;&#xD;
&lt;div style="font-family: 'Courier New', courier, monospace"&gt;&#xD;
&lt;div style="overflow: auto"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;&lt;span style="color: #000000"&gt; ValidateStorageAccount(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CloudStorageAccount&lt;/span&gt;&lt;span style="color: #000000"&gt; storageAccount)&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;{&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (storageAccount == &lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ArgumentNullException&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #a31515"&gt;"storageAccount"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt; tableClient = storageAccount.CreateCloudTableClient();&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tableClient.ListTablesSegmented(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Empty, 1, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;catch&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #2b91af"&gt;StorageException&lt;/span&gt;&lt;span style="color: #000000"&gt; ex)&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;A noter, que si c’est la clé du storage qui est mauvaise, j’ai une erreur 403, et si c’est le storage qui n’existe, c’est plus long déjà lors de l’execution, et je récupère une erreur comme quoi l’url est introuvable.&lt;/p&gt;&#xD;
&lt;p&gt;Et pour finir, je vous donne un lien vers un super article qui parle du Table Storage&amp;nbsp; :&amp;nbsp; &lt;strong&gt;&lt;a href="http://blog.soat.fr/2013/03/windows-azure-table-storage-2-0-quest-ce-qui-a-change/"&gt;Windows Azure Table Storage 2.0 Qu’est ce qui a changé ?&lt;/a&gt;&lt;/strong&gt; écrit par moi. &lt;/p&gt;</description>
      <link>http://blog.woivre.fr/Archives/2013/5/trucs-et-astuces-avec-windows-azure-table-storage</link>
      <pubDate>2013-05-10T14:15:13.2976871Z</pubDate>
    </item>
    <item>
      <title>Windows Azure Global Bootcamp</title>
      <description>&lt;p&gt;Comme vous avez pu le remarquer, je ne blog plus trop sur mon blog personnel en ce moment, mais beaucoup plus sur celui de Soat, n’hésitez pas à y faire un tour, ça parle beaucoup de Windows Azure : &lt;a href="http://blog.soat.fr"&gt;http://blog.soat.fr&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;De plus je ne reste pas inactif, je suis toujours avec la communauté &lt;a href="http://facebook.com/groups/zecloud"&gt;ZeCloud&lt;/a&gt; pour parler d’Azure ! Et d’ailleurs, ce samedi 27 avril, nous organisons la version parisienne du Global Windows Azure Bootcamp.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" alt="bootcamp" src="http://globalwindowsazure.azurewebsites.net/wp-content/uploads/2013/01/bootcamp_thumb.png"&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Cela se déroulera dans les locaux de Spark de 10h à 18h30, au programme il y aura du fun, de la bonne ambiance, des sessions de qualité, et surtout beaucoup d’Azure! Bref une journée comme je les aime!&lt;/p&gt; &lt;p&gt;Il n’est pas encore trop tard pour vous inscrire, il reste quelques places : &lt;a href="http://bit.ly/GWABParis"&gt;http://bit.ly/GWABParis&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://blog.woivre.fr/Archives/2013/4/windows-azure-global-bootcamp</link>
      <pubDate>2013-04-24T13:25:29.5347219Z</pubDate>
    </item>
    <item>
      <title>Installer un serveur Minecraft sur Windows Azure</title>
      <description>&lt;p&gt;Et oui Windows Azure ne sert pas qu’à travailler, il est aussi possible de s’en servir comme d’un serveur personnel ! &lt;/p&gt; &lt;p&gt;Je vais vous montrer comment installer un serveur Minecraft sur Windows Azure avec le mode IAAS qu’il faut donc au préalable activer, mais maintenant je pense que c’est fait pour tout le monde !&lt;/p&gt; &lt;p&gt;Donc au cas où ce ne soit pas le cas, il vous faut vous rendre à l’url : &lt;a title="https://account.windowsazure.com/PreviewFeatures" href="https://account.windowsazure.com/PreviewFeatures"&gt;https://account.windowsazure.com/PreviewFeatures&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Et activer la fonctionnalité des machines virtuelles : &lt;/p&gt; &lt;p&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; float: none; margin-left: auto; border-left: 0px; display: block; margin-right: auto" border="0" alt="image" src="http://images.woivre.fr/wwoivre/windowslivewriter/installerunserveurminecraftsurwindowsazu_1506e/image_thumb.png" width="563" height="181"&gt;&lt;/p&gt; &lt;p&gt;Ensuite, dans le portail, vous allez installer une machine Linux via la gallerie ! Car c’est bien connu que la JVM tourne mieux sous linux ! Et puis ce n’est pas parce que l’on est sur Azure qu’il faut choisir que des solutions Microsoft !&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.woivre.fr/wwoivre/windowslivewriter/installerunserveurminecraftsurwindowsazu_1506e/image_4.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; float: none; margin-left: auto; border-left: 0px; display: block; margin-right: auto" border="0" alt="image" src="http://images.woivre.fr/wwoivre/windowslivewriter/installerunserveurminecraftsurwindowsazu_1506e/image_thumb_1.png" width="498" height="348"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Il faut ensuite la configurer, notamment définir le mot de passe administraeur, et la taille de la machine virtuelle, surtout si vous voulez inviter plein de personne pour jouer avec vous ! &lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.woivre.fr/wwoivre/windowslivewriter/installerunserveurminecraftsurwindowsazu_1506e/image_6.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; float: none; margin-left: auto; border-left: 0px; display: block; margin-right: auto" border="0" alt="image" src="http://images.woivre.fr/wwoivre/windowslivewriter/installerunserveurminecraftsurwindowsazu_1506e/image_thumb_2.png" width="502" height="359"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Maintenant que vous avez votre linux, vous pouvez installer votre serveur Minecraft, pour cela, il faut vous connecter en SSH à votre instance grâce à PuTTy par exemple &lt;/p&gt; &lt;p&gt;&lt;a href="http://images.woivre.fr/wwoivre/windowslivewriter/installerunserveurminecraftsurwindowsazu_1506e/image_8.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; float: none; margin-left: auto; border-left: 0px; display: block; margin-right: auto" border="0" alt="image" src="http://images.woivre.fr/wwoivre/windowslivewriter/installerunserveurminecraftsurwindowsazu_1506e/image_thumb_3.png" width="367" height="354"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Premièrement il vous faut installer Java pour installer le server, pour cela il faut executer ces trois requêtes linux :&lt;/p&gt; &lt;blockquote&gt;&lt;pre&gt;sudo add-apt-repository ppa:webupd8team/java&#xD;
sudo apt-get update&#xD;
sudo apt-get install oracle-java7-installer&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;Par la suite, vous pouvez installer votre serveur Minecraft d’abord en téléchargeant le fichier du jeu comme ceci : &lt;/p&gt;&#xD;
&lt;blockquote&gt;&lt;pre&gt;wget &lt;a href="https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar"&gt;https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar&lt;/a&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;Puis en créant un script RunMinecraft.sh par exemple pour lancer votre serveur, ce script contiendra les lignes suivantes :&lt;/p&gt;&#xD;
&lt;blockquote&gt;&lt;pre&gt;#!/bin/sh&#xD;
java -Xmx512M -Xms512M -jar ./minecraft_server.jar nogui&lt;/pre&gt;&lt;/blockquote&gt;&#xD;
&lt;p&gt;Vous rendez votre script executable&lt;/p&gt;&#xD;
&lt;blockquote&gt;&lt;pre&gt;chmod +x RunMinecraft.sh&lt;/pre&gt;&lt;/blockquote&gt;&#xD;
&lt;p&gt;Et vous le démarrer !!&lt;/p&gt;&#xD;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;Ce n’est pas fini, dans le portail Azure il vous faut router le port utilisé pour le jeu vers l’extérieur, pour cela il faut aller dans Endpoint, et y ajouter dans votre point de terminaison comme ci-dessous :&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.woivre.fr/wwoivre/windowslivewriter/installerunserveurminecraftsurwindowsazu_1506e/image_10.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; float: none; margin-left: auto; border-left: 0px; display: block; margin-right: auto" border="0" alt="image" src="http://images.woivre.fr/wwoivre/windowslivewriter/installerunserveurminecraftsurwindowsazu_1506e/image_thumb_4.png" width="612" height="143"&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;Et voilà, vous pouvez lancer Minecraft, et y ajouter votre serveur Azure !!&lt;/p&gt;&#xD;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.woivre.fr/wwoivre/windowslivewriter/installerunserveurminecraftsurwindowsazu_1506e/image_12.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; float: none; margin-left: auto; border-left: 0px; display: block; margin-right: auto" border="0" alt="image" src="http://images.woivre.fr/wwoivre/windowslivewriter/installerunserveurminecraftsurwindowsazu_1506e/image_thumb_5.png" width="570" height="340"&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;Et voilà, pour conclure, c’était juste une étape amusante, et on voit bien qu’Azure peut faire tourner un peu n’importe quoi ! Même un serveur Minecraft !&lt;/p&gt;</description>
      <link>http://blog.woivre.fr/Archives/2013/1/installer-un-serveur-minecraft-sur-windows-azure</link>
      <pubDate>2013-01-08T22:56:14.7042251Z</pubDate>
    </item>
    <item>
      <title>Travailler avec Windows Azure et un débit réduit</title>
      <description>&lt;p&gt;Depuis que je travaille avec Windows Azure, j’ai eu l’occasion d’utiliser plusieurs types de connexion internet, que ce soit au travail, ou chez moi sur Paris, avec des connexions en fibre optique ou du 20Mo en étant très près de la borne, mais aussi bien des connexions au fin fond de la corrèze, ou en pleine Beauce ou la qualité de la connexion internet n’est pas satisfaisante et où l’upload de votre package Azure peut prendre plus de temps que la création de votre application ! Et bien entendu, c’est aussi le cas durant les divers Hackathons où il y a 100 développeurs avides d’informations que l’on ne trouve que sur Internet.&amp;nbsp; Bref, vie ma vie dans ce numéro de vie ma vie de développeurs, je vais vous donner quelques astuces pour pouvoir travailler avec Windows Azure lorsque vous avez un débit réduit !&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Alors bien entendu tout cet article, et tous les avantages / inconvénients sont listés en vu du hackathon Windows Phone 8 qui se déroulera mi décembre !&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Windows Azure Mobile Services&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Vous voulez construire un backend sur Windows Azure pour vos applications Windows 8 ou Windows Phone 8 ou iOS, dans ce backend, vous avez besoin d’un mode CRUD très simple à mettre en place, d’un processus d’identification, ou d’un mode push, ce service est fait pour vous ! &lt;/p&gt; &lt;p&gt;Ce service a de nombreux avantages, cependant pendant un hackathon, je vous conseille de configurer ce service avant d’y aller, et surtout de créer vos différents fournisseurs d’identité, et de les tester avant d’y aller, puisque certains d’entre eux ont des fois des sites qui ne répondent pas du premier coup ! De plus, si vous voulez sortir des cas d’utilisations simples qui ne sont pas cités sur le site Windows Azure, il y a besoin d’avoir des compétences en Node.js où de suivre certains tutoriaux spécifiques qui sont malheureusement peu nombreux&amp;nbsp; …&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Pour résumé, les avantages sont :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Simple à mettre en place  &lt;li&gt;Intègre les fonctionnalités de base que l’on veut d’un backend d’une application mobile  &lt;ul&gt; &lt;li&gt;CRUD  &lt;li&gt;Push  &lt;li&gt;Authentification&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Les inconvénients&amp;nbsp; :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Difficile de sortir des sentiers battus sans faire diverses recherches sur internet  &lt;ul&gt; &lt;li&gt;Gestion de listes d’objets (ex : liste des commentaires associés à un message)  &lt;li&gt;Gestion de l’identité des utilisateurs connectées.&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Application totalement reliée à internet, et donc si vous avez une connexion soumise à des coupures réseau, il n’est pas possible de faire tourner votre application en local.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Windows Azure WebSites&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Que ce soit en Node.js, PHP ou ASP.Net, Windows Azure Websites vous permet simplement de déployer vos applications sur Windows Azure ! Et si vous le couplez avec ASP.Net MVC Web API vous avez le duo gagnant pour créer rapidement et simplement un backend sur lequel vous avez entièrement la main, de plus la publication se fait simplement par un Web Deploy, ce qui permet de ne déployer que des différentielles de votre application.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Pour résumé, les avantages sont : &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Simple à mettre en place  &lt;li&gt;Rapide à déployer  &lt;li&gt;Testable en local&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Les inconvénients : &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Tout doit être développé : Push, fournisseurs d’identité …&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Windows Azure Cloud Services&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Le service historique de Microsoft, vous n’avez aucune limite avec celui-ci que ce soit en terme de technologie, d’accès à la machine ! Et même de montée en charge rapidement et efficacement ! Le seul conseil que je vous donne, c’est de déployer avant votre service avec les options de remote desktop et de Web deploy&lt;/p&gt; &lt;p&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="http://images.woivre.fr/wwoivre/windows-live-writer/travailler-avec-windows-azure-et-un-dbit_965c/image_thumb.png" width="482" height="106"&gt;&lt;/p&gt; &lt;p&gt;Alors, je vous entends d’ici, effectivement en déployant votre site avec Web Deploy sur un Cloud Services, ça ne marche pas lorsqu’on a plusieurs instances, où que l’on souhaite faire monter en charge notre application, cependant entre prendre 45mn pour déployer et tester au lieu de 5min, le choix est rapide ! Il vous suffira de redéployer quand ça sera possible et que ça ne vous empêchera pas de travailler ! &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Pour résumé, les avantages sont : &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Tellement nombreux pour être listés ici&lt;/li&gt; &lt;li&gt;N’ayez aucune limite en mode PAAS avec ce service&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Les inconvénients :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Plus ou moins long à déployer selon le réseau&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Bon cet article est très orienté hackathon, mais c’est surtout pour préparer le hackathon Windows Phone 8 organisé au moulin de la forge au mois de décembre !&lt;/p&gt;</description>
      <link>http://blog.woivre.fr/Archives/2012/12/travailler-avec-windows-azure-et-un-debit-reduit</link>
      <pubDate>2012-12-05T10:29:56.5233781Z</pubDate>
    </item>
    <item>
      <title>Windows Azure : Comment modifier le nom de son abonnement</title>
      <description>&lt;p&gt;Pour changer un article pas technique, mais ne vous inquiétez pas, il y a assez de nouveautés en ce moment pour que les prochains le soit ! &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Alors, avec les jours qui passent j’ai de plus en plus de compte Azure associé à mon compte Live, et j’arrive donc rapidement à avoir des noms d’abonnement qui deviennent soient identiques, soient trop long pour pouvoir être utiliser en PowerShell simplement.&lt;/p&gt; &lt;p&gt;Donc pour renommer un compte dont vous êtes le super administrateur, bref celui qui a la carte bleue ! Il faut aller sur votre page Mon compte : &lt;a title="https://account.windowsazure.com/Subscriptions" href="https://account.windowsazure.com/Subscriptions"&gt;https://account.windowsazure.com/Subscriptions&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Puis sur l’abonnement que vous gérez vous allez dans les détails et vous pouvez modifier son nom ! &lt;/p&gt; &lt;p&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; float: none; margin-left: auto; display: block; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="http://images.woivre.fr/wwoivre/windowslivewriter/windowsazurecommentmodifierlenomdesonabo_1372c/image_thumb.png" width="241" height="244"&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Bon bien entendu, vous ne changez pas d’id, mais je vous conseille de télécharger à nouveau un Publish Profile pour votre compte, afin que ce soit plus simple à utiliser, et que vous n’en ayez pas un ancien qui reste. Pour rappel, l’url est la suivante :&amp;nbsp; &lt;a title="https://windows.azure.com/download/publishprofile.aspx" href="https://windows.azure.com/download/publishprofile.aspx"&gt;https://windows.azure.com/download/publishprofile.aspx&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://blog.woivre.fr/Archives/2012/10/windows-azure-comment-modifier-le-nom-de-son-abonnement</link>
      <pubDate>2012-10-30T21:07:49.8442482Z</pubDate>
    </item>
    <item>
      <title>Utilisation avancée de Windows Azure Table Storage</title>
      <description>&lt;p&gt;Le Table Storage est selon moi l’un des composants essentiels de tout bon projet fonctionnant sur Windows Azure, en effet il permet pour un faible cout de stocker des données&amp;nbsp; utilisable par la suite au sein de votre application. De plus celui-ci est hautement scalable, il est donc parfait pour une architecture de type Cloud !&lt;/p&gt; &lt;p&gt;A part les cas d’usages standards du Table Storage, c’est à dire du CRUD pur et dur, il est possible de modifier son comportement de façon à nous aider dans nos différentes actions, prenons le cas simple, je veux que pour chaque entité que je sauvegarde dans mon Table Storage soit indiqué une date de création, et une date de modification, cependant je ne veux pas que ces dernières viennent polluer mon coder dans chacune de mes classes. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;On va donc commencer par créer une entité basique pour la démonstration : &lt;/p&gt; &lt;div class="code"&gt; &lt;div style="font-family: 'Courier New', courier, monospace"&gt; &lt;div style="overflow: auto"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyEntity&lt;/span&gt;&lt;span style="color: #000000"&gt; : &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TableServiceEntity&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;{&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;Cette classe a donc 3 propriétés qui sont PartitionKey, RowKey et TimeStamp, or je voudrais y ajouter des propriétés pour savoir la date de création de modification de chaque ligne ce qui peut mettre utile lorsque je consulte les données via des outils tels que Cloud Storage Studio ou Azure Storage Explorer.&lt;/p&gt; &lt;p&gt;Pour réaliser cela, il vous faut réaliser l’opération suivante : &lt;/p&gt; &lt;div class="code"&gt; &lt;div style="font-family: 'Courier New', courier, monospace"&gt; &lt;div style="overflow: auto"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XNamespace&lt;/span&gt;&lt;span style="color: #000000"&gt; _atomNs = &lt;/span&gt;&lt;span style="color: #a31515"&gt;"http://www.w3.org/2005/Atom"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XNamespace&lt;/span&gt;&lt;span style="color: #000000"&gt; _dataNs = &lt;/span&gt;&lt;span style="color: #a31515"&gt;"http://schemas.microsoft.com/ado/2007/08/dataservices"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XNamespace&lt;/span&gt;&lt;span style="color: #000000"&gt; _metadataNs = &lt;/span&gt;&lt;span style="color: #a31515"&gt;"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; MyServiceContext(&lt;/span&gt;&lt;span style="color: #2b91af"&gt;CloudStorageAccount&lt;/span&gt;&lt;span style="color: #000000"&gt; storageAccount)&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;/span&gt;&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;&lt;span style="color: #000000"&gt;(storageAccount.TableEndpoint.ToString(), storageAccount.Credentials)&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;{&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.IgnoreMissingProperties = &lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.WritingEntity += GenericServiceContext_WritingEntity;&lt;/span&gt;&lt;br&gt;&lt;/strong&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt; tableClient = storageAccount.CreateCloudTableClient();&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tableClient.CreateTableIfNotExist(&lt;/span&gt;&lt;span style="color: #a31515"&gt;"TestTable"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt; GenericServiceContext_WritingEntity(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt; sender, System.Data.Services.Client.&lt;/span&gt;&lt;span style="color: #2b91af"&gt;ReadingWritingEntityEventArgs&lt;/span&gt;&lt;span style="color: #000000"&gt; e)&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;{&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyEntity&lt;/span&gt;&lt;span style="color: #000000"&gt; entity = e.Entity &lt;/span&gt;&lt;span style="color: #0000ff"&gt;as&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyEntity&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (entity == &lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;&lt;span style="color: #000000"&gt; properties = e.Data.Descendants(_metadataNs + &lt;/span&gt;&lt;span style="color: #a31515"&gt;"properties"&lt;/span&gt;&lt;span style="color: #000000"&gt;).First();&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;&lt;span style="color: #000000"&gt; id = e.Data.Descendants(_atomNs + &lt;/span&gt;&lt;span style="color: #a31515"&gt;"id"&lt;/span&gt;&lt;span style="color: #000000"&gt;).First();&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #2b91af"&gt;String&lt;/span&gt;&lt;span style="color: #000000"&gt;.IsNullOrWhiteSpace(id.Value))&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt; creationProperty = &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;&lt;span style="color: #000000"&gt;(_dataNs + &lt;/span&gt;&lt;span style="color: #a31515"&gt;"CreationDate"&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;&lt;span style="color: #000000"&gt;.Now);&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; creationProperty.Add(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XAttribute&lt;/span&gt;&lt;span style="color: #000000"&gt;(_metadataNs + &lt;/span&gt;&lt;span style="color: #a31515"&gt;"type"&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #a31515"&gt;"Edm.DateTime"&lt;/span&gt;&lt;span style="color: #000000"&gt;));&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; properties.Add(creationProperty);&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt; modificationProperty = &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;&lt;span style="color: #000000"&gt;(_dataNs + &lt;/span&gt;&lt;span style="color: #a31515"&gt;"ModificationDate"&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;&lt;span style="color: #000000"&gt;.Now);&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; modificationProperty.Add(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XAttribute&lt;/span&gt;&lt;span style="color: #000000"&gt;(_metadataNs + &lt;/span&gt;&lt;span style="color: #a31515"&gt;"type"&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #a31515"&gt;"Edm.DateTime"&lt;/span&gt;&lt;span style="color: #000000"&gt;));&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; properties.Add(modificationProperty);&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Il vous faut avant tout dire que les propriétés manquantes de votre ServiceContext sont ignorées que ce soit lors de la lecture ou de l’écriture. Il faut par la suite s’abonner à l’évènement Writing Entity afin de modifier le XML envoyé à votre storage.&lt;/p&gt; &lt;p&gt;Ainsi on va pouvoir passer de ce XML : &lt;/p&gt; &lt;div class="code"&gt; &lt;div style="font-family: 'Courier New', courier, monospace"&gt; &lt;div style="overflow: auto"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;entry&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns:d&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;http://schemas.microsoft.com/ado/2007/08/dataservices&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns:m&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;http://schemas.microsoft.com/ado/2007/08/dataservices/metadata&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;http://www.w3.org/2005/Atom&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;updated&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;2012-09-10T13:08:42.4981763Z&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;updated&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;content&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;application/xml&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;m:properties&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:PartitionKey&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;42&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:PartitionKey&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:RowKey&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;106564e8-5093-4c5b-b059-e02ac75a59d4&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:RowKey&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:Timestamp&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;m:type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;Edm.DateTime&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;2012-09-10T15:08:42.4942455+02:00&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:Timestamp&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;m:properties&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;entry&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;A un XML de ce type : &lt;/p&gt; &lt;div class="code"&gt; &lt;div style="font-family: 'Courier New', courier, monospace"&gt; &lt;div style="overflow: auto"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;entry&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns:d&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;http://schemas.microsoft.com/ado/2007/08/dataservices&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns:m&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;http://schemas.microsoft.com/ado/2007/08/dataservices/metadata&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;http://www.w3.org/2005/Atom&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;updated&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;2012-09-10T13:08:42.4981763Z&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;updated&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;content&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;application/xml&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;m:properties&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:PartitionKey&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;42&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:PartitionKey&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:RowKey&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;106564e8-5093-4c5b-b059-e02ac75a59d4&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:RowKey&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:Timestamp&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;m:type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;Edm.DateTime&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;2012-09-10T15:08:42.4942455+02:00&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:Timestamp&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color: #a31515"&gt;d:CreationDate&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;m:type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;Edm.DateTime&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;2012-09-10T15:09:28.6219389+02:00&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:CreationDate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:ModificationDate&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;m:type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;Edm.DateTime&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;2012-09-10T15:09:28.6219389+02:00&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:ModificationDate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;/strong&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;m:properties&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;entry&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Bien entendu, si vous vouliez réellement mettre en place cette solution, il faut avant tout vérifier que les propriétés que vous ajoutez n’existent pas déjà.&lt;/p&gt; &lt;p&gt;On notera par ailleurs, qu’il n’y a pas de gestion de statut dans le XML, donc pour savoir si c’est une entité que l’on créé où une entité que l’on modifie, il faut se baser sur la présence ou non de la valeur du champ id.&lt;/p&gt; &lt;p&gt;On peut donc voir le résultat ci-dessous au sein de mon table storage, je ne modifie que la dernière ligne dans mon application de démonstration : &lt;/p&gt; &lt;p&gt;&lt;img title="image_thumb1" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image_thumb1" src="http://images.woivre.fr/wwoivre/windows-live-writer/utilisation-avance-de-windows-azure-tabl_ad6e/image_thumb1_thumb.png" width="660" height="132"&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Maintenant, passons à un mode lecture avancé. Prenons le cas suivant, on vous donne un Table Storage à lire et explorer sans utiliser d’outils tierces, ni même Visual Studio et son explorateur de Table Storage ! Bref la galère à première vue …. Bon en même temps, c’est pas le scénario qui arrive tous les jours.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;On va donc commencer par créer une entité plus complexe que la précédente qui va contenir un Tuple permettant de stocker nos différentes propriétés : &lt;/p&gt; &lt;div class="code"&gt; &lt;div style="font-family: 'Courier New', courier, monospace"&gt; &lt;div style="overflow: auto"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ExtractEntity&lt;/span&gt;&lt;br&gt;&lt;span style="color: #2b91af"&gt;{&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Tuple&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&amp;gt; _properties = &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Tuple&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&amp;gt;();&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Tuple&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&amp;gt; Properties&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt; _properties;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _properties = &lt;/span&gt;&lt;span style="color: #0000ff"&gt;value&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;On notera au passage, que mon entité n’hérite pas de TableServiceEntity, et donc il est possible de créer son propre système de wrapping pour certaines entités.&lt;/p&gt; &lt;p&gt;Au niveau du code, il est possible de faire comme ci-dessous, c’est à dire s’abonner à l’évènement ReadingEntity et de modifier le XML d’entrée&lt;/p&gt; &lt;div class="code"&gt; &lt;div style="font-family: 'Courier New', courier, monospace"&gt; &lt;div style="overflow: auto"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; MyServiceContext(&lt;/span&gt;&lt;span style="color: #2b91af"&gt;CloudStorageAccount&lt;/span&gt;&lt;span style="color: #000000"&gt; storageAccount)&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;/span&gt;&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;&lt;span style="color: #000000"&gt;(storageAccount.TableEndpoint.ToString(), storageAccount.Credentials)&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;{&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.IgnoreMissingProperties = &lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.WritingEntity += GenericServiceContext_WritingEntity;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.ReadingEntity += GenericServiceContext_ReadingEntity;&lt;/span&gt;&lt;br&gt;&lt;/strong&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt; tableClient = storageAccount.CreateCloudTableClient();&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tableClient.CreateTableIfNotExist(&lt;/span&gt;&lt;span style="color: #a31515"&gt;"TestTable"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt; GenericServiceContext_ReadingEntity(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt; sender, System.Data.Services.Client.&lt;/span&gt;&lt;span style="color: #2b91af"&gt;ReadingWritingEntityEventArgs&lt;/span&gt;&lt;span style="color: #000000"&gt; e)&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;{&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ExtractEntity&lt;/span&gt;&lt;span style="color: #000000"&gt; entity = e.Entity &lt;/span&gt;&lt;span style="color: #0000ff"&gt;as&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ExtractEntity&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (entity == &lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt; q = &lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; p &lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; e.Data.Element(_atomNs + &lt;/span&gt;&lt;span style="color: #a31515"&gt;"content"&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Element(_metadataNs + &lt;/span&gt;&lt;span style="color: #a31515"&gt;"properties"&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Elements()&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name = p.Name.LocalName,&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IsNull = &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Equals(&lt;/span&gt;&lt;span style="color: #a31515"&gt;"true"&lt;/span&gt;&lt;span style="color: #000000"&gt;, p.Attribute(_dataNs + &lt;/span&gt;&lt;span style="color: #a31515"&gt;"null"&lt;/span&gt;&lt;span style="color: #000000"&gt;) == &lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ? &lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : p.Attribute(_metadataNs + &lt;/span&gt;&lt;span style="color: #a31515"&gt;"null"&lt;/span&gt;&lt;span style="color: #000000"&gt;).Value, &lt;/span&gt;&lt;span style="color: #2b91af"&gt;StringComparison&lt;/span&gt;&lt;span style="color: #000000"&gt;.OrdinalIgnoreCase),&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TypeName = p.Attribute(_dataNs + &lt;/span&gt;&lt;span style="color: #a31515"&gt;"type"&lt;/span&gt;&lt;span style="color: #000000"&gt;) == &lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt; ? &lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt; : p.Attribute(_metadataNs + &lt;/span&gt;&lt;span style="color: #a31515"&gt;"type"&lt;/span&gt;&lt;span style="color: #000000"&gt;).Value,&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.Value&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt; dp &lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; q)&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; entity.Properties.Add(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Tuple&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;(dp.Name, dp.TypeName ?? &lt;/span&gt;&lt;span style="color: #a31515"&gt;"Edm.String"&lt;/span&gt;&lt;span style="color: #000000"&gt;, dp.Value));&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Le XML que l’on récupère en entrée, ressemble à celui ci-dessous, il est donc possible de retrouver l’ensemble des informations nécessaires pour connaitre l’entité et sa table d’origine&lt;/p&gt; &lt;div class="code"&gt; &lt;div style="font-family: 'Courier New', courier, monospace"&gt; &lt;div style="overflow: auto"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;entry&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;m:etag&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;W/&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;datetime'2012-09-10T13%3A34%3A20.327Z'&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;http://www.w3.org/2005/Atom&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns:m&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;http://schemas.microsoft.com/ado/2007/08/dataservices/metadata&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;http://127.0.0.1:10002/devstoreaccount1/TestTable(PartitionKey='42',RowKey='365aa1c5-ac6b-42ea-b674-749dfdc7b514')&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;text&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;updated&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;2012-09-10T14:52:49Z&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;updated&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;link&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;rel&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;edit&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;TestTable&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;href&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;TestTable(PartitionKey='42',RowKey='365aa1c5-ac6b-42ea-b674-749dfdc7b514')&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;category&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;term&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;devstoreaccount1.TestTable&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;scheme&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;http://schemas.microsoft.com/ado/2007/08/dataservices/scheme&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;content&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;application/xml&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;m:properties&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:PartitionKey&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns:d&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;http://schemas.microsoft.com/ado/2007/08/dataservices&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;42&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:PartitionKey&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:RowKey&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns:d&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;http://schemas.microsoft.com/ado/2007/08/dataservices&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;365aa1c5-ac6b-42ea-b674-749dfdc7b514&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:RowKey&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:Timestamp&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;m:type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;Edm.DateTime&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns:d&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;http://schemas.microsoft.com/ado/2007/08/dataservices&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;2012-09-10T13:34:20.327Z&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:Timestamp&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:CreationDate&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;m:type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;Edm.DateTime&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns:d&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;http://schemas.microsoft.com/ado/2007/08/dataservices&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;2012-09-07T11:54:29Z&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:CreationDate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:ModificationDate&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;m:type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;Edm.DateTime&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns:d&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;http://schemas.microsoft.com/ado/2007/08/dataservices&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;2012-09-07T11:54:29Z&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;d:ModificationDate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;m:properties&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;entry&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;On va donc se retrouver avec une entité comprenant toutes les propriétés de notre table, comme on peut le voir ci-dessous : &lt;/p&gt; &lt;p&gt;&lt;a href="http://images.woivre.fr/wwoivre/windows-live-writer/utilisation-avance-de-windows-azure-tabl_ad6e/image_thumb4_2.png"&gt;&lt;img title="image_thumb4" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image_thumb4" src="http://images.woivre.fr/wwoivre/windows-live-writer/utilisation-avance-de-windows-azure-tabl_ad6e/image_thumb4_thumb.png" width="405" height="266"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Voilà en espérant que ça puisse vous donner quelques idées pour vos développements futurs ou passés ! &lt;/p&gt;</description>
      <link>http://blog.woivre.fr/Archives/2012/9/utilisation-avancee-de-windows-azure-table-storage</link>
      <pubDate>2012-09-11T15:42:27.6103234Z</pubDate>
    </item>
    <item>
      <title>Tour d’horizon de Mobile Services</title>
      <description>&lt;p&gt;Bonjour à tous, &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Juste un petit article pour vous annoncer que j’ai publié sur le blog de &lt;a href="http://blog.soat.fr/"&gt;So@t&lt;/a&gt; un article qui récapitule tout ce que l’on peut faire avec Windows Azure Mobile Services ! &lt;/p&gt; &lt;p&gt;Allez y ça se passe à cette adresse : &lt;a href="http://blog.soat.fr/2012/09/tout-savoir-sur-windows-azure-mobile-services/"&gt;http://blog.soat.fr/2012/09/tout-savoir-sur-windows-azure-mobile-services/&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Et si vous souhaitez aller plus loin, voici deux autres articles sur le même sujet : &lt;a href="http://blog.woivre.fr/Archives/2012/9/trucs-et-astuces-avec-windows-azure-mobile-services"&gt;Trucs et astuces avec Windows Azure Mobile Services&lt;/a&gt; et &lt;a href="http://blog.woivre.fr/Archives/2012/9/utiliser-windows-azure-mobile-services-dans-vos-applications"&gt;Utiliser Windows Azure Mobile Services dans vos applications&lt;/a&gt; ! &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Voilà bonne lecture à tous&lt;/p&gt;</description>
      <link>http://blog.woivre.fr/Archives/2012/9/tour-dhorizon-de-mobile-services</link>
      <pubDate>2012-09-07T09:51:43.1920660Z</pubDate>
    </item>
    <item>
      <title>Trucs et astuces avec Windows Azure Mobile Services</title>
      <description>&lt;p&gt;Vu que c’est la dernière nouveauté de Windows Azure, vous comprendrez qu’en ce moment je joue avec toute la journée, donc voilà des petits trucs et astuces que je peux vous donner pour vous aider lorsque vous développez avec ce SDK, donc pour une application de type Metro ! &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Déjà pour instancier votre client mobile, et créer une table, il faut réaliser un code de ce type&lt;/p&gt; &lt;div class="code"&gt; &lt;div style="font-family: 'Courier New', courier, monospace"&gt; &lt;div style="overflow: auto"&gt;&lt;span style="color: #2b91af"&gt;MobileServiceClient&lt;/span&gt;&lt;span style="color: #000000"&gt; _mobileServiceClient = &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MobileServiceClient&lt;/span&gt;&lt;span style="color: #000000"&gt;(_mobileServiceUrl, _mobileServiceKey);&lt;/span&gt;&lt;br&gt;&lt;span style="color: #2b91af"&gt;IMobileServiceTable&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;AnEntity&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt; _anEntityMobileServiceTable = _mobileServiceClient.GetTable&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;AnEntity&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Si pendant l’exécution de ce code, notamment à la deuxième ligne vous avez une erreur de ce type : &lt;/p&gt; &lt;p&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="http://images.woivre.fr/wwoivre/windows-live-writer/trucs-et-astuces-avec-windows-azure-mobi_a098/image_thumb.png" width="504" height="162"&gt;&lt;/p&gt; &lt;p&gt;Vu que l’erreur vous indique que le paramètre “key” est null, alors qu’il ne le doit pas, vous avez deux solutions, soit hypothétiser une solution et la tester, soit regarder où se trouve ce paramètre key, qui se situe en fait dans le SDK de Windows Azure Mobile Service …. &lt;/p&gt; &lt;p&gt;Alors la solution pour résoudre cette erreur est assez simple, dans la déclaration de votre entité vous avez simplement oublié de donner le nom d’une de vos propriétés (oui c’est simple quand on a la solution)&lt;/p&gt; &lt;div class="code"&gt; &lt;div style="font-family: 'Courier New', courier, monospace"&gt; &lt;div style="overflow: auto"&gt;&lt;span style="color: #000000"&gt;[&lt;/span&gt;&lt;span style="color: #2b91af"&gt;DataContract&lt;/span&gt;&lt;span style="color: #000000"&gt;(Name = &lt;/span&gt;&lt;span style="color: #a31515"&gt;"anentity"&lt;/span&gt;&lt;span style="color: #000000"&gt;)]&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;AnEntity&lt;/span&gt;&lt;span style="color: #000000"&gt; : &lt;/span&gt;&lt;span style="color: #2b91af"&gt;BaseEntity&lt;/span&gt;&lt;br&gt;&lt;span style="color: #2b91af"&gt;{&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;/span&gt;&lt;span style="color: #2b91af"&gt;DataMember&lt;/span&gt;&lt;span style="color: #000000"&gt;(Name = &lt;/span&gt;&lt;span style="color: #a31515"&gt;"id"&lt;/span&gt;&lt;span style="color: #000000"&gt;)]&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; Id;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;/span&gt;&lt;span style="color: #2b91af"&gt;DataMember&lt;/span&gt;&lt;span style="color: #000000"&gt;(Name = &lt;/span&gt;&lt;span style="color: #a31515"&gt;"astring"&lt;/span&gt;&lt;span style="color: #000000"&gt;)]&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; AString;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;/span&gt;&lt;span style="color: #2b91af"&gt;DataMember&lt;/span&gt;&lt;span style="color: #000000"&gt;(Name = &lt;/span&gt;&lt;span style="color: #a31515"&gt;"anint"&lt;/span&gt;&lt;span style="color: #000000"&gt;)]&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; AnInt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;/span&gt;&lt;span style="color: #2b91af"&gt;DataMember&lt;/span&gt;&lt;span style="color: #000000"&gt;]&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;&lt;span style="color: #000000"&gt; ABool;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;Là dans ce cas, j’avais uniquement oublié le “Name” de ma propriété “ABool” ! &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Deuxième et dernière astuce, au niveau du portail Windows Azure, il est possible de modifier les différentes&amp;nbsp; méthodes de CRUD, il s’agit de Node.js, de plus il n’y a qu’un seul environnement disponible, donc attention aux modifications en production ! Je vous conseille donc d’avoir une application Mobile Services de tests pour éviter les catastrophes du type envoyé un toast à tous vos utilisateurs en disant “Bazinga” ou alors de modifier les droits d’accès à une table !&lt;/p&gt; &lt;p&gt;De plus, écrivez vos scripts dans Visual Studio, Web Matrix, ou tout autre logiciel / IDE capable de fournir un minimum d’intellisense sinon ça devient rapidement laborieux.&lt;/p&gt; &lt;p&gt;Voilà un peu de Node.js pour envoyer un toast lors de l’insertion en base d’une entité : &lt;/p&gt; &lt;div class="code"&gt; &lt;div style="font-family: 'Courier New', courier, monospace"&gt; &lt;div style="overflow: auto"&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;&lt;span style="color: #000000"&gt; insert(item, user, request) {&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; request.execute({&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; success: &lt;/span&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;&lt;span style="color: #000000"&gt; () {&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request.respond();&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log(item.astring);&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log(item.channel);&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push.wns.sendToastText04(item.channel, { text1: item.astring }, {&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; success: &lt;/span&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;&lt;span style="color: #000000"&gt; (pushResponse) {&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log(&lt;/span&gt;&lt;span style="color: #a31515"&gt;"Sent push: "&lt;/span&gt;&lt;span style="color: #000000"&gt;, pushResponse);&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/span&gt;&lt;br&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;N’oubliez pas les logs, ils sont consultables facilement depuis le portail HTML 5 ! &lt;/p&gt; &lt;p&gt;Voilà en espérant que ça vous sera utile ! &lt;/p&gt;</description>
      <link>http://blog.woivre.fr/Archives/2012/9/trucs-et-astuces-avec-windows-azure-mobile-services</link>
      <pubDate>2012-09-05T13:46:52.5515054Z</pubDate>
    </item>
    <item>
      <title>Utiliser Windows Azure Mobile Services dans vos applications</title>
      <description>&lt;p&gt;Si Windows Azure Mobile Service ne vous dit rien, je vous conseille avant tout d’aller voir l’annonce de Scott Guthrie à ce &lt;a href="http://weblogs.asp.net/scottgu/archive/2012/08/28/announcing-windows-azure-mobile-services.aspx"&gt;sujet&lt;/a&gt; ! &lt;/p&gt; &lt;p&gt;Et maintenant que vous avez compris à quoi cela sert, vous vous dîtes, et flûte le service a l’air pourtant intéressant, cependant actuellement je ne peux l’utiliser qu’avec une application Windows 8 ! Et bien, sachez que non, il est possible de l’utiliser pour des applications Windows Phone 7, voir WPF, ou ce que vous souhaitez ! Bon, bien entendu, il ne sera pas possible d’utiliser les possibilités de push et d’authentification fournis par ce service, par contre un système CRUD bête et méchant, c’est possible ! &lt;/p&gt; &lt;p&gt;Alors pour le prouver, j’ai réalisé (très rapidement) une application WPF permettant d’ajouter des items dans une table, et de les lire. &lt;/p&gt; &lt;p&gt;Le schéma de ces données est le suivant : &lt;/p&gt; &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.woivre.fr/wwoivre/windows-live-writer/2f119e3bdd4e_fac4/image_thumb.png" width="654" height="248"&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Alors pour pouvoir attaquer notre service hébergé dans Azure, de quoi avons-nous besoin, uniquement des urls pour lire, ajouter, modifier, supprimer ainsi que de votre clé privée pour accéder à votre service.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="code"&gt; &lt;div style="font-family: 'Courier New', courier, monospace"&gt; &lt;div style="overflow: auto"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;readonly&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; GetTestDatas = &lt;span style="color: #a31515"&gt;"https://votrenamespace.azure-mobile.net/tables/testdata/"&lt;/span&gt;;&lt;br&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;readonly&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; AddTestData = &lt;span style="color: #a31515"&gt;"https://votrenamespace.azure-mobile.net/tables/testdata/"&lt;/span&gt;;&lt;br&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;readonly&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; UpdateTestData = &lt;span style="color: #a31515"&gt;"https://votrenamespace.azure-mobile.net/tables/testdata/"&lt;/span&gt;;&lt;br&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;readonly&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; DeleteTestData = &lt;span style="color: #a31515"&gt;"https://votrenamespace.azure-mobile.net/tables/testdata/"&lt;/span&gt;;&lt;br&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;readonly&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; ApiKey = &lt;span style="color: #a31515"&gt;"VotreCléPrivée"&lt;/span&gt;; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Alors comment cela se passe ? Et bien c’est fort simple, votre application doit faire des appels en Json, soit en GET ou en POST selon les besoins, en prenant bien soin d’ajouter dans les headers de vos requêtes. &lt;/p&gt; &lt;p&gt;Par exemple, pour lister les différents éléments de ma table, il me suffit d’exécuter ce code : &lt;/p&gt; &lt;div class="code"&gt; &lt;div style="font-family: 'Courier New', courier, monospace"&gt; &lt;div style="overflow: auto"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TestData&lt;/span&gt;&amp;gt; Get()&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;HttpWebRequest&lt;/span&gt; request = (&lt;span style="color: #2b91af"&gt;HttpWebRequest&lt;/span&gt;)&lt;span style="color: #2b91af"&gt;WebRequest&lt;/span&gt;.Create(GetTestDatas);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;request.Headers.Add(&lt;span style="color: #a31515"&gt;"X-ZUMO-APPLICATION"&lt;/span&gt;, ApiKey);&lt;/strong&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; request.Method = &lt;span style="color: #a31515"&gt;"GET"&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; request.ContentType = &lt;span style="color: #a31515"&gt;"application/json"&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;HttpWebResponse&lt;/span&gt; response = (&lt;span style="color: #2b91af"&gt;HttpWebResponse&lt;/span&gt;)request.GetResponse();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Stream&lt;/span&gt; responseStream = response.GetResponseStream();&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;DataContractJsonSerializer&lt;/span&gt; ser = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DataContractJsonSerializer&lt;/span&gt;(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TestData&lt;/span&gt;&amp;gt;));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TestData&lt;/span&gt;&amp;gt;)ser.ReadObject(responseStream);&lt;br&gt;} &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;Bien entendu, il faut avoir au préalable créé une classe TestData dans mon cas, qui contient les différents valeurs nécessaires à la sérialisation, et la désérialisation. &lt;/p&gt; &lt;div class="code"&gt; &lt;div style="font-family: 'Courier New', courier, monospace"&gt; &lt;div style="overflow: auto"&gt;[&lt;span style="color: #2b91af"&gt;DataContract&lt;/span&gt;]&lt;br&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TestData&lt;/span&gt;&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af"&gt;DataMember&lt;/span&gt;(Name=&lt;span style="color: #a31515"&gt;"id"&lt;/span&gt;)]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; Id { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af"&gt;DataMember&lt;/span&gt;(Name = &lt;span style="color: #a31515"&gt;"value"&lt;/span&gt;)]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; Value { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; } &lt;br&gt;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;De même pour l’insertion de données, ou pour la modification de données, il suffit de passer l’id de l’élément que vous voulez modifier pour qu’il le mette à jour ou insère une ligne, quand à la suppression, il faut juste passer la clé primaire de l’objet à supprimer pour réaliser cette action. &lt;/p&gt; &lt;div class="code"&gt; &lt;div style="font-family: 'Courier New', courier, monospace"&gt; &lt;div style="overflow: auto"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TestData&lt;/span&gt; Put(&lt;span style="color: #2b91af"&gt;TestData&lt;/span&gt; item)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;HttpWebRequest&lt;/span&gt; request = (&lt;span style="color: #2b91af"&gt;HttpWebRequest&lt;/span&gt;)&lt;span style="color: #2b91af"&gt;WebRequest&lt;/span&gt;.Create(AddTestData);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;request.Headers.Add(&lt;span style="color: #a31515"&gt;"X-ZUMO-APPLICATION"&lt;/span&gt;, ApiKey);&lt;/strong&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; request.Method = &lt;span style="color: #a31515"&gt;"POST"&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; request.ContentType = &lt;span style="color: #a31515"&gt;"application/json"&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; streamWriter = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;StreamWriter&lt;/span&gt;(request.GetRequestStream()))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; json = &lt;span style="color: #a31515"&gt;"{\"value\": \""&lt;/span&gt; + item.Value + &lt;span style="color: #a31515"&gt;"\"}"&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; streamWriter.Write(json);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;HttpWebResponse&lt;/span&gt; response = (&lt;span style="color: #2b91af"&gt;HttpWebResponse&lt;/span&gt;)request.GetResponse();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Stream&lt;/span&gt; responseStream = response.GetResponseStream();&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;DataContractJsonSerializer&lt;/span&gt; ser = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DataContractJsonSerializer&lt;/span&gt;(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;TestData&lt;/span&gt;));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;TestData&lt;/span&gt;)ser.ReadObject(responseStream);&lt;br&gt;} &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;On a donc vu qu’il est possible de détourner cette fonctionnalité pour l’utiliser au sein de nos projets, et dans ce cas de s’abstraire de toute la partie CRUD d’une application. &lt;/p&gt; &lt;p&gt;Tout le code est là, je ne vous le fournis donc pas !&lt;/p&gt;</description>
      <link>http://blog.woivre.fr/Archives/2012/9/utiliser-windows-azure-mobile-services-dans-vos-applications</link>
      <pubDate>2012-09-03T15:52:24.0000000Z</pubDate>
    </item>
    <item>
      <title>Nouvel endpoint disponible dans le mode PAAS de Windows Azure</title>
      <description>&lt;p&gt;Depuis le 7 juin dernier, vous avez du remarqué qu’il y a eu pas de changement du côté d’Azure, notamment avec l’arrivée du mode IAAS, cependant le mode PAAS qui existait avant ces nouveautés a été enrichies. Une des nouvelles fonctionnalités que j’aime bien, est la possibilité de définir des InstanceInput dans les endpoints de notre rôle Azure.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Pour configurer un endpoint de ce type, il vous suffit d’aller dans la configuration de votre rôle Azure, puis dans la partie Endpoint, comme on peut le voir ci-dessous : &lt;/p&gt; &lt;p&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="http://images.woivre.fr/wwoivre/windows-live-writer/bb9fb0b6820b_1026b/image_thumb_1.png" width="492" height="222"&gt;&lt;/p&gt; &lt;p&gt;Il est aussi possible de saisir ces informations directement dans le fichier de définition du service, comme ceci : &lt;/p&gt; &lt;p&gt; &lt;div style="font-size: 10pt; border-top: #000080 1px solid; font-family: 'Courier New', courier, monospace; border-right: #000080 1px solid; border-bottom: #000080 1px solid; color: #000; border-left: #000080 1px solid"&gt; &lt;div style="overflow: auto; padding-bottom: 2px; padding-top: 2px; padding-left: 5px; padding-right: 5px; background-color: #ffffff"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Endpoints&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&amp;nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;InputEndpoint&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;"&lt;span style="color: #0000ff"&gt;Endpoint1&lt;/span&gt;"&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;protocol&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;"&lt;span style="color: #0000ff"&gt;http&lt;/span&gt;"&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;port&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;"&lt;span style="color: #0000ff"&gt;80&lt;/span&gt;"&lt;span style="color: #0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;br&gt;&amp;nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;InstanceInputEndpoint&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;"&lt;span style="color: #0000ff"&gt;Endpoint2&lt;/span&gt;"&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;protocol&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;"&lt;span style="color: #0000ff"&gt;tcp&lt;/span&gt;"&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;localPort&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;"&lt;span style="color: #0000ff"&gt;3389&lt;/span&gt;"&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;AllocatePublicPortFrom&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;FixedPortRange&lt;/span&gt;&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;max&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;"&lt;span style="color: #0000ff"&gt;10109&lt;/span&gt;"&lt;span style="color: #0000ff"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;min&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&lt;/span&gt;"&lt;span style="color: #0000ff"&gt;10105&lt;/span&gt;"&lt;span style="color: #0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;AllocatePublicPortFrom&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&amp;nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;InstanceInputEndpoint&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Endpoints&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Le but de cet endpoint est d’attribué au load balancer Azure une plage de port qui redirigera vers un port privée, ainsi si dans mon cas j’ai 3 instances, lorsque que j’irais sur http://monservice.cloudapp.net:10105/ j’atteindrais ma machine virtuelle sur le port 3389, cependant les autres ports amèneront vers d’autres machines virtuelles.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Ici dans mon cas, je me sers de cette fonctionnalité pour accéder en remote desktop à mes machines, ce qui me permet d’accéder en remote à toutes mes machines sans pour autant avoir tous les fichiers rdp à télécharger sur le portail.&lt;/p&gt; &lt;p&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="http://images.woivre.fr/wwoivre/windows-live-writer/bb9fb0b6820b_1026b/image_thumb.png" width="575" height="210"&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Ce cas là n’est en soit pas très utile, mais cette fonctionnalité vous offre la possibilité d’implémenter des fonctionnalités propres à une seule machine et non pas à tout votre cluster de machines.&lt;/p&gt;</description>
      <link>http://blog.woivre.fr/Archives/2012/7/nouvel-endpoint-disponible-dans-le-mode-paas-de-windows-azure</link>
      <pubDate>2012-07-21T16:56:01.5562768Z</pubDate>
    </item>
  </channel>
</rss>