Aggiornare il servizio mobile .NET di Azure esistente al servizio appUpgrade your existing .NET Azure Mobile Service to App Service

I dispositivi mobili del servizio app offrono un nuovo modo per creare applicazioni mobili usando Microsoft Azure.App Service Mobile is a new way to build mobile applications using Microsoft Azure. Per altre informazioni, vedere Che cosa sono le app per dispositivi mobili?.To learn more, see [What are Mobile Apps?].

Questo argomento descrive come eseguire la migrazione di un'applicazione back-end .NET esistente da Servizi mobili di Azure a una nuova app per dispositivi mobili del servizio app.This topic describes how to upgrade an existing .NET backend application from Azure Mobile Services to a new App Service Mobile Apps. Durante una migrazione, l'applicazione Servizi mobili esistente può continuare a funzionare.While you perform this upgrade, your existing Mobile Services application can continue to operate. Se si deve aggiornare un'applicazione back-end Node.js, vedere Aggiornamento dei servizi mobili Node.js.If you need to upgrade a Node.js backend application, refer to Upgrading your Node.js Mobile Services.

Quando si esegue l'aggiornamento di un back-end per dispositivi mobili a Servizio app di Azure, questo ha accesso a tutte le funzionalità del servizio app e la fatturazione viene eseguita in base ai prezzi del servizio app, non a quelli di Servizi mobili.When a mobile backend is upgraded to Azure App Service, it has access to all App Service features and are billed according to [App Service pricing], not Mobile Services pricing.

Eseguire la migrazione o aggiornareMigrate vs. upgrade

Sono disponibili due opzioni per il passaggio da Servizi mobili al servizio app: la migrazione o l'aggiornamento.There are two options for moving from Mobile Services to App Service: migration or upgrade. Entrambe le opzioni consentono di accedere a tutte le funzionalità di hosting del servizio app:Either option will give you access to all of the hosting capabilities of App Service:

  • migrazione di un servizio cambia semplicemente l'ambiente sottostante che ospita il back-end mobile.Migrating a service just changes the underlying environment that hosts your mobile backend. Non richiede alcuna modifica del codice per il progetto del client mobile o del server mobile.It requires no code changes to either the mobile client or the mobile server project. Se si usa l'opzione di migrazione automatica, viene mantenuto l'URL service.azure mobile.net .If you use the automated migration option, this preserves your service.azure-mobile.net URL.
  • aggiornamento di un servizio richiede modifiche del codice per il progetto sia del server che del client, ma consente di sfruttare le nuove funzionalità di Mobile SDK, come i miglioramenti dell'autenticazione e la superiore flessibilità per il progetto server.Upgrading a service does require code changes to both your server and client project, but allows you to take advantage of new mobile SDK features, such as improvements to authentication and more flexibility for your server project.

Suggerimento

Prima di procedere a un aggiornamento, è consigliabile eseguire una migrazione .It is recommended that you perform a migration before going through an upgrade. In questo modo, è possibile inserire entrambe le versioni dell'applicazione nello stesso piano del servizio app, senza sostenere costi aggiuntivi.This way, you can put both versions of your application on the same App Service Plan and incur no additional cost.

Miglioramenti dell’SDK del server .NET di App per dispositivi mobiliImprovements in Mobile Apps .NET server SDK

