Comme l'hébergement d'applications se déplace de nos environnements de mise en scène locales au nuage, un des secteurs qui doit etre améliorer est la possibilité d'inclure le déploiement dans nos processus de génération automatisée. En utilisant les bits du CTP AppFabric de juin, Visual Studio a fait un excellent travail en permettant aux développeurs de concevoir, construire et déployer des applications AppFabric. Cependant, les outils actuels ne fournissent pas une façon d'intégrer ces outils dans un processus de construction standard, reproductibles. L'objectif de ce poste est de décrire les étapes nécessaires pour intégrer le déploiement automatisé de AppFabric dans votre processus de génération et montrer certaines des fonctions REST API que nous avons développée dans le gestionnaire de l'Application.

Avant de débuter, exécutons grâce à une liste d'outils que j'utilise pour cet exemple :

Puisque le but de ce poste est d'utiliser MSBuild pour déployer notre Application AppFabric, vous allez avoir besoin de vous inscrire sur notre site de laboratoires. Pour demander l'accès, procédez comme suit.

  • Inscrivez-vous sur le portail de gestion AppFabric à http://portal.appfabriclabs.com/ .
  • Choisissez l'entrée intitulée « Applications » sous le nœud de « AppFabric » sur le côté gauche de l'écran.
  • Cliquez sur le bouton « Request Namespace » sur la barre d'outils en haut de l'écran.
  • On vous demandera de répondre à quelques questions avant de pouvoir demander l'espace de noms.
  • Votre demande sera dans un État «pending », jusqu'à ce qu'elle soit approuvé et vous pourrez commencer à utiliser les fonctionnalités de la CTP.

Utiliser l'API REST

Le gestionnaire d'Application AppFabric fournit une API RESTful utile pour automatiser la plupart des tâches disponibles dans le gestionnaire de l'Application. Nous allons profiter des méthodes application lifecycle (Démarrer, arrêter, déployer, etc.) pour écrire notre tâche personnalisée. Pour vous aider à démarrer avec l'API, nous avons rassemblé une classe ResourceAccessor.cs pour certains des appels que nous faisons en utilisant le protocole AtomPub résumé. Par exemple, pour obtenir les détails d'une application, vous serait instancier la classe à l'aide de votre clé de l'espace de noms et de la gestion :

// create a new instance of the Application Manager REST API wrapper

ResourceAccessor appManagerAPI = new ResourceAccessor(this.Namespace, this.ManagementKey);

// get some details about our application

ApplicationResource ar = appManagerAPI.GetApplication("myApplicationName");

Cet exemple suppose que vous avez un compte existant sur http://portal.appfabriclabs.com, et que vous avez déjà créé un espace de noms. Pour obtenir la clé de la gestion de votre espace de noms, cliquez sur le bouton « View » situé dans le panneau Propriétés du côté droit du portail, puis copiez la clé dans votre presse-papiers :

Nos fins, nous nous intéressons principalement en automatisant l'arrêt, l'ONU-déploiement, l'importation, la déploiement, puis redémarrer l'application. Par exemple, pour démarrer l'application, nous pouvons émettre un appel de SendCommand :

// attempt to start the application

Log.LogMessage(MessageImportance.Normal, "Starting the application ...");

appManagerAPI.SendCommand(this.ApplicationName, LifecycleCommand.Start);

Si vous êtes intéressé en automatisant les autres commandes de l'application, les échantillons, que nous avons inclus devraient vous donner une longueur d'avance.

Bâtir la tâche MSBuild

Maintenant que nous sommes à l'aise avec l'API de repos, il est temps de commencer à travailler sur notre tâche MSBuild personnalisé. C'est relativement facile et très bien documentée :

http://msdn.Microsoft.com/en-us/library/t9883dzc.aspx

Nous avons besoin de créer un nouveau.Projet de la bibliothèque de classes NET pour notre tâche personnalisée. Pour cet exemple, j'ai choisi d'implémenter une classe qui hérite de la « Tâche » et substitue la méthode Execute :

public class AppManagerDeploy : Task

{

public override bool Execute()

       {    

              ...

       }

}

Pour déployer notre package personnalisé, la méthode Execute utilise le reste API Wrapper pour arrêter l'application en cours, ONU-déployer l'application et ensuite télécharger le nouveau package :

/// <summary>

/// This is the main function that executes when creating a custom MSBuild Task.  This

/// function is responsible for uploading the given *.afpkg file to the Application

/// Manager API.

/// </summary>

/// <returns></returns>

public override bool Execute()

