Información general de .NET para aplicaciones de la Tienda Windows

.NET Framework proporciona un subconjunto de tipos administrados que puedes usar para crear aplicaciones de la Tienda Windows con C# o Visual Basic. Este subconjunto de tipos administrados se denomina .NET para aplicaciones de la Tienda Windows y permite a los desarrolladores de .NET Framework crear aplicaciones de la Tienda Windows dentro en un marco de programación que resulta familiar. Los tipos que no estén relacionados con el desarrollo de aplicaciones de la Tienda Windows no se incluyen en el subconjunto.

Estos tipos administrados se usan con tipos de la API de Windows en tiempo de ejecución para crear aplicaciones de la Tienda Windows. Por lo general, no notarás diferencia alguna entre el uso de los tipos administrados y de los tipos de Windows en tiempo de ejecución, salvo que los tipos administrados residen en los espacios de nombres que comienzan con System y los tipos de Windows en tiempo de ejecución residen en los espacios de nombres que comienzan con Windows. En combinación, .NET para aplicaciones de la Tienda Windows y Windows en tiempo de ejecución proporcionan el conjunto completo de tipos y miembros disponibles para desarrollar aplicaciones de la Tienda Windows con C# o Visual Basic.

El subconjunto de tipos administrados y miembros se diseñó con un claro objetivo orientado al desarrollo de la aplicación de la Tienda Windows. Como resultado, se omite lo siguiente:

  • Los tipos y miembros que no son aplicables para desarrollar aplicaciones de la Tienda Windows (como la consola y los tipos de ASP.NET).

  • Tipos obsoletos y heredados.

  • Tipos que se superponen con los tipos de Windows en tiempo de ejecución.

  • Tipos y miembros que contienen funciones del sistema operativo (como System.Diagnostics.EventLog y contadores de rendimiento).

  • Miembros que llevan a confusión (como el método de Close en tipos de E/S).

En algunos casos, un tipo que habías usado en una aplicación de escritorio de .NET Framework no existe en .NET para aplicaciones de la Tienda Windows. En su lugar, puedes usar un tipo de Windows en tiempo de ejecución. Por ejemplo, la clase System.IO.IsolatedStorage.IsolatedStorageSettings no se incluye en .NET para aplicaciones de la Tienda Windows, pero la clase Windows.Storage.ApplicationDataContainer ofrece un comportamiento similar para almacenar la configuración de las aplicaciones. En la sección Convertir el código existente de .NET Framework, hay ejemplos de los cambios que podrías tener que efectuar.

Se hace referencia de forma automática en tu proyecto al conjunto completo de ensamblados para .NET para aplicaciones de la Tienda Windows cuando creas una aplicación de la Tienda Windows con C# o Visual Basic. Por consiguiente, puedes usar cualquiera de los tipos compatibles con .NET para aplicaciones de la Tienda Windows en el proyecto sin necesidad de iniciar acción alguna. Para obtener una lista de los espacios de nombres combinados que ofrece .NET para aplicaciones de la Tienda Windows y Windows en tiempo de ejecución (agrupados por área funcional), consulta la sección .NET Framework y espacios de nombres de Windows en tiempo de ejecución.

Para obtener una lista de espacios de nombres y tipos incluidos en el subconjunto de .NET Framework, consulta .NET para aplicaciones de la Tienda Windows: API admitidas.

También puedes crear un proyecto de Biblioteca de clases portable para desarrollar una biblioteca de .NET Framework que se pueda usar desde una aplicación de la Tienda Windows. El proyecto debe incluir .NET para aplicaciones de la Tienda Windows como una de las plataformas de destino. Biblioteca de clases portable es especialmente útil cuando se quieren desarrollar clases que se puedan usar desde aplicaciones para diferentes tipos de plataformas, como una aplicación de Windows Phone, una aplicación de escritorio y una aplicación de la Tienda Windows. Consulta Información general portable de biblioteca de clases.

