Migrare un progetto esistente ad Azure

Dopo il deploy di Dexter, finalmente torno a fare un po’ di post tecnici (speriamo che duri Smile) e spero di raccontare un po’ delle tante “figosità”- passatemi il termine - che ho inserito nell’ultima versione, prima fra tutte il supporto a Windows Azure.
Non che ci siano cose difficili da fare lato tecnologico per migrare una piattaforma ad Azure, ma alcune cose, se pur semplici, non è detto che siano scontante. Quando mi è stato chiesto il supporto al cloud di casa Microsoft, la prima domanda che mi sono posto è stata: come modifico la soluzione e come aggiungo un qualcosa di preesistente?

I passaggi sono veramente pochi e semplici; per prima cosa ci basta aggiungere alla Solution un nuovo progetto di tipo “Windows Azure Cloud Service” e non associare nessun web/worker role al nuovo progetto. Da questo momento la nostra solution dovrebbe contenere il nuovo progetto e, una volta cliccato con il tasto destro, si ha la possibilità di associare un progetto esistente presente nella solution come webrole del nostro Cloud Service.
Gli screenshot seguenti mostrano la proceura passo passo.

29-03-2011 23-29-42 29-03-2011 23-30-2329-03-2011 23-30-36

29-03-2011 23-33-3929-03-2011 23-33-58

Una volta completati questi passaggi è necessario che la nostra applicazione referenzi le tre assembly indispensabili al funzionamento sul cloud:

  • Microsoft.WindowsAzure.Diagnostics;
  • Microsoft.WindowsAzure.ServiceRuntime;
  • Microsoft.WindowsAzure.StorageClient;

Come ultimo passaggio è necessario inserire una classe, “WebRole.cs” nel nostro caso, nel progetto web per far sì che l’environment di sviluppo di Azure possa verificare il corretto funzionamento dell’istanza.

La classe dovrà contenere il seguente codice:

 

using System.Linq;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.ServiceRuntime;

namespace Dexter.Web.UI.Azure {
    public class WebRole : RoleEntryPoint {
        public override bool OnStart ( ) {
            // For information on handling configuration changes
            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.
            RoleEnvironment.Changing += RoleEnvironmentChanging;

            CloudStorageAccount.SetConfigurationSettingPublisher ( ( configName , configSetter ) => configSetter ( RoleEnvironment.GetConfigurationSettingValue ( configName ) ) );

            return base.OnStart ( );
        }

        static void RoleEnvironmentChanging ( object sender , RoleEnvironmentChangingEventArgs e ) {
            // If a configuration setting is changing
            if ( e.Changes.Any ( change => change is RoleEnvironmentConfigurationSettingChange ) ) {
                // Set e.Cancel to true to restart this role instance
                e.Cancel = true;
            }
        }
    }
}


Da questo momento in poi possiamo fare il run dell’applicazione, ed il tutto dovrebbe girare sotto “Azure”.

Soon altri post del tipo “come migrare un’applicazione ad Azure senza referenziare Azure Smile


Comments