Il presente articolo è stato tradotto automaticamente.

.style0 { vertical-align:bottom; } .style1 { vertical-align:bottom; } .style2 { vertical-align:top; } .style3 { vertical-align:top; } .style4 { vertical-align:top; } .style5 { vertical-align:top; } .style6 { vertical-align:top; } .style7 { vertical-align:top; } .style8 { vertical-align:top; } .style9 { vertical-align:top; } .style10 { vertical-align:top; } .style11 { vertical-align:top; }

Applicazioni moderne

Potenziamento delle applicazioni moderne con Windows Azure Mobile Services

Rachel Appel

 

Rachel AppelIndipendentemente dalla piattaforma che targeting per la pubblicazione di app, Windows Azure Mobile Services (WAMS) è un back-end per domarli tutti.È un componente chiave della piattaforma Windows Azure ed è il back-end per lo sviluppo Web e cross-platform moderno app.In questo articolo si parlerà di impostazione WAMS a lavorare nello Visual Studio, forniscono una panoramica dell'API WAMS e spiegare la codifica necessari per costruire un moderno app con WAMS.

L'architettura multi-piattaforma di WAMS

Ci sono molti servizi di Windows Azure, che è possibile utilizzare per la gestione dei dati e alimentazione di back-end di un'applicazione, e non è raro per le applicazioni a consumare più di un servizio di Windows Azure.Qui sono alcuni dei servizi disponibili:

  • WAMS: Un cross-platform, completo set di risorse e servizi di back-end orientato specificamente per la costruzione veloce app.
  • SQL Azure: Questo è lo stesso popolare SQL Server, ma nella nube, con un'interfaccia di amministrazione Web facile da usare.È conveniente per piccole start-up, aziende e ISV.
  • Windows Azure tabella Storage: Un modo di NoSQL per lavorare con dati tabulari e a volte-non-così-tabulari.
  • Servizio di archiviazione Windows Azure BLOB Binary Large Object (): Un modo altamente scalabile per contenere dati in coppie chiave/valore nel cloud senza le preoccupazioni e le limitazioni dei dati strutturati.
  • Windows Azure Web Sites: Oltre al sito Web hosting, siti Web di Windows Azure può eseguire ASP.NET Web API e ASP.NET .Questo è un ottimo modo per potere legacy siti Web, programmi e applicazioni su HTTP senza dover fare molto architettonico rilavorazione.

Architettura di un'applicazione dipenderanno i suoi requisiti.Se l'applicazione ha bisogno di memorizzare grandi quantità (ad esempio, decine o centinaia di gigabyte di dati) di media o contenuto binario, utilizzando BLOB di Windows Azure Storage è probabilmente una migliore forma.Per la maggior parte delle applicazioni che solo leggere e scrivere dati testuali con alcune immagini di accompagnamento, WAMS è una soluzione semplice e facile.Molte applicazioni devono trattare con dati legacy, così la migrazione da SQL Server, SQL Server Compact (SQL CE) o qualsiasi della famiglia Microsoft SQL del database direttamente a SQL Azure potrebbe essere il percorso migliore se avete bisogno di un DBA per amministrare i dati.

Per la maggior parte delle applicazioni, WAMS è abbastanza adatto perché non solo ha archiviazione dei dati, ma anche un set completo di servizi di back-end in cima al database creato ai fini di supportare scenari comuni di infrastruttura di app come le notifiche push e autenticazione espliciti.

WAMS Core Services

Le funzionalità seguenti sono servizi WAMS core:

  • Dati: Naturalmente, alloggio e la manipolazione di dati è essenziale per ogni app, quindi WAMS lo supporta.Per ogni servizio di telefonia mobile, c'è un database SQL Azure dietro di esso.
  • Messaggistica: Le notifiche push sono sempre più importanti perché gli utenti vogliono essere sempre aggiornati.Come apps ottenere progressivamente più complesse, intuitiva e user-friendly — in altre parole, più moderno — funzioni quali la messaggistica push e banale di comunicazione in tempo reale diventa.Fortunatamente, utilizzando le notifiche push in WAMS è facile come un invito a inviare una notifica toast (un piccolo messaggio pop-up in parte superiore o inferiore-destra del sistema operativo) in questo modo:

push.wns.sendToastText04(channel, { text1: item.text });

  • Autenticazione: Protezione dei dati, soprattutto i dati utente, è importante come i dati stessi. Una pietra miliare della moderna apps è l'autenticazione tramite siti Web molto popolari, come Facebook o Twitter — così WAMS consente di autenticare con uno qualsiasi dei seguenti provider di identità:
  1. Account Microsoft (il provider di autenticazione precedentemente conosciuto come Windows Live ID)
  2. Facebook login
  3. Twitter login
  4. Login di Google

