Acessando o Local e remoto a dados em aplicativos de ClickOnce

A maioria dos aplicativos consomem ou produzir os dados. ClickOnceoferece uma variedade de opções para leitura e gravação de dados, tanto local quanto remotamente.

Dados Locais

Com ClickOnce, você pode carregar e armazenar dados localmente usando qualquer um dos seguintes métodos:

  • ClickOnceDiretório de dados

  • armazenamentos isolados

  • Outros arquivos locais

Diretório de dados de ClickOnce

Cada ClickOnce aplicativo instalado em um computador local possui um diretório de dados armazenado no documentos e configurações de pasta. do usuário Qualquer arquivo incluído em um ClickOnce aplicativo e marcados como "dados" arquivo é copiado para este diretório quando um aplicativo é instalado. Os arquivos de dados podem ser de qualquer tipo de arquivo, usado com mais freqüência sendo de texto, XML e arquivos de banco de dados como, por exemplo, arquivos. mdb do Microsoft Access.

O diretório de dados destina-se a dados aplicativo gerenciado, o que é a data em que o aplicativo armazena e mantém explicitamente. Todos os arquivos de nondependency não está marcados como "dados" estática o aplicativo manifesto em vez disso residirá no diretório de aplicativo. Este diretório é onde residem os arquivos executáveis (. exe) e os assemblies do aplicativo.

ObservaçãoObservação

Quando um ClickOnce aplicativo é desinstalado, o seu diretório de dados também é removido. Nunca use o diretório de dados para armazenar dados de user–managed final, como, por exemplo, documentos.

A marcação de arquivos de dados em uma distribuição de ClickOnce

Para colocar um arquivo existente dentro do diretório de dados, você deve marcar o arquivo existente como um arquivo de dados no seu ClickOnce aplicativos manifesto de arquivo. Para obter mais informações, consulte How to: Incluir um Arquivo de dados em um aplicativo de ClickOnce.

Leitura e gravação para o diretório de dados

A leitura do diretório de dados requer que seu ClickOnce a solicitação de aplicativo a permissão de leitura; da mesma forma, escrita para o diretório requer permissão de gravação. Seu aplicativo automaticamente terá essa permissão se ele estiver configurado para ser executado com confiança total. Para obter mais informações sobre permissões de elevador para seu aplicativo usando a elevação de permissões ou de implantação de aplicativos confiáveis, consulte Protegendo aplicativos de ClickOnce.

ObservaçãoObservação

Se sua organização não usa a implantação de aplicativos confiáveis e tenha desativado a elevação de permissões, declarar permissões falhará.

Depois que seu aplicativo tiver essas permissões, ele pode acessar o diretório de dados usando as chamadas de método em classes dentro do System.IO. Você pode obter o caminho do diretório de dados dentro de um Windows Forms ClickOnce aplicativo usando o DataDirectory propriedade definida na CurrentDeployment propriedade de ApplicationDeployment. Esta é a maneira mais conveniente e recomendada para acessar seus dados. O exemplo de código a seguir demonstra como fazer isso para um arquivo de texto chamado CSV.txt que você incluiu na sua implantação como um arquivo de dados.

If (ApplicationDeployment.IsNetworkDeployed) Then
    Dim SR As StreamReader = Nothing

    Try
        SR = New StreamReader(ApplicationDeployment.CurrentDeployment.DataDirectory & "\CSV.txt")
        MessageBox.Show(SR.ReadToEnd())
    Catch Ex As Exception
        MessageBox.Show("Could not read file.")
    Finally
        SR.Close()
    End Try
