Wilfried Woivré & .Net

Trucs et astuces avec Windows Azure Table Storage

MAI10

En ce vendredi quasiment férié…. je vous donne une petite astuce pour valider vos connexion avec le Table Storage.

 

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.

 

Alors pour rappel, il est possible de créer une instance de CloudStorageAccount de deux façons :

string accountKey = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
string accountName = "azertyqsdfgh";

var csa = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
var csa2 = CloudStorageAccount.Parse(string.Format("DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}", accountKey, accountName));

 

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.

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.

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.

 

public static bool ValidateStorageAccount(this CloudStorageAccount storageAccount)
{
    if (storageAccount == null) throw new  ArgumentNullException("storageAccount");

    var tableClient = storageAccount.CreateCloudTableClient();
    try
    {
        tableClient.ListTablesSegmented(string.Empty, 1, null);
    }
    catch(StorageException ex)
    {
        return false;
    }

    return true;
}

 

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.

Et pour finir, je vous donne un lien vers un super article qui parle du Table Storage  :  Windows Azure Table Storage 2.0 Qu’est ce qui a changé ? écrit par moi.

Remonter

Travailler avec Windows Azure et un débit réduit

DÉCE5

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.  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 !

 

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 !

 

Windows Azure Mobile Services

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 !

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  …

 

Pour résumé, les avantages sont :

  • Simple à mettre en place
  • Intègre les fonctionnalités de base que l’on veut d’un backend d’une application mobile
    • CRUD
    • Push
    • Authentification

Les inconvénients  :

  • Difficile de sortir des sentiers battus sans faire diverses recherches sur internet
    • Gestion de listes d’objets (ex : liste des commentaires associés à un message)
    • Gestion de l’identité des utilisateurs connectées.
  • 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.

 

Windows Azure WebSites

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.

 

Pour résumé, les avantages sont :

  • Simple à mettre en place
  • Rapide à déployer
  • Testable en local

Les inconvénients :

  • Tout doit être développé : Push, fournisseurs d’identité …

 

Windows Azure Cloud Services

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

image

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 !

 

Pour résumé, les avantages sont :

  • Tellement nombreux pour être listés ici
  • N’ayez aucune limite en mode PAAS avec ce service

Les inconvénients :

  • Plus ou moins long à déployer selon le réseau

 

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 !

Remonter

Windows Azure : Comment modifier le nom de son abonnement

OCTO30

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 !

 

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.

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 : https://account.windowsazure.com/Subscriptions

Puis sur l’abonnement que vous gérez vous allez dans les détails et vous pouvez modifier son nom !

image

 

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 :  https://windows.azure.com/download/publishprofile.aspx

Remonter

Créer des urls propres pour vos sites Web

AVRI29

Si comme moi, vous aimez voir des urls lisibles quand vous naviguez sur des sites, vous vous êtes déjà penchez sur la question sur comment formater votre url, afin qu’elle soit facilement lisible pour vos utilisateurs, et pour les moteurs de recherche.

 

Alors comme vous devez le savoir il y a la méthode UrlEncode disponible dans le Framework, mais personnellement je n’aime pas trop cette méthode, puisqu’elle vous traduit les caractères spéciaux en caractères encodés, ce que je ne trouve pas très lisible.

L’autre solution est de remplacer tous les caractères spéciaux par un autre caractère associé, en créant 2 listes, et en réalisant un mapping, mais il suffit que vous oubliez un caractère spécial, et c’est le drame !

 

La dernière solution, c’est de réaliser une normalisation de votre chaîne de caractères, et de garder uniquement les caractères qui vous intéressent, voici donc la méthode que j’utilise pour mon blog :

 

public static string GenerateShortName(this string valueToConvert)
{
    StringBuilder sb = new StringBuilder();
    string st = valueToConvert.ToLower().Normalize(NormalizationForm.FormD);

    foreach (char t in st)
    {
        System.Globalization.UnicodeCategory uc = System.Globalization.CharUnicodeInfo.GetUnicodeCategory(t);
        switch (uc)
        {
            case System.Globalization.UnicodeCategory.LowercaseLetter:
            case System.Globalization.UnicodeCategory.DecimalDigitNumber:
                sb.Append(t);
                break;
            case System.Globalization.UnicodeCategory.SpaceSeparator:
                if (sb.ToString().LastOrDefault() != '-')
                    sb.Append('-');
                break;
            default:
                break;
        }
    }

    string value = sb.ToString().Normalize(NormalizationForm.FormC);

    return value;
}

Alors si on prend comme exemple le texte suivant : “Unity : Gestion des paramètres primitifs”, regardons ce que ça donne lorsqu’on l’encode, où que l’on utilise cette méthode.

image

A mon sens, le résultat est sans appel, mais je ne suis pas  à 100% objectif !

Et voilà, même près tout ce temps, le Framework .Net peut vous apprendre énormément de choses !

Remonter

Installer le Windows Azure Toolkit pour Windows Phone sur Windows 8

OCTO4

Alors si comme moi, vous avez jouer au geek, et que vous avez décidé d’installer Windows 8 Developer Preview sur votre machine physique, vous pouvez avoir quelques problèmes avec certains installeurs.

 

J’ai récemment essayé le Windows Azure Toolkit pour Windows Phone sur Windows 8, et là c’est le drame, ça ne marche pas, on obtient cette erreur :

 image

Alors pour contourner ce problème rien de plus simple, il vous faudra éditer le fichier "C:\WindowsAzure\WATWindowsPhone\Setup\Dependencies.dep" et modifier les numéros de version d’OS ciblés en y ajoutant le numéro 8102 comme on peut le voir ci dessous :

 

<dependencies>
  <os type="Vista;Server" buildNumber="6001;6002;7000;7100;7600;7601;8102">

Voilà en espérant que ça en aidera quelques uns !

Remonter