L'aggiornamento al nuovo SDK delle app per dispositivi mobili offre i vantaggi seguenti:Upgrading to the new Mobile Apps SDK provides the following benefits:

  • Maggiore flessibilità alle dipendenze di NuGet.More flexibility on NuGet dependencies. L'ambiente di hosting non fornisce più le proprie versioni dei pacchetti NuGet, pertanto è possibile utilizzare le versioni compatibili alternative.The hosting environment no longer provides its own versions of NuGet packages, so you can use alternative compatible versions. Tuttavia, se sono presenti nuove correzioni critiche dei bug o aggiornamenti della protezione per l’SDK del Server mobile o dipendenze, è necessario aggiornare il servizio manualmente.However, if there are new critical bugfixes or security updates to the Mobile Server SDK or dependencies, you must update your service manually.
  • Maggiore flessibilità nell’SDK per dispositivi mobili.More flexibility in the mobile SDK. È possibile controllare in modo esplicito le funzionalità e le route impostate, come autenticazione, API di tabella e endpoint di registrazione push.You can explicitly control which features and routes are set up, such as authentication, table APIs, and the push registration endpoint. Per altre informazioni, vedere Come usare l'SDK del server .NET per le app per dispositivi mobili di Azure.To learn more, see How to use the .NET server SDK for Azure Mobile Apps.
  • Supporto per altri tipi di progetto ASP.NET e route.Support for other ASP.NET project types and routes. È ora possibile ospitare controller MVC e API Web nello stesso progetto del progetto di back-end per dispositivi mobili.You can now host MVC and Web API controllers in the same project as your mobile backend project.
  • Supporto per le nuove funzionalità di autenticazione del Servizio app, che consentono di utilizzare una configurazione di autenticazione comune tra web e app per dispositivi mobili:Support for new App Service authentication features, which allow you to use a common authentication configuration across your web and mobile apps.

Panoramica sull'aggiornamento di baseBasic upgrade overview

In molti casi, l'aggiornamento sarà semplice come passare al nuovo SDK del server di app per dispositivi mobili e ripubblicare il codice in una nuova istanza di app per dispositivi mobili.In many cases, upgrading will be as simple as switching to the new Mobile Apps server SDK and republishing your code onto a new Mobile App instance. Esistono, tuttavia, alcuni scenari che richiedono alcune configurazioni aggiuntive, ad esempio l'autenticazione avanzata e l'uso dei processi pianificati.There are, however some scenarios which will require some additional configuration, such as advanced authentication scenarios and working with scheduled jobs. Ciascuno di questi scenari viene trattato nelle sezioni seguenti.Each of these is covered in the later sections.

Suggerimento

Si consiglia di leggere e comprendere integralmente il resto di questo argomento prima di avviare un aggiornamento.It is advised that you read and understand the rest of this topic completely before starting an upgrade. Prendere nota delle funzionalità usate che sono indicate di seguito.Make note of any features you use which are called out below.

Gli SDK del client di Servizi mobili non sono compatibili con il nuovo SDK del server di App per dispositivi mobili.The Mobile Services client SDKs are not compatible with the new Mobile Apps server SDK. Per garantire la continuità del servizio per l'app, non devono essere pubblicate modifiche in un sito che usa client pubblicati.In order to provide continuity of service for your app, you should not publish changes to a site currently serving published clients. È invece necessario creare una nuova app per dispositivi mobili che agisce da duplicato.Instead, you should create a new mobile app that serves as a duplicate. È possibile inserire questa applicazione nello stesso piano di servizio app per evitare di sostenere costi finanziari aggiuntivi.You can put this application on the same App Service plan to avoid incurring additional financial cost.

Si avranno quindi due versioni dell'applicazione: una che rimane invariata e usa le app pubblicate e l'altra che è possibile aggiornare e usare come destinazione con una nuova versione del client.You will then have two versions of the application: one which stays the same and serves published apps in the wild, and the other which you can then upgrade and target with a new client release. È possibile spostare e testare il codice in base alle esigenze, ma è necessario assicurarsi che tutte le correzioni di bug apportate vengano applicate a entrambe le versioni.You can move and test your code at your pace, but you should make sure that any bug fixes you make get applied to both. Quando si ritiene di avere aggiornato alla versione più recente il numero desiderato di app client in circostanze normali, è possibile eliminare l'app migrata originale, se lo si desidera.Once you feel that a desired number of client apps in the wild have updated to the latest version, you can delete the original migrated app if you desire.

La struttura completa del processo di aggiornamento è la seguente:The full outline for the upgrade process is as follows:

  1. Creare una nuova app per dispositivi mobiliCreate a new Mobile App
  2. Aggiornare il progetto per l'uso dei nuovi SDK del serverUpdate the project to use the new Server SDKs
  3. Rilasciare una nuova versione dell'applicazione clientRelease a new version of your client application
  4. (Facoltativo) Eliminare l'istanza migrata originale(Optional) Delete your original migrated instance

Creazione di una seconda istanza dell'applicazioneCreating a second application instance

Il primo passaggio per l'aggiornamento prevede la creazione della risorsa di app per dispositivi mobili che ospiterà la nuova versione dell'applicazione.The first step in upgrading is to create the Mobile App resource which will host the new version of your application. Se è già stata eseguita la migrazione di un servizio mobile esistente, è consigliabile creare questa versione nello stesso piano di hosting.If you have already migrated an existing mobile service, you will want to create this version on the same hosting plan. Aprire il portale di Azure e passare all'applicazione migrata.Open the [Azure portal] and navigate to your migrated application. Prendere nota del piano di servizio app in cui è in esecuzione.Make note of the App Service Plan it is running on.

Creare quindi la seconda istanza dell'applicazione seguendo le istruzioni per la creazione di back-end .NET.Next, create the second application instance by following the .NET backend creation instructions. Quando viene richiesto di selezionare il piano di servizio app o "piano di hosting", scegliere il piano dell'applicazione migrata.When prompted to select you App Service Plan or "hosting plan" choose the plan of your migrated application.

Potrebbe essere utile usare lo stesso database e hub di notifica usati in Servizi mobili.You will likely want to use the same database and Notification Hub as you did in Mobile Services. È possibile copiare questi valori aprendo il portale di Azure e passando all'applicazione originale, quindi facendo clic su Impostazioni > Impostazioni dell'applicazione.You can copy these values by opening [Azure portal] and navigating to the original application, then click Settings > Application settings. In Stringhe di connessione copiare MS_NotificationHubConnectionString e MS_TableConnectionString.Under Connection Strings, copy MS_NotificationHubConnectionString and MS_TableConnectionString. Passare al nuovo sito di aggiornamento e incollare i valori, sovrascrivendo gli eventuali valori esistenti.Navigate to your new upgrade site and paste them in, overwriting any existing values. Ripetere questo processo per tutte le altre impostazioni dell'applicazione necessarie per l'app.Repeat this process for any other application settings your app needs. Se non si usa un servizio migrato, è possibile leggere le stringhe di connessione e le impostazioni dell'app dalla scheda Configura della sezione Servizi mobili del portale di Azure classico.If not using a migrated service, you can read connection strings and app settings from the Configure tab of the Mobile Services section of the [Azure classic portal].

Creare una copia del progetto ASP.NET per l'applicazione e pubblicarla nel nuovo sito.Make a copy of the ASP.NET project for your application and publish it to your new site. Usando una copia dell'applicazione client aggiornata con il nuovo URL, verificare che tutto funzioni come previsto.Using a copy of your client application updated with the new URL, validate that everything works as expected.

Aggiornamento del progetto serverUpdating the server project

Le app per dispositivi mobili forniscono un nuovo Mobile App Server SDK che offre molte delle funzionalità del runtime di Servizi per dispositivi mobili.Mobile Apps provides a new Mobile App Server SDK which provides much of the same functionality as the Mobile Services runtime. È innanzitutto necessario rimuovere tutti i riferimenti ai pacchetti di Servizi mobili.First, you should remove all references to the Mobile Services packages. In Gestione pacchetti NuGet cercare WindowsAzure.MobileServices.Backend.In the NuGet package manager, search for WindowsAzure.MobileServices.Backend. Per la maggior parte delle app saranno presenti diversi pacchetti, tra cui WindowsAzure.MobileServices.Backend.Tables e WindowsAzure.MobileServices.Backend.Entity.Most apps will see several packages here, including WindowsAzure.MobileServices.Backend.Tables and WindowsAzure.MobileServices.Backend.Entity. In tal caso, iniziare dal pacchetto più basso nella struttura delle dipendenze, ad esempio Entity, e rimuoverlo.In such a case, start with the lowest package in the dependency tree, such as Entity, and remove it. Quando richiesto, non rimuovere tutti i pacchetti dipendenti.When prompted, do not remove all dependant packages. Ripetere questo processo finché non è stato rimosso WindowsAzure.MobileServices.Backend stesso.Repeat this process until you have removed WindowsAzure.MobileServices.Backend itself.

A questo punto si avrà un progetto che non fa più riferimento agli SDK di Servizi mobili.At this point you will have a project that no longer references Mobile Services SDKs.

Si aggiungeranno quindi i riferimenti agli SDK delle app per dispositivi mobili.Next you will add references the Mobile Apps SDK. Per questo aggiornamento, la maggior parte degli sviluppatori vorrà scaricare e installare il pacchetto Microsoft.Azure.Mobile.Server.Quickstart , che permette di ottenere l'intero set necessario.For this upgrade, most developers will want to download and install the Microsoft.Azure.Mobile.Server.Quickstart package, as this will pull in the entire required set.

Vi saranno alcuni errori del compilatore derivanti dalle differenze tra gli SDK, ma sono semplici da risolvere e vengono descritti nella parte rimanente di questa sezione.There will be quite a few compiler errors resulting from differences between the SDKs, but these are easy to address and are covered in the rest of this section.

Configurazione di baseBase configuration

In WebApiConfig.cs è quindi possibile sostituire:Then, in WebApiConfig.cs, you can replace:

    // Use this class to set configuration options for your mobile service
    ConfigOptions options = new ConfigOptions();

    // Use this class to set WebAPI configuration options
    HttpConfiguration config = ServiceConfig.Initialize(new ConfigBuilder(options));

conwith

    HttpConfiguration config = new HttpConfiguration();
    new MobileAppConfiguration()
        .UseDefaultConfiguration()
    .ApplyTo(config);

Nota

Per altre informazioni sul nuovo SDK del server .NET e su come aggiungere/rimuovere funzionalità dall'app, vedere l'argomento Come usare l'SDK del server .NET .If you wish to learn more about the new .NET server SDK and how to add/remove features from your app, please see the [How to use the .NET server SDK] topic.

Se l'app fa uso delle funzionalità di autenticazione, sarà inoltre necessario registrare un middleware OWIN.If your app makes use of the authentication features, you will also need to register an OWIN middleware. In questo caso, è necessario spostare il codice di configurazione precedente in una nuova classe di avvio OWIN.In this case, you should move the above configuration code into a new OWIN Startup class.

  1. Aggiungere il pacchetto NuGet Microsoft.Owin.Host.SystemWeb se non è già incluso nel progetto.Add the NuGet package Microsoft.Owin.Host.SystemWeb if it is not already included in your project.
  2. In Visual Studio fare clic con il pulsante destro del mouse sul progetto e scegliere Aggiungi -> Nuovo elemento.In Visual Studio, right click on your project and select Add -> New Item. Selezionare Web -> Generale -> Classe di avvio di OWIN.Select Web -> General -> OWIN Startup class.
  3. Spostare il codice precedente per MobileAppConfiguration da WebApiConfig.Register() nel metodo Configuration() per la nuova classe di avvio.Move the above code for MobileAppConfiguration from WebApiConfig.Register() to the Configuration() method of your new startup class.

Assicurarsi che il metodo Configuration() termini con:Make sure the Configuration() method ends with:

    app.UseWebApi(config)
    app.UseAppServiceAuthentication(config);

Vi sono ulteriori modifiche relative all'autenticazione, che sono illustrate di seguito nella sezione relativa all'autenticazione completa.There are additional changes related to authentication which are covered in the full authentication section below.

Uso dei datiWorking with Data

In Servizi mobili, il nome dell'app per dispositivi mobili veniva usato come nome dello schema predefinito nel programma di installazione di Entity Framework.In Mobile Services, the mobile app name served as the default schema name in the Entity Framework setup.

Per assicurarsi di fare riferimento allo stesso schema, usare il codice seguente per impostare lo schema in DbContext per l'applicazione:To ensure that you have the same schema being referenced as before, use the following to set the schema in the DbContext for your application:

    string schema = System.Configuration.ConfigurationManager.AppSettings.Get("MS_MobileServiceName");

Assicurarsi di avere impostato MS_MobileServiceName se si esegue l'operazione precedente.Please make sure you have MS_MobileServiceName set if you do the above. È anche possibile fornire un altro nome di schema se l'applicazione lo ha personalizzato in precedenza.You can also provide another schema name if your application customized this previously.

Proprietà di sistemaSystem Properties

DenominazioneNaming

Nell'SDK del server di Servizi mobili di Azure le proprietà di sistema contengono sempre un prefisso con un doppio carattere di sottolineatura (__):In the Azure Mobile Services server SDK, system properties always contain a double underscore (__) prefix for the properties:

  • __createdAt__createdAt
  • __updatedAt__updatedAt
  • __deleted__deleted
  • __version__version

Gli SDK client di Servizi mobili hanno una logica speciale per l'analisi delle proprietà di sistema in questo formato.The Mobile Services client SDKs have special logic for parsing system properties in this format.

Nelle app per dispositivi mobili di Azure le proprietà di sistema non hanno più un formato speciale e sono denominate come segue:In Azure Mobile Apps, system properties no longer have a special format and have the following names:

  • createdAtcreatedAt
  • updatedAtupdatedAt
  • deleteddeleted
  • versionversion

Gli SDK client delle app per dispositivi mobili usano i nuovi nomi delle proprietà di sistema, pertanto non sono necessarie modifiche al codice client.The Mobile Apps client SDKs use the new system properties names, so no changes are required to client code. Tuttavia, se si effettuano direttamente chiamate REST al servizio, è necessario modificare le query di conseguenza.However, if you are directly making REST calls to your service then you should change your queries accordingly.

Archivio localeLocal store

Le modifiche ai nomi delle proprietà di sistema implicano che un database locale di sincronizzazione offline per Servizi mobili non è compatibile con le applicazioni per dispositivi mobili.The changes to the names of system properties mean that an offline sync local database for Mobile Services is not compatible with Mobile Apps. Se possibile, evitare di eseguire l'aggiornamento di app client da Servizi mobili alle app per dispositivi mobili finché le modifiche in sospeso non sono state inviate al server.If possible, you should avoid upgrading client apps from Mobile Services to Mobile Apps until after pending changes have been sent to the server. L'app aggiornata deve quindi usare un nuovo nome di file di database.Then, the upgraded app should use a new database filename.

Se un'app client viene aggiornata da Servizi mobili alle app per dispositivi mobili mentre sono presenti modifiche offline in sospeso nella coda delle operazioni, il database di sistema deve essere aggiornato per l'uso dei nuovi nomi di colonna.If a client app is upgraded from Mobile Services to Mobile Apps while there are pending offline changes in the operation queue, then the system database must be updated to use the new column names. In iOS, questa operazione può essere eseguita usando migrazioni semplificate per modificare i nomi di colonna.On iOS, this can be achieved using lightweight migrations to change the column names. In Android e nel client gestito .NET, è necessario scrivere codice SQL personalizzato per rinominare le colonne per le tabelle degli oggetti dati.On Android and the .NET managed client, you should write custom SQL to rename the columns for your data object tables.

In iOS, è necessario modificare lo schema dei dati di base per le entità di dati in modo che corrispondano a quanto segue.On iOS, you should change your Core Data schema for your data entities to match the following. Si noti che le proprietà createdAt, updatedAt e version non hanno più un prefisso ms_:Note that the properties createdAt, updatedAt and version no longer have an ms_ prefix:

AttributoAttribute TipoType NotaNote
idid Stringa, contrassegnata come obbligatoriaString, marked required chiave primaria nell'archivio remotoprimary key in remote store
createdAtcreatedAt DataDate (facoltativo) viene mappato alla proprietà di sistema createdAt(optional) maps to createdAt system property
updatedAtupdatedAt DataDate (facoltativo) viene mappato alla proprietà di sistema updatedAt(optional) maps to updatedAt system property
versionversion StringString (facoltativo) usato per il rilevamento dei conflitti, viene mappato a version(optional) used to detect conflicts, maps to version

Query delle proprietà di sistemaQuerying system properties

In Servizi mobili di Azure, le proprietà di sistema non vengono inviate per impostazione predefinita, ma solo quando vengono richieste usando la stringa di query __systemProperties.In Azure Mobile Services, system properties are not sent by default, but only when they are requested using the query string __systemProperties. Al contrario, nel sistema App per dispositivi mobili di Azure le proprietà sono sempre selezionate poiché fanno parte del modello a oggetti dell'SDK server.In contrast, in Azure Mobile Apps system properties are always selected since they are part of the server SDK object model.

Questa modifica influisce principalmente sulle implementazioni personalizzate di gestori di dominio, come le estensioni di MappedEntityDomainManager.This change mainly impacts custom implementations of domain managers, such as extensions of MappedEntityDomainManager. In Servizi mobili, se un client non richiede mai proprietà del sistema, è possibile usare un MappedEntityDomainManager che non esegue effettivamente il mapping di tutte le proprietà.In Mobile Services, if a client never requests any system properties, it is possible to use a MappedEntityDomainManager that does not actually map all properties. Tuttavia, in App per dispositivi mobili di Azure, queste proprietà non mappate genereranno un errore nelle query GET.However, in Azure Mobile Apps, these unmapped properties will cause an error in GET queries.

Il modo più semplice per risolvere il problema consiste nel modificare gli oggetti DTO in modo che ereditino da ITableData anziché EntityData.The easiest way to resolve the issue is to modify your DTOs so that they inherit from ITableData instead of EntityData. Aggiungere quindi l'attributo [NotMapped] ai campi che devono essere omessi.Then, add the [NotMapped] attribute to the fields that should be omitted.

Ad esempio, il codice seguente definisce TodoItem senza proprietà di sistema:For example, the following defines TodoItem with no system properties:

using System.ComponentModel.DataAnnotations.Schema;

public class TodoItem : ITableData
{
    public string Text { get; set; }

    public bool Complete { get; set; }

    public string Id { get; set; }

    [NotMapped]
    public DateTimeOffset? CreatedAt { get; set; }

    [NotMapped]
    public DateTimeOffset? UpdatedAt { get; set; }

    [NotMapped]
    public bool Deleted { get; set; }

    [NotMapped]
    public byte[] Version { get; set; }
}

Nota: se si verificano errori in NotMapped, aggiungere un riferimento all'assembly System.ComponentModel.DataAnnotations.Note: if you get errors on NotMapped, add a reference to the assembly System.ComponentModel.DataAnnotations.

CORSCORS

Servizi mobili includeva un certo supporto per CORS eseguendo il wrapping della soluzione CORS di ASP.NET.Mobile Services included some support for CORS by wrapping the ASP.NET CORS solution. Questo livello di wrapping è stato rimosso per offrire allo sviluppatore un maggiore controllo, pertanto è possibile sfruttare direttamente il supporto per CORS di ASP.NET.This wrapping layer has been removed to give the developer more control, so you can directly leverage ASP.NET CORS support.

Le principali aree problematiche per l'uso di CORS sono rappresentate dal fatto che le intestazioni eTag e Location devono essere consentite per il corretto funzionamento degli SDK del client.The main areas of concern if using CORS are that the eTag and Location headers must be allowed in order for the client SDKs to work properly.

Notifiche pushPush Notifications

Per il push, l'elemento principale che potrebbe risultare mancante dall'SDK del server è la classe PushRegistrationHandler.For push, the main item that you may find missing from the Server SDK is the PushRegistrationHandler class. Le registrazioni vengono gestite in modo leggermente diverso nelle app per dispositivi mobili e le registrazioni prive di tag sono abilitate per impostazione predefinita.Registrations are handled slightly differently in Mobile Apps, and tagless registrations are enabled by default. La gestione dei tag può essere eseguita usando API personalizzate.Managing tags may be accomplished by using custom APIs. Per altre informazioni, vedere le istruzioni relative alla registrazione per i tag .Please see the registering for tags instructions for more information.

Processi pianificatiScheduled Jobs

I processi pianificati non vengono compilati nelle app per dispositivi mobili, pertanto sarà necessario eseguire l'aggiornamento dei singoli processi esistenti eventualmente presenti nel back-end .NET.Scheduled jobs are not built into Mobile Apps, so any existing jobs that you have in your .NET backend will need to be upgraded individually. Una possibilità consiste nel creare un processo Web pianificato nel sito del codice dell'app per dispositivi mobili.One option is to create a scheduled [Web Job] on the Mobile App code site. È anche possibile impostare un controller che contiene il codice del processo e configurare l' Utilità di pianificazione di Azure per accedere a tale endpoint in base alla pianificazione prevista.You could also set up a controller that holds your job code and configure the [Azure Scheduler] to hit that endpoint on the expected schedule.

Modifiche varieMiscellaneous changes

Tutti gli ApiController che verranno usati da un client mobile ora devono disporre dell'attributo [MobileAppController] .All ApiControllers which will be consumed by a mobile client must now have the [MobileAppController] attribute. Questo non è più incluso per impostazione predefinita, in modo che gli altri ApiController non siano interessati dai formattatori per dispositivi mobili.This is no longer included by default so that other ApiControllers to go unaffected by the mobile formatters.

L'oggetto ApiServices non è più incluso nell'SDK.The ApiServices object is no longer part of the SDK. Per accedere alle impostazioni dell'app per dispositivi mobili, è possibile usare il codice seguente:To access Mobile App settings, you can use the following:

MobileAppSettingsDictionary settings = this.Configuration.GetMobileAppSettingsProvider().GetMobileAppSettings();

Analogamente, la registrazione viene ora effettuata mediante la scrittura di tracce ASP.NET standard:Similarly, logging is now accomplished using the standard ASP.NET trace writing:

ITraceWriter traceWriter = this.Configuration.Services.GetTraceWriter();
traceWriter.Info("Hello, World");  

Considerazioni sull'autenticazioneAuthentication considerations

I componenti di autenticazione di Servizi mobili sono ora stati spostati nella funzionalità di autenticazione/autorizzazione del servizio app.The authentication components of Mobile Services have now been moved into the App Service Authentication/Authorization feature. Per informazioni sull'abilitazione di questa funzionalità per il sito, vedere l'argomento Aggiungere l'autenticazione all'app per dispositivi mobili .You can learn about enabling this for your site by reading the Add authentication to your mobile app topic.

Per alcuni provider, come AAD, Facebook e Google, dovrebbe essere possibile sfruttare la registrazione esistente dall'applicazione di copia.For some providers, such as AAD, Facebook, and Google, you should be able to leverage the existing registration from your copy application. È sufficiente passare al portale del provider di identità e aggiungere un nuovo URL di reindirizzamento alla registrazione.You simply need to navigate to the identity provider's portal and add a new redirect URL to the registration. Configurare quindi l'autenticazione/autorizzazione del servizio app con l'ID client e il segreto.Then configure App Service Authentication/Authorization with the client ID and secret.

Autorizzazione dell'azione del controllerController action authorization

Tutte le istanze dell'attributo [AuthorizeLevel(AuthorizationLevel.User)] ora devono essere modificate per l'uso dell'attributo ASP.NET standard [Authorize].Any instances of the [AuthorizeLevel(AuthorizationLevel.User)] attribute must now be changed to use the standard ASP.NET [Authorize] attribute. Inoltre, i controller ora sono anonimi per impostazione predefinita, come nelle altre applicazioni ASP.NET.Additionally, controllers are now Anonymous by default, as in other ASP.NET applications. Se si usava una delle altre opzioni AuthorizeLevel, ad esempio Admin o Application, tenere presente che ora non sono più disponibili.If you were using one of the other AuthorizeLevel options, such as Admin or Application, please note that these are gone. È invece possibile impostare AuthorizationFilters per i segreti condivisi o configurare un'entità servizio AAD per abilitare le chiamate da servizio a servizio in modo sicuro.You can instead set up AuthorizationFilters for shared secrets or configure an AAD Service Principal to enable service-to-service calls securely.

Recupero di informazioni aggiuntive sull'utenteGetting additional user information

È possibile ottenere informazioni aggiuntive sull'utente, inclusi i token di accesso tramite il metodo GetAppServiceIdentityAsync() :You can get additional user information, including access tokens through the GetAppServiceIdentityAsync() method:

    FacebookCredentials creds = await this.User.GetAppServiceIdentityAsync<FacebookCredentials>();

