[Azure] Azure log management disponible sur Codeplex

Suite au dévelopement de mon application GeekComics disponible sur Windows 8, je souhaitais suivre l’utilisation de mon API hébergée dans Azure, récupérer les exceptions levées par l’API et par l’application Windows 8 et connaître les temps d’exécution des méthodes, etc.

 

Pour effectuer cette tâche, j’ai développé un outil nommé “Azure Log Management” disponible sur Codeplex : http://azurelogmanagement.codeplex.com/. Le code n’est pas parfait et certaines parties méritent d’être revues, mais c’est un premier jet.

 

Si vous avez des retours, des idées, etc, n’hésitez pas à me contacter.

 

Fonctionnalités

 

  • – Enregistrer les informations que vous souhaitez dans le table storage Azure.
  • – 2 modes : Entregistrement des erreurs et informations ou seulement des erreurs
  • – Log Viewer permet d’afficher des statistiques sur les visites

 

Pré-requis

 

  • – Toolkit WPF pour le Log viewer
  • – SDK Azure 1.8

 

Comment démarrer ?

 

  • – Enregistrer la chaine de connexion dans le fichier de configuration (Configuration Azure, web.config ou app.config)
  • – Mettez en place l’initialisation de la table Azure
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageAccount"));

CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("logs");
table.CreateIfNotExists();

String logType = CloudConfigurationManager.GetSetting("LogType");

LogManager.Table = table;
LogManager.LogType = logType;

 

  • – Définissez les informations que vous souhaitez enregistrer
public String GetHelloWorld()
{
    Stopwatch sw = Stopwatch.StartNew();
    Boolean hasError = false;

    try
    {
        Thread.Sleep(2000);
    }
    catch (Exception ex)
    {
        hasError = true;
        LogManager.Log(ex.ToString(), LogEntity.LogType.Error, 0);
    }
    finally
    {
        sw.Stop();
        if (hasError == false)
        {
            LogManager.Log("GetHelloWorld", LogEntity.LogType.Message, 
sw.ElapsedMilliseconds); } }
return "Hello World"; }

 

  • – Pour utiliser le Log Viewer, renseignez simplement la chaine de connexion dans l’app.config disponible dans le projet AzureLogManager.LogBoard.

 

Captures

 

Logs

 

Details

 

Stats

[Azure] KeyNotFoundException et Development Storage avec le Azure SDK 1.8

Depuis la sortie du SDK Azure 1.8 (Octobre 2012) et de la DLL Microsoft.WindowsAzure.Storage.dll en version 2.0, la récupération de la chaîne de connexion du compte de stockage sur l’émulateur avec la ligne de code suivante :

 

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageAccount"));

 

et la configuration des settings suivante :

 

image

 

lance une KeyNotFoundException avec le message suivant : “The given key was not present in the dictionary”.

 

Pour éviter le problème, changer la chaîne de connexion en :

 

UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://127.0.0.1

 

Solution trouvée à cette adresse : http://www.mostlydevelopers.com/blog/post/2012/11/05/CloudStorageAccountParse-%E2%80%93-Azure-SDK-18.aspx

[Azure] Utiliser le service TFS fourni par Windows Azure

UPDATE : TFSPreview rentre en version finale aujourd’hui et se trouve désormais à l’adresse suivante : https://tfs.visualstudio.com.

Comme prévu, une offre gratuite est présente. Les fonctionnalités sont disponibles à cette adresse : https://tfs.visualstudio.com/en-us/pricing/information/.

Les liens ci-dessous ont été mis à jour avec les nouvelles urls et les captures d’écran ne changent pas.

 

Depuis quelques mois, Microsoft met à disposition un TFS en mode cloud permettant à tout le monde de bénéficier d’un contrôle de code source. Pour l’instant en preview, ce service est gratuit. Certaines options deviendront par la suite payantes lorsque le projet passera en version finale. Pour plus d’informations, rendez-vous sur la page correspondante : https://tfs.visualstudio.com/en-us/pricing/information/.

 

Voici un petit guide de prise en main rapide.

 

Inscription

 

L’inscription se fait sur le site web https://tfs.visualstudio.com et ne nécessite qu’un compte LiveID.

 

Une fois le compte créé, rendez-vous sur l’adresse .visualstudio.com">https://<nom_choisi>.visualstudio.com

 

Exemple : https://aymericlagier.visualstudio.com/

 

Création du projet

 

Arrivé sur le portail créez un “team project”.

 

image

 

Renseignez le nom de votre projet.

 

image

 

Le “Process template” par défaut est celui de Scrum. Le portail permet également de créer des “Work items”, planifier des “Sprint”, etc.

 