{    

       // output debugging information to the MSBuild console

       ...

       // create a new instance of the Application Manager API

ResourceAccessor appManagerAPI = new ResourceAccessor(this.Namespace, this.ManagementKey);

       // check to see if the requested application is in a valid state for the upload

// operation (stopped, undeployed)

       ...

       // upload the given *.afpkg file to the Application Manager deployment service

       appManagerAPI.UploadPackage(this.ApplicationName, this.PackagePath);

       // attempt to deploy the application

       Log.LogMessage(MessageImportance.Normal, "Deploying the application ...");

crResult = appManagerAPI.SendCommand(this.ApplicationName, LifecycleCommand.Deploy);

       // attempt to start the application

       Log.LogMessage(MessageImportance.Normal, "Starting the application ...");

       crResult = appManagerAPI.SendCommand(this.ApplicationName, LifecycleCommand.Start);

       Log.LogMessage(MessageImportance.High, "Deployment Complete!");

       return true;

}

Pour la source complète, veuillez visiter notre GitHub.

Attacher la tâche MSBuild pour l'Application AppFabric Azure

Après que la tâche MSBuild personnalisée est complète, nous attachons maintenant la tâche à notre fichier de *.csproj application actuelle. J'ai choisi d'utiliser l'Application de Ticker Stock disponible dans les échantillons de CTP de juin, et la version modifiée de cette solution est disponible avec le code source pour ce poste. Pour modifier le fichier *.csproj, vous devez :

  • Ouvrez votre fichier de solution AppFabric demande (Ex. StockTickerApp.sln)
  • Cliquez avec le bouton droit sur le projet de AppFabric contenant des App.cs et de décharger le projet
  • Cliquez avec le bouton droit sur le projet déchargé et modifier le fichier *.csproj
  • Faites défiler vers le bas du fichier *.csproj et ajouter cette cible juste avant la </project> tag :

<UsingTask TaskName="AppManagerDeploy"

       AssemblyFile="C:\<Path to Samples>\AFDeployTask\bin\Debug\Microsoft.Samples.AppFabric.MSBuildTask.dll"

/>

<Target Name="DeployToAppFabric" AfterTargets="Build" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">

<Message Text="Deploying Project to AppFabric Portal" Importance="high" />          

       <AppManagerDeploy

              Namespace="justbe"

              ManagementKey="jmjMPi0GvG97U/eISgswcdt/K3zlrr+MyPS8+DQhlqk="

              ApplicationName="stockticker"                           

              PackagePath="$(MSBuildProjectDirectory)\bin\release\publish\StockTickerApp.afpkg"

       />

</Target>

Si vous choisissez de mettre en œuvre cette tâche dans le cadre de votre stratégie de création et de déploiement, vous pourrait enregistrer l'assembly de Microsoft.Samples.AppFabric.MSBuildTask.dll dans le GAC pour éviter les référençant le chemin vers le *.dll chaque fois. La commande UsingTask s'attache à la nouvelle Assemblée à la build et garantit que nous pouvons utiliser la tâche de AppManagerDeploy, que nous venons de créer. La tâche de AppManagerDeploy accepte les champs suivants :

  • Namespace – l'espace de noms application générée dans le portail d'Azur
  • ManagementKey – la clé de la gestion namespace accessible sur le portail d'Azur
  • ApplicationName – le nom de l'application dans le gestionnaire d'Application AppFabric
  • PackagePath – le chemin relatif au fichier *.afpkg généré pendant la génération

Cet objectif est configuré pour exécuter uniquement lorsque vous utilisez la configuration du mode de sortie . Nous avons maintenant deux façons de l'exécution de notre génération avec une commande de déployer : en construisant dans Visual Studio à l'aide du mode de sortie, ou par l'émission d'une commande MSBuild l'invite de commandes. Étant donné que le point de l'exercice est de créer une tâche MSBuild pour builds automatisés, Let's étape grâce à l'exécution de notre génération à l'invite de commandes Visual Studio. Tout d'abord naviguer le chemin où votre fichier de *.sln application est stockée. Puis exécutez la commande pour générer votre projet :

Gardez à l'esprit ; Cela prendra sans doute quelque temps à exécuter. Cependant, une fois le déploiement complet vous devriez obtenir un message de réussite dans la console :

Après avoir laissé la tâche de déploiement à exécuter, consultez le journal Admin dans le gestionnaire d'Application pour examiner toutes les commandes qui ont été exécutés :

D'autres exemples

Pour d'autres exemples d'utilisation de l'API Windows d'azur AppFabric Application Manager reste, veillez à consulter notre échantillon PowerShell dans la CTP de June. Pour les autres grandes ressources sur l'utilisation d'azur AppFabric, veuillez consulter notre blog sur http://blogs.msdn.com/b/appfabric/.