En este tema, se incluyen las siguientes secciones:

  • Convertir el código existente de .NET Framework

  • Métodos de extensión para convertir tipos

  • Espacios de nombres de .NET Framework y de Windows en tiempo de ejecución

Convertir el código existente de .NET Framework

Por lo general, no solo cuando se convierte una aplicación existente de .NET Framework a una aplicación de la Tienda Windows, se rediseña la aplicación de .NET Framework para que el usuario disfrute de una experiencia nueva. Sin embargo, puede que quieras convertir partes de una aplicación existente de .NET Framework para su uso en una aplicación de la Tienda Windows. Cuando conviertas código existente de .NET Framework, debes estar al tanto de los siguientes cambios que es posible que debas efectuar en la aplicación de la Tienda Windows:

  • Cambios en la interfaz de usuario

  • Cambios de E/S

  • Cambios de almacenamiento

  • Cambios de red

  • Cambios de subprocesos

  • Cambios de reflexión

  • Cambios de seguridad

  • Cambios de recursos

  • Cambios de excepción

  • Cambios de la WCF

  • Cambios en los tipos generales de .NET Framework

BR230302.collapse_all(es-es,VS.110).gifCambios en la interfaz de usuario

Cuando conviertas código de interfaz de usuario desde una aplicación basada en Silverlight o desde una aplicación de Windows Phone, puedes usar muchos de los mismos tipos de la interfaz de usuario, pero los tipos se encuentran ahora en los espacios de nombres Windows.UI.Xaml en lugar de en los espacios de nombres System.Windows. Estos nuevos tipos de interfaz de usuario son similares a los tipos anteriores de la interfaz de usuario de .NET Framework, pero contienen algunos miembros diferentes.

Replace

With

Tipos de interfaz de usuario en el espacio de nombres System.Windows.*

Tipos de la interfaz de usuario en espacios de nombres Windows.UI.Xaml.*

(Por ejemplo, la clase Border se encuentra en el espacio de nombres Windows.UI.Xaml.Controls)

Para obtener más información sobre cómo migrar código de interfaz de usuario, consulta el tema sobre cómo migrar o portar una aplicación de Windows Phone 7 a XAML.

BR230302.collapse_all(es-es,VS.110).gifCambios de E/S

Los tipos de E/S incluyen nuevos miembros para prestar compatibilidad a la nueva palabra clave await en el modelo de programación asincrónica.

Replace

With

Métodos System.IO.Stream.BeginRead y EndRead

Método System.IO.Stream.ReadAsync

Para obtener un ejemplo, consulta ReadAsync(array<Byte[], Int32, Int32).

Métodos System.IO.Stream.BeginWrite y EndWrite

Método System.IO.Stream.WriteAsync

Para obtener un ejemplo, consulta WriteAsync(array<Byte[], Int32, Int32).

Método Close() en clases de E/S

Método Dispose() en clases de E/S.

o bien