Une fois le projet créé, le TFS est prêt à être utilisé dans Visual Studio.

 

Connexion avec Visual Studio

 

L’intégration dans Visual Studio 2012 est native. Si vous souhaitez l’utiliser sur Visual Studio 2010, il faudra télécharger un patch disponible ici : http://go.microsoft.com/fwlink/?LinkID=212065.

 

Au lancement de Visual Studio, cliquez sur “Connect To Team Foundation Server” puis sur “Servers

 

image

 

Cliquez sur “Add” et renseignez simplement l’adresse de votre TFS (.visualstudio.com">https://<nom_choisi>.visualstudio.com)

 

image

 

Reseignez le login/mot de passe de votre compte liveID puis sélectionnez le projet créé via le portail.

 

image

 

Une fois cette étape réalisée, vous pouvez créer un projet qui sera dans votre contrôle de code source.

 

Création du project

 

Créez un nouveau projet et cochez la case “Add to source control”.

 

image

 

Choisissez ensuite le projet que vous avez créé sur le portail.

 

image

 

Une fois la solution créée, on remarque des icônes “+” à côté des fichiers. Elles indiquent que les fichiers sont bien dans le contrôle de code source.

 

image

 

Pour envoyer les fichiers sur le serveur TFS (check in), faites un click droit sur la solution puis sélectionnez “Check In…”.

 

image

 

La fenêtre qui s’ouvre résume les fichiers qui seront envoyés sur le serveur et permet de mettre un commentaire sur cet envoi. Elle offre également la possibilité de relier ce check in à un work item précis.

 

Lorsque vous êtes prêt cliquez sur “Check In”.

 

image

 

Si tout s’est déroulé correctement, une notification apparait.

 

image

 

Récupération des dernières modifications

 

Pour récupérer les changements des autres membres du projet sur le contrôle de code source, faites un click droit sur la solution et sélectionnez “Get Lastest Version (‘Recursive)”.

 

image

[Azure] Envoyer des emails depuis Windows Azure

Dans le but d’envoyer des emails depuis un rôle déployé sur Windows Azure, Microsoft a signé un partenariat avec la société SendGrid. Grâce à cette offre, il est possible d’envoyer gratuitement 25 000 mails par mois.

 

Pré-requis

 

Pour valider l’inscription sur SendGrid, cette société souhaite pouvoir vérifier que vous êtes bien le propriétaire du site qui va envoyer les emails. Pour faire cette vérification vous avez 3 possibilités :

 

  1. Fournir une adresse email du domaine lié au site web renseigné (exemple : monsite.com et aymeric@monsite.com)
  2. Fournir une page sur le site qui contient le texte “sendgrid”
  3. Créer un enregistrement DNS CNAME pointant sur sendgrid.net

 

Dans le cadre d’Azure, le plus simple est de publier un web role avec comme page par défaut le texte “sendgrid”.

 

Inscription sur SendGrid

 

Pour vous inscrire sur SendGrid, rendez-vous sur la page dédiée à Azure ici et remplissez le formulaire d’inscription.

 

Dans le champ “Website”, renseignez le site que vous venez de déployer.

 

Après confirmation du mail saisi, l’activation du compte se faire en quelques heures.

 

Installation du package NuGet

 

Une fois que votre souscription a été validée par l’équipe SenGrid, vous pouvez commencer à utiliser les services.

 

image

 

Création et envoi d’un email

 

Une fois la librairie SendGrid référencée, créez simplement votre email avec les classes fournies par SendGrid

 

// Setup the email properties.
MailAddress from = new MailAddress("aymeric@lagier.com");
MailAddress[] to = new MailAddress[] 
{ 
    new MailAddress("aymeric.lagier@live.fr") 
};
MailAddress[] cc = new MailAddress[0];
MailAddress[] bcc = new MailAddress[0];
String subject = "Test mail";
String html = "<p>Hello World!</p>";
String text = "Hello World plain text!";
SendGridMail.TransportType transport = 
    SendGridMail.TransportType.SMTP;

// Create the email
SendGrid myMessage = SendGrid.GenerateInstance(
    from, 
    to, 
    cc, 
    bcc, 
    subject, 
    html, 
    text, 
    transport);

// Create credentials, specifying your user name and password.
var credentials =
    new NetworkCredential("sendgrid_username", "sendgrid_password");

// Create an SMTP transport for sending email.
var transportSMTP = SMTP.GenerateInstance(credentials);

// Send the email.
transportSMTP.Deliver(myMessage);

 

Documentation officielle : http://www.windowsazure.com/en-us/develop/net/how-to-guides/sendgrid-email-service/

 

Résultat

 

image