End If
if (ApplicationDeployment.IsNetworkDeployed)
{
    try
    {
        using (StreamReader sr = new StreamReader(ApplicationDeployment.CurrentDeployment.DataDirectory + @"\CSV.txt"))
        {
            MessageBox.Show(sr.ReadToEnd());
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Could not read file. Error message: " + ex.Message);
    }
}

Para obter mais informações sobre a marcação de arquivos em sua implantação, como arquivos de dados, consulte How to: Incluir um Arquivo de dados em um aplicativo de ClickOnce.

Você também pode obter o caminho do diretório de dados usando as variáveis relevantes a Application de classe, como LocalUserAppDataPath.

Manipulação de outros tipos de arquivos pode exigir permissões adicionais. Por exemplo, se você quiser usar um arquivo do Access (. mdb) do banco de dados, seu aplicativo deve declarar confiança total para usar o relevantes System.Data classes.

Diretório de dados e versões de aplicativos

Cada versão de um aplicativo tem seu próprio diretório de dados, isolada de outras versões. ClickOncecria este diretório, independentemente de se quaisquer arquivos de dados são incluídos na implantação, para que o aplicativo tem um local para criar novos arquivos de dados em tempo de execução. Quando uma nova versão de um aplicativo é instalada, ClickOnce copiará todos os arquivos de dados existentes do diretório de dados da versão anterior para diretório a nova versão de dados — eles foram incluídos na implantação original ou criados pelo aplicativo.

ClickOncesubstituirá a versão mais antiga do arquivo com a versão mais recente do servidor se um arquivo de dados tem um valor de hash diferente na versão antiga do aplicativo como na nova versão. Além disso, se a versão anterior do aplicativo criado um novo arquivo que tem o mesmo nome como um arquivo incluído na implantação da nova versão, ClickOnce substituirá o arquivo da versão antiga com o novo arquivo. Em ambos os casos, os arquivos antigos serão incluídos em um subdiretório dentro do diretório de dados denominado .pre, de modo que o aplicativo ainda pode acessar os dados antigos para fins de migração.

Se você precisar de mais refinado de migração de dados, você pode usar o ClickOnce API de implantação para executar uma migração personalizada do diretório de dados antigo para o novo diretório de dados. Você precisará testar para um download disponível por meio de IsFirstRun, download de atualização usando o Update ou UpdateAsync, e qualquer personalizados funcionam de migração de dados em seu próprio após a atualização é concluída.

armazenamentos isolados

Armazenamento isolado fornece uma API para criar e acessar arquivos usando uma API simples. O local real dos arquivos armazenados é oculta do desenvolvedor e o usuário.

Isolado Storage works em todas as versões do .NET Framework. Armazenamento isolado também funciona em aplicativos parcialmente confiáveis sem a necessidade de concessões de permissão adicional. Se seu aplicativo deve ser executado em confiança parcial, mas deve manter dados específicos do aplicativo, você deve usar armazenamento isolado.

Para obter mais informações, consulte armazenamentos isolados.

Outros arquivos locais

Se seu aplicativo deve funcionar com ou salvar dados do usuário final como, por exemplo, relatórios, imagens, música e assim por diante, seu aplicativo exigirá FileIOPermission para ler e gravar dados para o sistema de arquivos local.

Dados remotos

Em algum momento, seu aplicativo provavelmente terão que recuperar informações de um site remoto, como, por exemplo, as informações de mercado ou de dados do cliente. Esta seção discute as técnicas mais comuns para a recuperação de dados remotos.

Acessando arquivos usando HTTP

Você pode acessar os dados de um servidor Web usando o WebClient ou o HttpWebRequest classe na System.Net namespace. Os dados podem ser qualquer um dos arquivos estáticos ou ASP.NET os aplicativos que retornam o texto bruto ou todos os dados XML. Se os dados estiverem no formato XML, a maneira mais rápida de recuperar os dados está usando o XmlDocument classe cuja Load método usa uma URL como um argumento. Para um exemplo, consulte Reading an XML Document into the DOM.

Você deve considerar a segurança ao seu aplicativo acessa os dados remotos por HTTP. Por padrão, o ClickOnce o acesso do aplicativo aos recursos da rede pode estar restrito, dependendo de como o aplicativo foi implantado. Essas restrições são aplicadas para impedir que programas mal-intencionados obtenham acesso a dados remotos privilegiados ou usando o computador do usuário para atacar outros computadores na rede.

A tabela a seguir lista as estratégias de implantação, que você pode usar e suas permissões da Web padrão.

Tipo de implantação

Permissões de rede padrão

Instalação via Web

Só podem acessar o servidor Web do qual o aplicativo foi instalado.

Instalação do compartilhamento de arquivo

Não é possível acessar qualquer servidor Web

Instalação do CD-ROM

Pode acessar qualquer servidor Web

Se sua ClickOnce aplicativo não pode acessar um servidor da Web devido a restrições de segurança, o aplicativo deve declarar WebPermission para o site da Web. Para obter mais informações sobre como aumentar as permissões de segurança para um ClickOnce aplicativo, consulte Protegendo aplicativos de ClickOnce.

Acessando dados através de um XML Web Service

Se você expor seus dados como um XML Web service, você pode acessar os dados usando um proxy XML Web service. O proxy é um .NET Framework classe que você criar usando um Visual Studio. As operações do serviço XML da Web — como recuperar clientes, pedidos de colocação e assim por diante — são expostos como métodos no proxy. Isso torna muito mais fácil de usar do que o texto bruto ou arquivos XML Web services.

Se o seu XML Web service opera sobre HTTP, o serviço será limitado pelas mesmas restrições de segurança como o WebClient e HttpWebRequest classes.

Você também pode executar essa tarefa usando Visual Studio. Para obter mais informações, consulte Como: Adicionar e Remover referências da Web e Como: Adicionar e remover referências da Web e Como: Adicionar e remover referências da Web.  

Acessando diretamente de um banco de dados.

Você pode usar as classes dentro do System.Data namespace para estabelecer conexões diretas com um servidor de banco de dados, como a SQL Server em sua rede, mas você deve considerar as questões de segurança. Ao contrário de solicitações HTTP, solicitações de conexão de banco de dados sempre são proibidas por padrão em confiança parcial; Você somente terá essa permissão por padrão se você instalar o ClickOnce aplicativo a partir de um CD -ROM. Isso permite que sua confiança total do aplicativo. Para habilitar o acesso a um banco de dados específico do SQL Server, seu aplicativo deve solicitar SqlClientPermission ; Para habilitar o acesso a um banco de dados diferente, por exemplo, SQL Server, ele deve solicitar OleDbPermission.

Na maioria das vezes, você não terá acesso o banco de dados diretamente, mas poderá acessá-lo em vez disso, por meio de um aplicativo de servidor da Web escrito em ASP.NET ou um serviço XML da Web. Acessar o banco de dados dessa maneira é freqüentemente o melhor método se sua ClickOnce aplicativo for implantado a partir de um servidor Web. Você pode acessar o servidor em confiança parcial sem elevar as permissões do aplicativo.

Consulte também

Tarefas

How to: Incluir um Arquivo de dados em um aplicativo de ClickOnce