WAMS diverse librerie per la famiglia di Windows di sviluppo app, tra cui la libreria Windows Runtime (WinRT) per client gestiti, la libreria Windows per la libreria client JavaScript (WinJS) e REST Representational State Transfer () API per tutto lo sport — core services, autenticazione e messaggistica. Ci sono anche iOS e librerie client Android per la parità di cross-platform.

Utilizzare l'API WAMS nell'archivio di Windows o Windows Phone progetti

Se si sta costruendo un app Store di Windows o Windows Phone, il codice sarà quasi identico, e il codice JavaScript è notevolmente simile sul lato WinJS. Una volta che hai gli strumenti di sviluppo adeguato e WAMS impostato e configurato (vedi bit.ly/NAAQz8 per ulteriori informazioni su questo), scrivere il codice per accedere a oggetti e dati in un servizio di telefonia mobile è facile, ma diverso dal client/server tradizionale o lo sviluppo di applicazioni n-tier. Questo è perché WAMS si integra con l'app in modo tale che alcuni cambiamenti nel modello di app possono causare cambiamenti in strutture di dati sottostanti. In altre parole, si può buttare via molte delle istruzioni di definizione dei dati SQL tradizionale e semplicemente modificare i membri di una classe, ricompilare, eseguire l'applicazione e verificare i cambiamenti a livello di database. Oltre a questo, JavaScript prende il posto di SQL come la sintassi du jour per la manutenzione del database come script di convalida o creando vincoli sui dati. Essere in grado di facilmente le modifiche del database di script dal prompt dei comandi, app e strumento di amministrazione Web riduce il processo di costruzione-app.

Lo spazio dei nomi Microsoft.WindowsAzure.MobileServices fornisce accesso standard-questione di oggetti nel servizio mobile o il database SQL Azure sottostante. Nell'esempio di codice seguente viene creata un'istanza di MobileServiceClient:

public static MobileServiceClient MobileService = new MobileServiceClient(   "https://your-very-own-service-url.azure-mobile. net/",   "your-very-own-key-that-is-a-gigantic-string-of-characters-and-numbers" );

Come potete vedere, il vostro URL app WAMS e chiave sono i parametri del costruttore MobileServiceClient. Per trovare il vostro URL e chiave, accedi al portale di Windows Azure e navigare al servizio mobile, quindi fare clic sull'icona di nuvola a sinistra della voce di menu cruscotto.

Nell'esempio di codice precedente, la classe MobileServiceClient si comporta un po' come un oggetto di connessione, ma senza quei fastidiosi metodi open e close dall'epoca dell'oggetto SqlConnection. La classe MobileServiceClient gestisce la connettività per te. Se i dati sono impostati per il consumo pubblico, quindi non è necessario chiamare il metodo MobileServiceClient.login, tuttavia è possibile accedere a tabelle, eseguire query e ordinare i dati. Naturalmente, le operazioni più complesse o attenti alla sicurezza possono richiedere le credenziali.

Una volta che avete un'istanza valida di una classe MobileServiceClient, è quindi possibile utilizzare GetTable <T> per interagire con un tavolo WAMS sottostante:

private IMobileServiceTable<Person> personsTable =   MobileService.GetTable< Person>();

Il parametro di tipo T in IMobileServiceTable <T> il compilatore di ispezionare le proprietà e le informazioni sul parametro — in questo caso la persona di classe Figura 1— tramite il mapping alla tabella sottostante a livello di database. Questo consente di aggiungere o modificare le proprietà durante lo sviluppo e vedere le modifiche dello schema riflesse nel cloud in fase di esecuzione, risultante in un'alleanza più simbiotica tra il codice e il database. Tuttavia, le modifiche dello schema a livello di database non avvenga automaticamente per ogni cambiamento nel codice. Ad esempio, aggiungendo una proprietà al codice in Figura 1 crea una nuova colonna nella tabella, ma l'eliminazione di una proprietà esistente non è causa di una cancellazione.

Figura 1 la classe Person

// Data model/class code. public class Person {   public int Id { get; set; }   public string Name { get; set; }   [DataMember(Name = "Birthday")]    public DateTime Date { get; set; }   public string Picture { get; set; }   public string Notes { get; set; } }

