Condividi tramite


Panoramica di .NET per le applicazioni Windows Store

In .NET Framework viene fornito un sottoinsieme di tipi gestiti che puoi utilizzare per creare app di Windows Store per Windows utilizzando C# o Visual Basic. Questo subset di tipi gestiti viene chiamato .NET per applicazioni 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.

Utilizza 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 applicazioni 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 System.Diagnostics.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 utilizzato in un'app desktop di .NET Framework non esiste in .NET per applicazioni Windows Store. In alternativa, puoi utilizzare un tipo da Windows Runtime. Ad esempio, la classe System.IO.IsolatedStorage.IsolatedStorageSettings non è inclusa in .NET per applicazioni Windows Store, ma la classe Windows.Storage.ApplicationDataContainer fornisce un comportamento simile per l'archiviazione delle 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 applicazioni Windows Store nel progetto quando si crea un'app in Windows Store utilizzando C# o Visual Basic. Pertanto, puoi utilizzare uno dei tipi supportati da .NET per applicazioni Windows Store nel progetto senza altre azioni. Per un elenco degli spazi dei nomi combinati forniti da .NET per applicazioni 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 per le applicazioni Windows Store: API supportate.

Puoi inoltre creare un progetto Libreria di classi portabile per sviluppare una libreria .NET Framework che può essere utilizzata 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 utilizzate dalle app per tipi diversi di piattaforme, ad esempio un'app Windows Phone e Windows Store. Vedi Cenni preliminari portabili la libreria di classi.

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

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.110).gifModifiche all'interfaccia utente

Quando converti il codice dell'interfaccia utente da un'app basata su Silverlight o un'app Windows Phone, puoi utilizzare 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 Bordo si trova nello spazio dei nomi Windows.UI.Xaml.Controls)

Per ulteriori informazioni sul codice interfaccia utente di porting, vedi Migrazione di un'app Windows Phone 7 in XAML.

BR230302.collapse_all(it-it,VS.110).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, vedi ReadAsync(array<Byte[], Int32, Int32).

Metodi System.IO.Stream.BeginWrite e EndWrite

Metodo System.IO.Stream.WriteAsync

Per un esempio, vedi 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 nella 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.110).gifModifiche di archiviazione

Per archiviare i dati locali e i file, piuttosto che utilizzare la classe System.IO.IsolatedStorage, utilizzare i tipi negli spazi dei nomi Windows.Storage.

Sostituire

Con

Classe System.IO.IsolatedStorage.IsolatedStorageFile

Proprietà LocalFolder della classe Windows.Storage.ApplicationData

ApplicationData.Current.LocalFolder

Classe System.IO.IsolatedStorage.IsolatedStorageSettings

Proprietà LocalSettings della classe Windows.Storage.ApplicationData

ApplicationData.Current.LocalSettings

Per ulteriori informazioni, vedi Dati applicazione.

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

Sostituire

Con

Classe System.Net.WebClient

Classe System.Net.Http.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 ulteriori informazioni, vedi Passaggio di un URI a 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.110).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.110).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 ulteriori informazioni, vedi Reflection in .NET Framework per applicazioni Windows Store in MSDN Library.

BR230302.collapse_all(it-it,VS.110).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.110).gifModifiche di risorsa

Per le app in Windows Store, puoi creare un singolo file di risorse anziché il modello hub e spoke utilizzato nelle app desktop. Inoltre, utilizzare i tipi di risorsa negli spazi dei nomi Windows.ApplicationModel.Resources e Windows.ApplicationModel.Resources.Core anziché nello spazio dei nomi System.Resources.

Per ulteriori informazioni, vedi Creazione e recupero di risorse nelle app di Windows Store.

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

In alcuni casi, un tipo gestito genera un'eccezione che non è inclusa in .NET per applicazioni 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 applicazioni Windows Store. FormatException è la classe padre di UriFormatException.

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

Nelle app in Windows Store, puoi utilizzare 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.110).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.Collections.Generic.List e di System.Array.AsReadOnly<T>.AsReadOnly

Una nuova istanza della classe System.Collections.ObjectModel.ReadOnlyCollection<T> 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 utilizzando 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:

Spazi dei nomi .NET Framework e Windows Runtime

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Vedere anche

Concetti

.NET per le applicazioni Windows Store: API supportate

Creazione di componenti Windows Runtime in C# e Visual Basic

Altre risorse

Supporto .NET Framework per applicazioni Windows Store e Windows Runtime