Compartilhar via


Visão geral de aplicativos .NET da Windows Store

O .NET Framework fornece um subconjunto de tipos gerenciados que você pode usar para criar aplicativos Windows Store usando C# ou Visual Basic. Esse subconjunto dos tipos gerenciados é denominado .NET para aplicativos da Windows Store e permite que os desenvolvedores do .NET Framework criem apps do Windows Store em uma estrutura familiar de programação. Quaisquer tipos que não são relacionados para desenvolver apps do Windows Store não são incluídos no subconjunto.

Você usa esses tipos gerenciados com tipos da API Tempo de Execução do Windows para criar apps do Windows Store. Normalmente, você não irá notar nenhuma diferenças entre usar os tipos gerenciados e os tipos do Tempo de Execução do Windows exceto que os tipos gerenciados residem nos namespaces que começam com Sistema, e os tipos do Tempo de Execução do Windows residem nos namespaces que começam com Janelas. Juntos, o .NET para aplicativos da Windows Store e o Tempo de Execução do Windows fornecem o conjunto completo de tipos e de membros disponíveis para desenvolver apps do Windows Store com o C# ou Visual Basic.

O subconjunto dos tipos gerenciados e de membros foi projetado com um foco claro no desenvolvimento de app do Windows Store. Como resultado, ele omite o seguinte:

  • Tipos e membros que não são aplicáveis para desenvolver apps do Windows Store (como o console e os tipos do ASP.NET).

  • Tipos obsoletos e herdados.

  • Tipos que apresentam sobreposição com tipos do Tempo de Execução do Windows.

  • Tipos e membros que envolvem a funcionalidade do sistema operacional (como EventLog e contadores de desempenho).

  • Membros que causam a confusão (como o método de Close em tipos de E/S).

Em alguns casos, um tipo que você usa em uma área de trabalho app do .NET Framework não existe dentro do .NET para aplicativos da Windows Store. Em vez de isso, você pode usar um tipo do Tempo de Execução do Windows. Por exemplo, a classe System.IO.IsolatedStorage.IsolatedStorageSettings não está incluída em .NET para aplicativos da Windows Store, mas a classe Windows.Storage.ApplicationDataContainer fornece um comportamento semelhante para armazenar configurações de aplicativos. Exemplos de alterações comuns que você pode ter que fazer estão incluídos na seção Convertendo seu código existente do .NET Framework.

Todo o conjunto de assemblies para o .NET para aplicativos da Windows Store é referenciado em seu projeto automaticamente quando você cria um app Windows Store usando o C# ou Visual Basic. Portanto, você pode usar qualquer um dos tipos suportados pelo .NET para aplicativos da Windows Store em seu projeto sem nenhuma ação adicional. Para obter uma lista de namespaces combinadas fornecidas pelo .NET para aplicativos da Windows Store e pelo Tempo de Execução do Windows (agrupados por área funcional), consulte a seção de Namespaces do Tempo de Execução do Windows e do .NET Framework.

Para obter uma lista de namespaces e tipos incluídos no subconjunto do .NET Framework, consulte .NET for Windows Store apps – supported APIs.

Você também pode criar um projeto do Biblioteca de Classes Portátil para desenvolver uma biblioteca do .NET Framework que pode ser usada a partir de um app do Windows Store. O projeto deve incluir o .NET para aplicativos Windows Store como uma das plataformas de destino. O Biblioteca de Classes Portátil é particularmente útil quando você deseja desenvolver classes que podem ser usadas a partir de apps para diferentes tipos de plataformas, como o app Windows Phone, apps da área de trabalho, e o app Windows Store. Consulte Portable Class Libraries.

Este tópico inclui as seções a seguir:

  • Convertendo seu código existente do .NET Framework

  • Métodos de extensão para converter tipos

  • Namespaces do Tempo de Execução do Windows e do .NET Framework

Esses tópicos fornecem informações sobre a conversão de outras partes do seu aplicativo para o Tempo de Execução do Windows:

Convertendo seu código existente do .NET Framework

Normalmente, você não simplesmente converte um app do .NET Framework existente para um app do Windows Store; reprojeta o app do .NET Framework para a nova experiência do usuário. No entanto, você pode querer converter partes de um app do .NET Framework existente para uso em novo app do Windows Store. Quando você converte o código existente do .NET Framework, deve estar ciente das seguintes alterações que talvez precisam ser feitas em seu app do Windows Store:

  • alterações da interface do usuário

  • Alterações de E/S

  • alterações de armazenamento

  • Alterações de rede

  • alterações de thread

  • alterações de reflexão

  • alterações de segurança

  • alterações de recursos

  • alterações de exceção

  • alterações WFC

  • alterações em tipos gerais do .NET Framework

BR230302.collapse_all(pt-br,VS.120).gifalterações da interface do usuário