GetTable <T> Restituisce un oggetto IMobileServiceTable che rappresenta la tabella sottostante reale in WAMS e contiene metodi di inserimento, aggiornamento, eliminazione e ordinamento servizi, come illustrato di seguito:

// Perform delete asynchronously where item is of type Person, see Figure 1. await itemsTable.DeleteAsync(item); // Select specific records with LINQ query var people =   personsTable.Select(p => p.Birthday > DateTime.Now.AddDays(14));

È possibile costruire il livello dei dati nel codice mediante la creazione di una classe personalizzata che corrisponde i nomi della tabella e membro. Questa tecnica è conosciuta come Convenzione sulla configurazione, che è un modo per ridurre il codice di configurazione XML gonfio in favore della continuità e coerenza nella denominazione, con conseguente meno codice che è più gestibile. Ad esempio, la classe e lo schema in Figura 1 dimostrare che il codice della classe client esegue il mapping a un tavolo WAMS e dei suoi membri.

Il codice in Figura 1 crea il database schema mostrato Figura 2.

Figura 2 convenzione sopra configurazione partite classe codice e i nomi dello Schema di Database

Column Tipo
Id Bigint SQL
Name Stringa
Data DateTime
Foto Stringa
Nota Stringa

WAMS deriva dal tipo di dati della proprietà nel codice i tipi di dati. Alcuni tipi, tuttavia, non possono essere rappresentati con gli attributi di dati, in particolare di immagini e dati binari. Questo significa che quando si desidera memorizzare un'immagine, è necessario utilizzare Windows Azure BLOB storage perché è più scalabile, meno costosi e molto meglio l'alternativa, che è la codifica Base64 in una stringa e poi riporlo in una tabella WAMS esegue. Archiviazione Windows Azure BLOB ha un API REST e managed API così gli sviluppatori possono facilmente accedere ai servizi su piattaforme e preferenze.

Per eseguire insert, aggiornare o eliminare operazioni, basta fare un'istanza dell'oggetto personalizzato e chiamare il metodo corrispondente dall'oggetto IMobileServiceTable:

