Roberto Brunetti

Developing in the cloud

.NET Programming

Archives

Windows Azure Storage: DevtableGen

Per testare in locale una applicazione Windows Azure possiamo usufruire del Development Storage, ovvero l'ambiente installato dall'SDK che simula lo storage di Windows Azure in locale. Il Development Storage si appoggia a SQL Express (o SQL Server se preferite) utilizzando una sua struttura predefinita per accogliere Blob e Queue.

Per quanto riguarda le tabelle del Table Storage occorre invece creare una struttura ad-hoc che rappresenti le proprietà definite sull'entità .NET da memorizzare sullo storage. Per un progetto Web Role o Worker Role (in pratica per un progetto Azure) Visual Studio fornisce un comodissimo menù "Create Test Table" accessibile tramite il tasto destro sul progetto stesso. Questo menù crea in locale le tabelle e le colonne necessarie per ospitare la nostra entità applicativa.

Per la creazione delle tabelle in locale viene controllata la presenza di classi derivate da DataServiceContext dove sia presente una proprietà che restituisce IQueryable<T>, dove T sta per la definizione della classe. In pratica Visual Studio cerca le classi derivate e trovando nel progetto una classe derivata da TableStorageDataServiceContext (la classe base della libreria StorageClient) che a sua volta deriva da DataServiceContext prova a vedere se abbiamo esposto una proprietà IQueryable<T>; trovata questa proprietà, Visual Studio legge la classe <T> e individua le proprietà PartitionKey, RowKey e Timestamp che arrivano per derivazione da TableStorageEntity e le proprietà della nostra classe.Potremmo però decidere di sfruttare il Cloud Storage da una applicazione on-premise e di conseguenza aver bisogno del Development Storage per testare in locale l'applicazione. In questo caso, non possiamo però usufruire del meccanismo automatizzato di Visual Studio per creare le tabelle locali in quanto il menù Create Test Tables si abilita solo su un progetto Web Role o Worker Role: in questo caso ci possiamo appoggiare ad una utility a riga di comando che esegue il prezioso lavoro di Visual Studio; in realtà, anche Visual Studio, si appoggia a questa utility quando viene invocato il menù Create Test Tables.L’utility in questione è denominata DevtableGen.exe ed è accessibile dalla directory dell’SDK di Windows Azure.

"C:\Program Files\Windows Azure SDK\v1.0\bin\DevtableGen.exe"
   /forceCreate "
   /server:localhost\SQLExpress" "
   /database:CloudService_02"  
   "obj\Debug\MyApp.dll;"

 Il parametro /forceCreate serve per cancellare e ricreare lo store, /server indica l’istanza di SQL Server da utilizzare, /database è ovviamente il database; l’ultimo parametro è l’elenco degli assembly dove deve esssere cercata la classe derivata da DataServiceContext che esponga una proprietà IQueryable<T>.

 

Posted: lug 25 2009, 12:11 by rob | with no comments
Filed under: