Condividi tramite


Panoramica di .NET per le app di Windows Store

In .NET Framework viene fornito un sottoinsieme di tipi gestiti che puoi usare per creare app di Windows Store per Windows usando C# o Visual Basic. Questo subset di tipi gestiti viene chiamato .NET per app di Windows Store e consente agli sviluppatori di .NET Framework di creare app in Windows Store in un framework di programmazione noto. Alcuni tipi che non sono correlati allo sviluppo di app in Windows Store non sono inclusi nel subset.

Usa questi tipi gestiti con i tipi dall'API Windows Runtime per la creazione delle app in Windows Store. In genere, non noterai alcuna differenza nell'utilizzo di tipi gestiti e di tipi Windows Runtime a parte che i primi risiedono negli spazi dei nomi che iniziano con System, mentre i tipi Windows Runtime risiedono negli spazi dei nomi che iniziano con Windows. .NET per app di Windows Store e Windows Runtime forniscono insieme un set completo di tipi e membri disponibili per lo sviluppo di app in Windows Store con C# o Visual Basic.

Il subset di tipi e membri gestiti è stato progettato con attenzione allo sviluppo di app in Windows Store. Pertanto, non include quanto segue:

  • I tipi e i membri non applicabili allo sviluppo di app in Windows Store (quali console e tipi ASP.NET).

  • I tipi obsoleti e legacy.

  • I tipi che si sovrappongono a Windows Runtime.

  • I tipi e i membri che eseguono il wrapping della funzionalità del sistema operativo (come EventLog e i contatori delle prestazioni).

  • I membri che provocano confusione (come il metodo di Close sui tipi di I/O).

In alcuni casi, un tipo usato in un'app desktop di .NET Framework non esiste in .NET per app di Windows Store. In alternativa, puoi usare un tipo da Windows Runtime. Ad esempio, la classe System.IO.IsolatedStorage.IsolatedStorageSettings non è inclusa nel .NET per app di Windows Store, ma la classe Windows.Storage.ApplicationDataContainer fornisce un comportamento simile per la memorizzazione impostazioni dell'app. Nella sezione Conversione del codice .NET Framework esistente sono inclusi esempi di modifiche comuni che potrebbero essere necessarie.

Viene fatto automaticamente riferimento all'intero set di assembly per .NET per app di Windows Store nel progetto quando si crea un'app in Windows Store usando C# o Visual Basic. Pertanto, puoi usare uno dei tipi supportati da .NET per app di Windows Store nel progetto senza altre azioni. Per un elenco degli spazi dei nomi combinati forniti da .NET per app di Windows Store e da Windows Runtime (raggruppati per area funzionale), vedi la sezione Spazi dei nomi di Windows Runtime e .NET Framework.

Per un elenco di spazi dei nomi e tipi inclusi nel subset .NET Framework, vedi .NET for Windows Store apps – supported APIs.

Puoi inoltre creare un progetto Libreria di classi portabile per sviluppare una libreria .NET Framework che può essere usata da un'app Windows Store. Il progetto deve includere .NET per le applicazioni Windows Store quali le piattaforme di destinazione. Libreria di classi portabile è particolarmente utile quando desideri sviluppare le classi che possono essere usate dalle app per tipi diversi di piattaforme, ad esempio un'app Windows Phone e Windows Store. Vedere Portable Class Libraries.

In questo argomento sono incluse le seguenti sezioni:

  • Conversione del codice .NET Framework esistente

  • Metodi di estensione per tipi di conversione

  • Spazi dei nomi di .NET Framework e Windows Runtime

Questi argomenti includono informazioni sulla conversione di altre parti dell'app a Windows Runtime:

Conversione del codice .NET Framework esistente

In genere, non converti semplicemente un'app .NET Framework esistente in un'app Windows Store, ma riprogetti l'app .NET Framework per la nuova esperienza utente. Se lo desideri, tuttavia, puoi convertire parti di un'app .NET Framework esistente in una nuova app Windows Store. Quando converti il codice esistente di .NET Framework, ricordati le seguenti modifiche che potrebbe essere necessario apportare nell'app in Windows Store:

  • Modifiche all'interfaccia utente

  • Modifiche I/O

  • Modifiche di archiviazione

  • Modifiche di rete

  • Modifiche di threading

  • Modifiche di reflection

  • Modifiche di sicurezza

  • Modifiche di risorsa

  • Modifiche di eccezione

  • Modifiche WCF

  • Modifiche nei tipi .NET Framework generali

BR230302.collapse_all(it-it,VS.120).gifModifiche all'interfaccia utente

Quando converti il codice dell'interfaccia utente da un'app basata su Silverlight o un'app Windows Phone, puoi usare molti degli stessi tipi di interfaccia utente. I tipi si trovano però negli spazi dei nomi di Windows.UI.Xaml anziché di System.Windows. Questi nuovi tipi di interfaccia utente sono simili ai tipi di interfaccia utente .NET Framework precedenti, ma contengono membri diversi.

Sostituire

Con

Tipi di interfaccia utente negli spazi dei nomi di System.Windows.*

Tipi di interfaccia utente negli spazi dei nomi di Windows.UI.Xaml.*

Ad esempio, la classe Border si trova nello spazio dei nomi Windows.UI.Xaml.Controls.

Per altre informazioni sulla portabilità del codice dell'interfaccia utente, vedi Migrazione di un'app di Windows Phone 7 a XAML.

BR230302.collapse_all(it-it,VS.120).gifModifiche I/O

Nei tipi di I/O sono inclusi i nuovi membri per supportare la nuova parola chiave await nel modello di programmazione asincrono.

Sostituire

Con

Metodi System.IO.Stream.BeginRead e EndRead

Metodo System.IO.Stream.ReadAsync

Per un esempio, vedere ReadAsync(array<Byte[], Int32, Int32).

Metodi System.IO.Stream.BeginWrite e EndWrite

Metodo System.IO.Stream.WriteAsync

Per un esempio, vedere WriteAsync(array<Byte[], Int32, Int32).

Metodo Close() nelle classi di I/O

Metodo Dispose() nelle classi di I/O.

-o-

Dichiarare e creare un'istanza dell'oggetto I/O in un'istruzione using (C#) o Using (Visual Basic) per accertarsi che venga eliminata in modo corretto; ad esempio:

using (StreamReader sr = 
  new StreamReader(await passedFile.OpenStreamForReadAsync()))
{
    while ((nextLine = await sr.ReadLineAsync()) != null)
    {
        contents.Append(nextLine);
    }
}
Using sr As StreamReader = 
  New StreamReader(Await passedFile.OpenStreamForReadAsync())
    While (nextLine = Await sr.ReadLineAsync()) <> Nothing
        contents.Append(nextLine)
    End While
End Using

Metodo System.IO.File::ReadAllText

Metodo ReadTextAsync della classe Windows.Storage.PathIO

Codice per recuperare e aprire un file

public static async void ReadFileSamples()
{
  // Read a file from package
  StorageFolder packageFolder = 
      ApplicationModel.Package.Current.InstalledLocation;
  StorageFile packagedFile = 
      await packageFolder.GetFileAsync("FileInPackage");

  // Read a file from AppData
  StorageFolder localFolder = ApplicationData.Current.LocalFolder;
  StorageFile localFile = 
    await localFolder.GetFileAsync("FileInAppData");
}
Public Async Shared Sub ReadFileSamples()
  ' Read a file from package
  Dim packageFolder As StorageFolder = 
      ApplicationModel.Package.Current.InstalledLocation
  Dim packagedFile As StorageFile = 
      Await packageFolder.GetFileAsync("FileInPackage")

  ' Read a file from AppData
  Dim localFolder As StorageFolder = ApplicationData.Current.LocalFolder
  Dim localFile As StorageFile = 
    Await localFolder.GetFileAsync("FileInAppData ")
End Sub

BR230302.collapse_all(it-it,VS.120).gifModifiche di archiviazione

Per archiviare i dati locali e i file, invece di usare la classe System.IO.IsolatedStorage, usare i tipi negli spazi dei nomi Windows.Storage.

Sostituire

Con

Classe System.IO.IsolatedStorage.IsolatedStorageFile

Proprietà LocalFolder nella classe Windows.Storage.ApplicationData

ApplicationData.Current.LocalFolder

Classe System.IO.IsolatedStorage.IsolatedStorageSettings

Proprietà LocalSettings nella classe Windows.Storage.ApplicationData

ApplicationData.Current.LocalSettings

Per altre informazioni, vedi Dati dell'applicazione.

BR230302.collapse_all(it-it,VS.120).gifModifiche di rete

Sostituire

Con

Classe System.Net.WebClient

Classe HttpClient per l'invio delle richieste HTTP e la ricezione di risposte HTTP

-o-

Tipi nello spazio dei nomi Windows.Networking.BackgroundTransfer per caricare o scaricare grandi quantità di dati

Tipi nello spazio dei nomi System.Net.Sockets

Tipi nello spazio dei nomi Windows.Networking.Sockets

URI relativi, una volta passati ai tipi Windows Runtime

URI assoluti

Per altre informazioni, vedi Passing a URI to the Windows Runtime.

Codice di gestione delle eccezioni che memorizza nella cache l'eccezione UriFormatException

Codice che memorizza nella cache l'eccezione FormatException che rappresenta la classe padre di UriFormatException

BR230302.collapse_all(it-it,VS.120).gifModifiche di threading

Parte dei membri di threading di .NET Framework sono stati modificati e alcuni tipi sono ora disponibili nell'API Windows Runtime.

Sostituire

Con

Metodo System.Threading.Thread.MemoryBarrier

Metodo Interlocked.MemoryBarrier nello spazio dei nomi System.Threading

Proprietà System.Threading.Thread.ManagedThreadId

Proprietà Environment.CurrentManagedThreadId nello spazio dei nomi System

Proprietà System.Threading.Thread.CurrentCulture

Proprietà CultureInfo.CurrentCulture nello spazio dei nomi System.Globalization

Proprietà System.Threading.Thread.CurrentUICulture

Proprietà CultureInfo.CurrentUICulture nello spazio dei nomi System.Globalization

Classe System.Threading.Timer

Classe Windows.System.Threading.ThreadPoolTimer

Classe System.Threading.ThreadPool

Classe Windows.System.Threading.ThreadPool

Codice che accoda lavoro al pool

Task.Run(() => 
{ 
  // work goes here
});
Task.Run(
    Sub()
        ' work goes here
    End Sub)

Il codice che accoda lavoro al pool e ne attende il completamento

await Task.Run(() => 
{ 
  // work goes here
});
Await Task.Run(
    Sub()
        ' work goes here
    End Sub)

Il codice che crea un elemento di lavoro di lunga durata

Task.Factory.StartNew(() => 
{ 
  // work goes here
}, TaskCreationOptions.LongRunning);
Task.Factory.StartNew(
    Sub()
        ' work goes here
    End Sub, TaskCreationOptions.LongRunning)

BR230302.collapse_all(it-it,VS.120).gifModifiche di reflection

La maggior parte dei membri dalla classe System.Type sono stati spostati nella classe System.Reflection.TypeInfo. Puoi recuperare l'oggetto TypeInfo chiamando System.Reflection.IntrospectionExtensions.GetTypeInfo(System.Type), che rappresenta un metodo di estensione per Type.

Sostituire

Con

type.Assembly

type.GetTypeInfo().Assembly

type.GetMethods(BindingFlags.DeclaredOnly)

type.GetTypeInfo().DeclaredMethods

type.GetMethod("MethodName", BindingFlags.DeclaredOnly)

type.GetTypeInfo().GetDeclaredMethod("MethodName")

type.GetNestedTypes()

type.GetTypeInfo().DeclaredNestedTypes

Metodo System.Delegate.CreateDelegate

Metodo MethodInfo.CreateDelegate

Per altre informazioni, vedi Reflection in the .NET Framework for Windows Store Apps in MSDN Library.

BR230302.collapse_all(it-it,VS.120).gifModifiche di sicurezza

Per le operazioni di sicurezza, autenticazione e crittografia molti tipi sono disponibili tramite i tipi Windows Runtime. Per un elenco completo degli spazi dei nomi di sicurezza disponibili per le app in Windows Store, vedi l'elenco degli spazi dei nomi di sicurezza più avanti in questo argomento.

BR230302.collapse_all(it-it,VS.120).gifModifiche di risorsa

Per le app in Windows Store, puoi creare un singolo file di risorse anziché il modello hub e spoke usato nelle app desktop. Usa inoltre i tipi di risorsa degli spazi dei nomi Windows.ApplicationModel.Resources e Windows.ApplicationModel.Resources.Core invece dello spazio dei nomi System.Resources.

Per altre informazioni, vedi Creazione e recupero di risorse nelle applicazioni Windows Store.

BR230302.collapse_all(it-it,VS.120).gifModifiche di eccezione

In alcuni casi, un tipo gestito genera un'eccezione che non è inclusa in .NET per app di Windows Store. In questi casi, puoi intercettare la classe padre dell'eccezione non inclusa. Ad esempio, in un'applicazione desktop, intercetta l'eccezione UriFormatException per gestire un URI non valido; ma in un'applicazione in Windows Store intercetta l'eccezione FormatException perché UriFormatException non è incluso in .NET per app di Windows Store. FormatException è la classe padre di UriFormatException.

BR230302.collapse_all(it-it,VS.120).gifModifiche WCF

Nelle app in Windows Store, puoi usare la funzionalità client Windows Communication Foundation (WCF) per recuperare dati da un servizio WCF, ma non puoi creare un servizio WCF per l'utilizzo dei dati.

BR230302.collapse_all(it-it,VS.120).gifModifiche nei tipi .NET Framework generali

Sostituire

Con

Metodo System.Xml.XmlConvert.ToDateTime

Metodo XmlConvert.ToDateTimeOffset

Interfaccia System.ICloneable

Un metodo personalizzato che restituisce il tipo appropriato

Metodi System.Array.AsReadOnly e System.Collections.Generic.List<T>.AsReadOnly

Una nuova istanza della classe ReadOnlyCollection creata nel modo seguente:

new ReadOnlyCollection<string>(selectedList)
New ReadOnlyCollection(Of String)(selectedList)

Metodi di estensione per tipi di conversione

Nella maggior parte dei casi, sviluppa le app in Windows Store usando i tipi .NET Framework e i tipi Windows Runtime insieme senza alcuna particolare attenzione o conversione. Tuttavia, in alcuni casi, .NET Framework fornisce metodi di estensione per semplificare l'interazione tra i tipi .NET Framework e i tipi Windows Runtime. Tali metodi di estensione si trovano nelle seguenti classi:

  • WindowsRuntimeStreamExtensions: per la conversione tra i flussi gestiti e i flussi in Windows Runtime.

  • WindowsRuntimeStorageExtensions: per aprire i file e le cartelle Windows Runtime come flussi gestiti.

  • WindowsRuntimeBufferExtensions: per la conversione verso e da IBuffer.

Spazi dei nomi .NET Framework e Windows Runtime

Nelle sezioni seguenti sono elencati gli spazi dei nomi forniti in .NET per app di Windows Store e in Windows Runtime, organizzati per funzionalità.

BR230302.collapse_all(it-it,VS.120).gifRaccolte

BR230302.collapse_all(it-it,VS.120).gifCore

BR230302.collapse_all(it-it,VS.120).gifDati e contenuto

BR230302.collapse_all(it-it,VS.120).gifDispositivi

BR230302.collapse_all(it-it,VS.120).gifDiagnostica

BR230302.collapse_all(it-it,VS.120).gifFile e cartelle

BR230302.collapse_all(it-it,VS.120).gifGlobalizzazione

BR230302.collapse_all(it-it,VS.120).gifGrafica

BR230302.collapse_all(it-it,VS.120).gifManaged Extensibility Framework (MEF)

Per installare i seguenti spazi dei nomi, apri il progetto in Visual Studio 2012 o versione successiva, seleziona Gestione pacchetti NuGet dal menu Progetto e cerca online il pacchetto Microsoft.Composition.

BR230302.collapse_all(it-it,VS.120).gifSupporti multimediali

BR230302.collapse_all(it-it,VS.120).gifServizi di rete

BR230302.collapse_all(it-it,VS.120).gifPresentazione

BR230302.collapse_all(it-it,VS.120).gifStampa

BR230302.collapse_all(it-it,VS.120).gifReflection

BR230302.collapse_all(it-it,VS.120).gifRisorse

BR230302.collapse_all(it-it,VS.120).gifSicurezza

BR230302.collapse_all(it-it,VS.120).gifSociale

BR230302.collapse_all(it-it,VS.120).gifThreading

BR230302.collapse_all(it-it,VS.120).gifAutomazione interfaccia utente

BR230302.collapse_all(it-it,VS.120).gifInterazione utente

BR230302.collapse_all(it-it,VS.120).gifLinguaggi e compilatori

Vedere anche

Altre risorse

.NET for Windows Store apps – supported APIs

Creating Windows Runtime Components for Javascript, in C# and Visual Basic

.NET Framework Support for Windows Store Apps and Windows Runtime