Inoltre, se l'applicazione stabilisce dipendenze su ID utente, ad esempio memorizzandole in un database, è importante notare che gli ID utente tra Servizi mobili e App per dispositivi mobili del servizio app sono diversi.Additionally, if your application takes dependencies on user IDs, such as storing them in a database, it is important to note that the user IDs between Mobile Services and App Service Mobile Apps are different. È tuttavia ancora possibile ottenere l'ID utente di Servizi mobili.You can still get the Mobile Services User ID, though. Tutte le sottoclassi ProviderCredentials hanno una proprietà UserId.All of the ProviderCredentials subclasses have a UserId property. Pertanto, continuando dall'esempio precedente:So continuing from the example before:

    string mobileServicesUserId = creds.Provider + ":" + creds.UserId;

Se l'app stabilisce dipendenze sugli ID utente, è importante sfruttare la stessa registrazione con un provider di identità, se possibile.If your app does take any dependencies on user IDs, it is important that you leverage the same registration with an identity provider if possible. Gli ID utente sono in genere destinati alla registrazione dell'applicazione che è stata usata, pertanto l'introduzione di una nuova registrazione potrebbe creare problemi di associazione degli utenti ai relativi dati.User IDs are typically scoped to the application registration that was used, so introducing a new registration could create problems with matching users to their data.

Autenticazione personalizzataCustom authentication

Se l'app usa una soluzione di autenticazione personalizzata, è necessario assicurarsi che il sito aggiornato abbia accesso al sistema.If your app is using a custom authentication solution, you will want to make sure that the upgraded site has access to the system. Seguire le nuove istruzioni per l'autenticazione personalizzata nella panoramica di .NET Server SDK per integrare la soluzione.Follow the new instructions for custom authentication in the [.NET server SDK overview] to integrate your solution. Si noti che i componenti dell'autenticazione personalizzata sono ancora in versione di anteprima.Please note that the custom authentication components are still in preview.

Aggiornamento dei clientUpdating clients

Dopo aver reso operativo un back-end dell'app per dispositivi mobili, è possibile lavorare su una nuova versione dell'applicazione client che ne faccia uso.Once you have an operational Mobile App backend, you can work on a new version of your client application which consumes it. App per dispositivi mobili include anche una nuova versione degli SDK del client e, come nel caso dell'aggiornamento del server descritto in precedenza, sarà necessario rimuovere tutti i riferimenti agli SDK di Servizi mobili prima di installare le versioni di App per dispositivi mobili.Mobile Apps also includes a new version of the client SDKs, and similar to the server upgrade above, you will need to remove all references to the Mobile Services SDKs before installing the Mobile Apps versions.

Una delle principali modifiche tra le versioni è rappresentata dai costruttori che non richiedono più una chiave applicazione.One of the main changes between the versions is that the constructors no longer require an application key. Ora è sufficiente passare l'URL dell'app per dispositivi mobili.You now simply pass in the URL of your Mobile App. Ad esempio, nei client .NET, il costruttore MobileServiceClient ora è:For example, on the .NET clients, the MobileServiceClient constructor is now:

    public static MobileServiceClient MobileService = new MobileServiceClient(
        "https://contoso.azurewebsites.net", // URL of the Mobile App
    );

Per altre informazioni sull'installazione dei nuovi SDK e sull'uso della nuova struttura, visitare i collegamenti seguenti:You can read about installing the new SDKs and using the new structure via the links below:

Se l'applicazione usa le notifiche push, prendere nota delle specifiche istruzioni di registrazione per ogni piattaforma, perché sono state apportate alcune modifiche anche in questo ambito.If your application makes use of push notifications, make note of the specific registration instructions for each platform, as there have been some changes there as well.

Quando la nuova versione del client è pronta, provarla con il progetto server aggiornato.When you have the new client version ready, try it out against your upgraded server project. Dopo averne verificato il funzionamento, è possibile rilasciare una nuova versione dell'applicazione per i clienti.After validating that it works, you can release a new version of your application to customers. Infine, quando i clienti avranno ricevuto gli aggiornamenti, sarà possibile eliminare la versione di Servizi mobili dell'app.Eventually, once your customers have had a chance to receive these updates, you can delete the Mobile Services version of your app. A questo punto, sono stati aggiornati completamente a un'App per dispositivi mobili del servizio app utilizzando l’SDK più recente del server di App per dispositivi mobili.At this point, you have completely upgraded to an App Service Mobile App using the latest Mobile Apps server SDK.