Sommario Ringraziamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiii Prefazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii 1 Introduzione al Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Differenti approcci al Cloud Computing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Infrastructure as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Software as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Platform as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Cloud Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Una prospettiva di lungo termine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Windows Azure come Soluzione PaaS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Grandi opportunità per piccole aziende . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Grandi opportunità per grandi aziende . . . . . . . . . . . . . . . . . . . . . . . . . 10 Windows Azure e il Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2 Introduzione alla piattaforma Windows Azure . . . . . . . . . . . . . . 15 Il sistema operativo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 La creazione di un servizio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Windows Azure Storage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Worker Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Virtual Machine Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Windows Azure AppFabric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Service Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Access Control Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Caching Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Integration Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Composite Application Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 SQL Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 ix x Sommario 3 Creare un progetto Web Role. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Software Development Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Windows Azure Tools per Microsoft Visual Studio . . . . . . . . . . . . . . . . . . . . . 43 Il Template per il Progetto Web Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Il progetto Cloud. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Effettuare il Deployment su Windows Azure. . . . . . . . . . . . . . . . . . . . . . . . . . 56 Configurazione e upgrade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Il File di Definizione del Servizio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Proprietà del Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4 Windows Azure Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Il Local Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Windows Azure Storage Account. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Windows Azure Management Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Blob API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 5 Table, Queue e Worker Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Il Table Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Il Queue Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 6 Dettagli sul Sistema Operativo Windows Azure. . . . . . . . . . . . . 137 Live ID, Subscription e Tariffazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Gruppo di Affinità. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Content Delivery Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 I Certificati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Diagnostica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Sommario 7 Windows Azure AppFabric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 I Componenti di Windows Azure AppFabric . . . . . . . . . . . . . . . . . . . . . . . . . 161 Service Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Direct Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 HTTP e Management URI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 8 OData, WCF Data Services e Astoria Offline. . . . . . . . . . . . . . . . 193 Astoria Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 WCF Data Services (ADO.NET Data Services) . . . . . . . . . . . . . . . . . . . . . . . . . 194 I Componenti Principali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 WCF Data Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Query e Relazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Filtro, Ordine e Paginazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 WCF Data Service Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Client .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Introduzione alla sicurezza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 9 SQL Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Le funzionalità di SQL Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 Accedere a un Database SQL Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Creazione di un Database Server nel Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Accedere a SQL Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Il Motore Relazionale di SQL Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 Migrare un Database Esistente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 SQL Azure Migration Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 xi xii Sommario 10 Accedere ai Servizi Azure da qualunque client . . . . . . . . . . . . . 259 Creare un Progetto Storage Account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 Accedere allo Storage Account tramite PHP . . . . . . . . . . . . . . . . . . . . . . . . . 272 Usare HTTP/REST. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 11 Architettura Applicativa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Le Caratteristiche di una Soluzione Multitier . . . . . . . . . . . . . . . . . . . . . . . . . 281 Il Data Access Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Il Service Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Indice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303