Person person = new Person {   Name = "Alan Turing",   Birthday = DateTime dte = new DateTime(1912,6,23),   Picture = base64string, // Image encoding done elsewhere in code.    Notes = "A father of modern computer science. There is a test " +     "named after him that I fail regularly"}; await personsTable.InsertAsync(person);

Perché la chiamata a InsertAsync è chiaramente asincrona, la chiamata non blocca il codice dell'interfaccia utente da corsa, ed è possibile gestire i dati in background senza interferire con le attività dell'utente. Apps Store di Windows e Windows Phone funziona in modo asincrono per impostazione predefinita, come non si può sempre contare su connettività affidabile.

Se stai lavorando in XAML, è possibile associare dati tabella chiamando il metodo ToListAsync dell'oggetto IMobileServiceTable. Questo metodo prepara i dati e restituisce in un oggetto che lega facilmente tabelle WAMS agli elementi ListView XAML, come illustrato nell'esempio di codice seguente:

var results = await todoTable.ToListAsync(); items = new ObservableCollection<TodoItem>(results); ListItems.ItemsSource = items;

Il codice precedente è simile al tradizionale codice di associazione dati in ambito Microsoft .NET. È inoltre possibile chiamare i metodi dell'oggetto IMobileServiceTable per restituire un oggetto IList <T> o IEnumerable <T> Se si desidera manualmente loop attraverso i dati, anziché associare dati.

Gestione delle funzioni avanzate WAMS

Naturalmente, è necessario per amministrare e mantenere il servizio di telefonia mobile, dati, sicurezza e tutte le attività usuali che andare con manutenzione di back-end, come non tutti di quel genere di lavoro dovrebbe essere fatto in app. Fortunatamente, WAMS dà poche scelte per quanto riguarda attività amministrative di back-end:

  • Strumento da riga di comando: Questo è grande non importa quale piattaforma utilizzare per lo sviluppo; è possibile utilizzare qualsiasi prompt dei comandi una volta che hai scaricato e installato le librerie da riga di comando (vedere bit.ly/14Q49bi per ulteriori informazioni su questo).
  • Amministrazione Web: Grande per il back-end sviluppo cross-platform e conosciuto anche come il portale di Windows Azure, questo strumento ti permette di fare tutte le nozioni di base on-line — creare basi di dati, eseguire script server-side, gestire servizi, gestire la sicurezza e così via (il portale è accessibile dal sito principale di Windows Azure a bit.ly/4yqVhP).
  • SQL Server Management Studio: Un classico strumento di amministrazione database Microsoft è possibile utilizzare per collegare e gestire i database dietro un servizio di telefonia mobile (vedere bit.ly/VdqpZH per ulteriori informazioni su questo).

WAMS contiene un succinto ma completo WAMS lato server di script (bit.ly/XvsVec). È possibile avviare i comandi dello strumento della riga di comando o da on-line il portale di Windows Azure. Al prompt dei comandi, è sufficiente inserire il comando "azure mobile" per vedere un elenco dei comandi disponibili e "lista mobile Azzurra" per elencare tutti i vostri servizi di telefonia mobile.

Proprio come il tuo codice di app, funzioni di script sul lato server sono "registrate" in una tabella tramite convenzioni di denominazione, così gli script devono corrispondere le firme del metodo per inserire, leggere, aggiornare e cancellare le operazioni. Qui ci sono le firme di manipolazione dei dati script in JavaScript:

  • Inserire la funzione: inserire (voce, utente, richiesta) {... }
  • Funzione di lettura: leggere (query, utente, richiesta) {... }
  • Funzione di aggiornamento: aggiornamento (voce, utente, richiesta) {... }
  • Eliminare la funzione: del (id, utente, richiesta) {... }

Si noti che tutto il che necessario è incluso come parametri del metodo, ovvero la riga di dati, l'identità dell'utente e la richiesta stessa. Questo consente di eseguire la protezione a livello di riga, nonché di eseguire qualsiasi tipo di regole sul lato server, come ad esempio la convalida dei dati quando si verificano queste attività.

Ad esempio, si potrebbe voler eseguire la convalida per limitare la lunghezza della stringa in arrivo per gli inserimenti. È possibile farlo utilizzando questo codice:

function insert(item, user, request) {   if (item.text.length > 20) {     request.respond(statusCodes.BAD_REQUEST,     'The length of the input text must be less than 20');   } else {     request.execute();     } }

Mentre è possibile modificare questi script presso il portale di Windows Azure, si può anche farlo nel vostro editor di testo preferito e salvare il file con estensione. js, per esempio, person.insert.js. È quindi possibile caricare lo script preparato tramite la riga di comando con un comando con questa sintassi e firma:

azure mobile script upload <service-name> table/<table-name>.<operation>.js

Un comando per caricare lo script di esempio precedente sarebbe guardare qualcosa come questo (dove "Notevole" è il nome del servizio e "persona" è il nome della tabella):

azure mobile script upload NotablePeople table/person.insert.js

Come ci si potrebbe aspettare, i risultati di un errore di convalida possono essere catturati da un'istruzione try/catch in qualsiasi linguaggio lato client.

Ahimè, gli sviluppatori SQL potrebbero sentirsi fuori tocco a questo punto, con tutti i server-side JavaScript tendenze ultimamente, ma si può sentire più a casa utilizzando SQL all'interno di un oggetto script mssql, anche se è miscelato con JavaScript:

mssql.query('select * from people', {   success: function(results) {     console.log(results);   } });

Questo è particolarmente utile se si proviene da un background di sviluppo aziendale che è pieno di SQL, in quanto è molto diverso da quello la natura dinamica di JavaScript.

Per rivedere, WAMS è un set completo di servizi di back-end per la costruzione rapida, cross-platform app. Tutti i servizi di Windows Azure tranne SQL Azure implementare automaticamente il resto-friendly URL, e perché il resto è cross-platform, non è necessario preoccuparsi di garantire che l'architettura app sosterrà nuovi dispositivi client o agenti utente in futuro. Nel frattempo, lavorare con WAMS non richiede Installa software pesante sul client a causa della sua potente amministrazione Web e strumenti della riga di comando, così come easy-to-use API per tutto dall'archiviazione dei dati di base di e-mailing di massa e notifiche push.

Rachel Appel è un developer evangelist presso Microsoft New York City. Contattarla tramite il suo sito Web a rachelappel.com o via email a rachel.appel@microsoft.com. È anche possibile seguire i suoi ultimi aggiornamenti su Twitter a twitter.com/rachelappel.

Grazie all'esperto tecnica seguente per la revisione di questo articolo: Paul Batumi (Microsoft)
Paul Batumi sono un program manager di Microsoft e funziona su Windows Azure Mobile Services. Il suo obiettivo è il che lo rende facile per gli sviluppatori mobili aggiungere funzionalità cloud alle loro applicazioni. Può essere raggiunto a pbatum@microsoft.com