Quando você converte o código da interface do usuário a partir de um app com base no Silverlight ou do Windows Phone, poderá usar muitos dos mesmos tipos da interface do usuário, mas os tipos agora estão localizados nos namespaces do Windows.UI.Xaml em vez de namespaces do System.Windows. Esses novos tipos da interface do usuário são semelhantes aos tipos anteriores da interface do usuário do .NET Framework mas contêm alguns membros diferentes.

Substituir

Por

Tipos da interface do usuário namespaces do System.Windows.*

Tipos da interface do usuário namespaces do Windows.UI.Xaml*

(por exemplo, a classe Border está localizada no namespace Windows.UI.Xaml.Controls)

Para obter mais informações sobre portar o código de interface do usuário, consulte Migrando um aplicativo do Windows Phone 7 para XAML.

BR230302.collapse_all(pt-br,VS.120).gifAlterações de E/S

Os tipos de E/S incluem novos membros para oferecer suporte para a nova palavra-chave do await no modelo de programação assíncrona.

Substituir

Por

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

Método System.IO.Stream.ReadAsync

Para obter um exemplo, consulte ReadAsync(array<Byte[], Int32, Int32).

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

Método System.IO.Stream.WriteAsync

Para obter um exemplo, consulte WriteAsync(array<Byte[], Int32, Int32).

Feche o método () em classes de E/S

Descarte o método () em classes de E/S

- ou -

Declare e crie uma instância do objeto de E/S em uma instrução do using (C#) ou do Using (Visual Basic) para garantir que seja corretamente descartada; por exemplo:

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

O método ReadTextAsync na classe Windows.Storage.PathIO

Código para recuperar e abrir um arquivo

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(pt-br,VS.120).gifalterações de armazenamento

Em vez de usar a classe do System.IO.IsolatedStorage, use os tipos nos namespaces do Windows.Storage para armazenar dados e arquivos locais.

Substituir

Por

Classe System.IO.IsolatedStorage.IsolatedStorageFile

A propriedade LocalFolder na classe Windows.Storage.ApplicationData

ApplicationData.Current.LocalFolder

Classe System.IO.IsolatedStorage.IsolatedStorageSettings

A propriedade LocalSettings na classe Windows.Storage.ApplicationData

ApplicationData.Current.LocalSettings

Para obter mais informações, consulte Dados de aplicativos.

BR230302.collapse_all(pt-br,VS.120).gifAlterações de rede

Substituir

Por

Classe System.Net.WebClient

Classe HttpClient para enviar solicitações HTTP e para receber respostas HTTP

- ou -

Tipos no namespace Windows.Networking.BackgroundTransfer para carregar ou baixar grandes quantidades de dados

Tipos no namespace System.Net.Sockets

Tipos no namespace Windows.Networking.Sockets

URIs relativos quando passados para os tipos Tempo de Execução do Windows

URIs absolutos

Para mais informações, consulte Passing a URI to the Windows Runtime.

Código de tratamento de exceção que captura a exceção UriFormatException

Código que captura a exceção de FormatException, que é a classe principal do UriFormatException

BR230302.collapse_all(pt-br,VS.120).gifalterações de thread

Alguns dos membros de thread do .NET Framework mudaram, e alguns tipos agora estão disponíveis na API do Tempo de Execução do Windows.

Substituir

Por

Método System.Threading.Thread.MemoryBarrier

Método Interlocked.MemoryBarrier no namespace System.Threading

Propriedade System.Threading.Thread.ManagedThreadId

Propriedade Environment.CurrentManagedThreadId no namespace System

Propriedade System.Threading.Thread.CurrentCulture

Propriedade CultureInfo.CurrentCulture no namespace System.Globalization

Propriedade System.Threading.Thread.CurrentUICulture

Propriedade CultureInfo.CurrentUICulture no namespace System.Globalization

Classe System.Threading.Timer

Classe Windows.System.Threading.ThreadPoolTimer

Classe System.Threading.ThreadPool

Classe Windows.System.Threading.ThreadPool

Código com que as filas trabalham para o pool

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

Código com que as filas trabalham para o pool e aguarda a conclusão

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

Código que cria um item de trabalho de longa execução

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

BR230302.collapse_all(pt-br,VS.120).gifalterações de reflexão

A maioria do membros da classe System.Type foram movidos para a classe System.Reflection.TypeInfo. Você pode recuperar o objeto TypeInfo ao chamar o método System.Reflection.IntrospectionExtensions.GetTypeInfo(System.Type), que é um método de extensão para Type.

Substituir

Por

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 obter mais informações, consulte Reflexão no .NET Framework para aplicativos da Windows Store na Biblioteca MSDN.

BR230302.collapse_all(pt-br,VS.120).gifalterações de segurança

Muitos dos tipos de segurança, autenticação, e operações de criptografia estão disponíveis através dos tipos doe Tempo de Execução do Windows. Para obter uma lista completa dos namespaces de segurança que estão disponíveis para apps do Windows Store, consulte a lista de namespaces de segurança posteriormente neste tópico.

BR230302.collapse_all(pt-br,VS.120).gifalterações de recursos

Para apps do Windows Store, você cria um único arquivo de recurso em vez do modelo hub e spoke que é usado em apps da área de trabalho. Além disso, use os tipos de recurso nos namespaces Windows.ApplicationModel.Resources e Windows.ApplicationModel.Resources.Core em vez do namespace System.Resources.

Para mais informações, consulte Criando e recuperando recursos em aplicativos da Windows Store.

BR230302.collapse_all(pt-br,VS.120).gifalterações de exceção

Em alguns casos, um tipo gerenciado gera uma exceção que não está incluída no .NET para aplicativos da Windows Store. Neste casos, você pode capturar a classe principal da exceção que não está incluída. Por exemplo, em um aplicativo da área de trabalho, você captura a exceção UriFormatException para tratar de um URI inválido; mas em um aplicativo do Windows Store, capture a exceção FormatException já que UriFormatException não está incluída no .NET para aplicativos da Windows Store. FormatException é a classe pai de UriFormatException.

BR230302.collapse_all(pt-br,VS.120).gifalterações WFC

Nos apps Windows Store, é possível utilizar a funcionalidade cliente Windows Communication Foundation (WCF) para recuperar dados do serviço WCF, mas não é possível criar um serviço WCF para servir dados.

BR230302.collapse_all(pt-br,VS.120).gifalterações em tipos gerais do .NET Framework

Substituir

Por

Método System.Xml.XmlConvert.ToDateTime

Método XmlConvert.ToDateTimeOffset

Interface System.ICloneable

Um método personalizado que retorna o tipo apropriado

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

Uma nova instância da classe ReadOnlyCollection, criada como segue:

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

Métodos de extensão para converter tipos

Na maioria dos casos, você desenvolve apps do Windows Store usando tipos .NET Framework e tipos do Tempo de Execução do Windows juntos sem nenhuma consideração especial ou nenhuma conversão. No entanto, em alguns casos, o .NET Framework fornece métodos de extensão para simplificar a interação entre tipos do .NET Framework e tipos do Tempo de Execução do Windows. Esses métodos de extensão estão nas seguintes classes:

  • WindowsRuntimeStreamExtensions – para converter entre fluxos gerenciados e fluxos no Tempo de Execução do Windows.

  • WindowsRuntimeStorageExtensions – para abrir arquivos e pastas do Tempo de Execução do Windows como fluxos gerenciados.

  • WindowsRuntimeBufferExtensions – para converter para e de IBuffer.

.NET Framework e namespaces do Tempo de Execução do Windows

As seções a seguir listam os namespaces fornecidos no .NET para aplicativos da Windows Store e em Tempo de Execução do Windows, organizados por funcionalidade.

BR230302.collapse_all(pt-br,VS.120).gifColeções

BR230302.collapse_all(pt-br,VS.120).gifNúcleo

BR230302.collapse_all(pt-br,VS.120).gifDados e conteúdo

BR230302.collapse_all(pt-br,VS.120).gifDispositivos

BR230302.collapse_all(pt-br,VS.120).gifDiagnósticos

BR230302.collapse_all(pt-br,VS.120).gifArquivos e pastas

BR230302.collapse_all(pt-br,VS.120).gifGlobalização

BR230302.collapse_all(pt-br,VS.120).gifGráficos

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

Para instalar os namespaces a seguir, abra seu projeto no Visual Studio 2012 ou posterior, escolha Gerenciar Pacotes NuGet do menu Projeto e pesquise online o pacote Microsoft.Composition.

BR230302.collapse_all(pt-br,VS.120).gifMídia

BR230302.collapse_all(pt-br,VS.120).gifRede

BR230302.collapse_all(pt-br,VS.120).gifApresentação

BR230302.collapse_all(pt-br,VS.120).gifImprimindo

BR230302.collapse_all(pt-br,VS.120).gifReflexão

BR230302.collapse_all(pt-br,VS.120).gifRecursos

BR230302.collapse_all(pt-br,VS.120).gifSegurança

BR230302.collapse_all(pt-br,VS.120).gifSocial

BR230302.collapse_all(pt-br,VS.120).gifThreading

BR230302.collapse_all(pt-br,VS.120).gifAutomação da interface do usuário

BR230302.collapse_all(pt-br,VS.120).gifInteração do usuário

BR230302.collapse_all(pt-br,VS.120).gifLinguagens e compiladores

Consulte também

Conceitos

Criando componentes do Tempo de Execução do Windows em C# e Visual Basic

Outros recursos

.NET for Windows Store apps – supported APIs

.NET Framework Support for Windows Store Apps and Windows Runtime