Declara y crea una instancia del objeto de E/S dentro de una instrucción using (C#) o Using (Visual Basic) para asegurarte de que se desecha correctamente; por ejemplo:

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

Método System.IO.File::ReadAllText

El método ReadTextAsync en la clase Windows.Storage.PathIO

Código para recuperar y abrir un archivo

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(es-es,VS.110).gifCambios de almacenamiento

En lugar de usar la clase System.IO.IsolatedStorage, usa los tipos en los espacios de nombres Windows.Storage para almacenar datos locales y archivos.

Replace

With

Clase System.IO.IsolatedStorage.IsolatedStorageFile

La propiedad LocalFolder de la clase Windows.Storage.ApplicationData

ApplicationData.Current.LocalFolder

Clase System.IO.IsolatedStorage.IsolatedStorageSettings

La propiedad LocalSettings de la clase Windows.Storage.ApplicationData

ApplicationData.Current.LocalSettings

Para obtener más información, consulta Datos de la aplicación.

BR230302.collapse_all(es-es,VS.110).gifCambios de red

Replace

With

Clase System.Net.WebClient

Clase System.Net.Http.HttpClient para enviar solicitudes HTTP y recibir respuestas HTTP

o bien

Tipos en el espacio de nombres Windows.Networking.BackgroundTransfer para cargar o descargar gran cantidad de datos

Tipos en el espacio de nombres System.Net.Sockets

Tipos en el espacio de nombres Windows.Networking.Sockets

Identificadores URI relativos, cuando se pasan a los tipos de Windows en tiempo de ejecución

Identificadores URI absolutos

Para obtener más información, consulta Pasar un URI a Windows en tiempo de ejecución.

Código de control de excepciones que detecta la excepción de UriFormatException

Código que detecta la excepción de FormatException, que es la clase primaria de UriFormatException

BR230302.collapse_all(es-es,VS.110).gifCambios de subprocesos

Algunos de los miembros de subprocesos de .NET Framework han cambiado y ahora se encuentran disponibles algunos en la API de Windows en tiempo de ejecución.

Replace

With

Método System.Threading.Thread.MemoryBarrier

Método Interlocked.MemoryBarrier en el espacio de nombres System.Threading

Propiedad System.Threading.Thread.ManagedThreadId

Propiedad Environment.CurrentManagedThreadId en el espacio de nombres System

Propiedad System.Threading.Thread.CurrentCulture

Propiedad CultureInfo.CurrentCulture en el espacio de nombres System.Globalization

Propiedad System.Threading.Thread.CurrentUICulture

Propiedad CultureInfo.CurrentUICulture en el espacio de nombres System.Globalization

Clase System.Threading.Timer

Clase Windows.System.Threading.ThreadPoolTimer

Clase System.Threading.ThreadPool

Clase Windows.System.Threading.ThreadPool

Código que pone en cola trabajos para el grupo

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

Código que pone en cola trabajo para el grupo y espera a que finalice

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

Código que crea un elemento de trabajo de ejecución prolongada

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

BR230302.collapse_all(es-es,VS.110).gifCambios de reflexión

La mayoría de los miembros de la clase System.Type se han movido a la clase System.Reflection.TypeInfo. Puedes recuperar el objeto TypeInfo llamando al método System.Reflection.IntrospectionExtensions.GetTypeInfo(System.Type), que es un método de extensión para Type.

Replace

With

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

Método System.Delegate.CreateDelegate

Método MethodInfo.CreateDelegate

Para obtener más información, consulta Reflexión en .NET Framework para aplicaciones de la Tienda Windows en MSDN Library.

BR230302.collapse_all(es-es,VS.110).gifCambios de seguridad

Muchos de los tipos de seguridad, la autenticación y las operaciones criptográficas están disponibles a través de los tipos de Windows en tiempo de ejecución. Para obtener una lista completa de los espacios de nombres de seguridad que están disponibles para las aplicaciones de la Tienda Windows, consulta la lista de espacios de nombres de seguridad más adelante en este tema.

BR230302.collapse_all(es-es,VS.110).gifCambios de recursos

Para las aplicaciones de la Tienda Windows, se crea un único archivo de recursos en lugar del modelo de concentrador y radio que se usa en aplicaciones de escritorio. Además, puedes usar los tipos de recursos de los espacios de nombres Windows.ApplicationModel.Resources y Windows.ApplicationModel.Resources.Core en lugar del espacio de nombres System.Resources.

Para obtener más información, consulta Crear y recuperar recursos en aplicaciones de la Tienda Windows.

BR230302.collapse_all(es-es,VS.110).gifCambios de excepción

En algunos casos, un tipo administrado produce una excepción que no está incluida en .NET para aplicaciones de la Tienda Windows. En estos casos, puedes detectar la clase primaria de la excepción que no se incluye. Por ejemplo, en una aplicación de escritorio, detectas la excepción UriFormatException para controlar un URI no válido; pero en una aplicación de la Tienda Windows, detectas la excepción FormatException porque UriFormatException no se incluye en .NET para aplicaciones de la Tienda Windows. FormatException es la clase primaria de UriFormatException.

BR230302.collapse_all(es-es,VS.110).gifCambios de la WCF

En las aplicaciones de la Tienda Windows, puedes utilizar la funcionalidad de cliente de Windows Communication Foundation (WCF) para recuperar datos de un servicio WCF, pero no puedes crear un servicio WCF para servir datos.

BR230302.collapse_all(es-es,VS.110).gifCambios en los tipos generales de .NET Framework

Replace

With

Método System.Xml.XmlConvert.ToDateTime

Método XmlConvert.ToDateTimeOffset

Interfaz System.ICloneable

Método personalizado que devuelve el tipo adecuado

Métodos System.Array.AsReadOnly y System.Collections.Generic.List<T>.AsReadOnly

Nueva instancia de la clase System.Collections.ObjectModel.ReadOnlyCollection<T>, que se ha creado como sigue:

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

Métodos de extensión para convertir tipos

En la mayoría de los casos, se desarrollan aplicaciones de la Tienda Windows con tipos de .NET Framework y tipos de Windows en tiempo de ejecución en combinación sin ninguna consideración o conversión especiales. Sin embargo, en algunos casos, .NET Framework aporta métodos de extensión para simplificar la interacción entre los tipos de .NET Framework y tipos de Windows en tiempo de ejecución. Estos métodos de extensión están en las clases siguientes:

.NET Framework y espacios de nombres Windows en tiempo de ejecución

En las secciones siguientes se enumeran los espacios de nombres que se proporcionan en .NET para aplicaciones de la Tienda Windows y Windows en tiempo de ejecución, organizados según su funcionalidad.

BR230302.collapse_all(es-es,VS.110).gifColecciones

BR230302.collapse_all(es-es,VS.110).gifPrincipal

BR230302.collapse_all(es-es,VS.110).gifDatos y contenido

BR230302.collapse_all(es-es,VS.110).gifDispositivos

BR230302.collapse_all(es-es,VS.110).gifDiagnóstico

BR230302.collapse_all(es-es,VS.110).gifArchivos y carpetas

BR230302.collapse_all(es-es,VS.110).gifGlobalización

BR230302.collapse_all(es-es,VS.110).gifGráficos

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

Para instalar los espacios de nombres siguientes, abre el proyecto de Visual Studio 2012, elige Manage NuGet Packages en el menú Proyecto y busca en línea el paquete Microsoft.Composition.

BR230302.collapse_all(es-es,VS.110).gifMultimedia

BR230302.collapse_all(es-es,VS.110).gifRedes

BR230302.collapse_all(es-es,VS.110).gifPresentación

BR230302.collapse_all(es-es,VS.110).gifImpresión

BR230302.collapse_all(es-es,VS.110).gifReflexión

BR230302.collapse_all(es-es,VS.110).gifRecursos

BR230302.collapse_all(es-es,VS.110).gifSeguridad

BR230302.collapse_all(es-es,VS.110).gifSocial

BR230302.collapse_all(es-es,VS.110).gifSubprocesamiento

BR230302.collapse_all(es-es,VS.110).gifAutomatización de la interfaz de usuario

BR230302.collapse_all(es-es,VS.110).gifInteracción del usuario

BR230302.collapse_all(es-es,VS.110).gifLenguaje y compiladores

Vea también

Conceptos

.NET para aplicaciones de la Tienda Windows: API admitidas

Crear componentes de Windows en tiempo de ejecución en C# y Visual Basic

Otros recursos

Compatibilidad de .NET Framework con las aplicaciones de la Tienda Windows y Windows en tiempo de ejecución