Acessando o Local e remoto dados em aplicativos de ClickOnce
A maioria dos aplicativos consomem ou produzir os dados.ClickOnceoferece uma variedade de opções para ler e gravar 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 na pasta de documentos e configurações do usuário.Qualquer arquivo incluído em um ClickOnce aplicativo e marcado como um arquivo de "dados" é copiado para este diretório quando um aplicativo é instalado.Os arquivos de dados podem ser de qualquer tipo de arquivo, usado com maior freqüência sendo texto, XML e arquivos de banco de dados, como arquivos. mdb do Microsoft Access.
O diretório de dados destina-se a dados gerenciados pelo aplicativo, que são os dados que o aplicativo armazena e mantém explicitamente.Tudo isso estático, os arquivos de nondependency não marcados como "dados" no manifesto do aplicativo 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ção |
---|
Quando um ClickOnce aplicativo é desinstalado, seu diretório de dados também é removido.Nunca use o diretório de dados para armazenar dados de user–managed-end, como 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 arquivo de manifesto do aplicativo do aplicativo.Para obter mais informações, consulte Como: incluir um arquivo de dados em um aplicativo de ClickOnce.
Leitura e gravação para o diretório de dados
Leitura do diretório de dados requer que seu ClickOnce a solicitação do 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 elevação de permissões ou implantação de aplicativos confiáveis, consulte Proteção de aplicativos de ClickOnce.
Observaçã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 do ApplicationDeployment.Isso é 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ê tiver incluído 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 Como: incluir um arquivo de dados em um aplicativo de ClickOnce.
Também é possível obter o caminho do diretório de dados usando as variáveis relevantes sobre o 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, que é isolado das outras versões.ClickOncecria este diretório independentemente de se quaisquer arquivos de dados são incluídos na implantação, de modo 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 irá sobrescrever 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 realizar a 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, baixe a atualização usando Update ou UpdateAsync, e qualquer personalizados funcionam de migração de dados em seu próprio após a atualização tiver sido concluído.
armazenamentos isolados
Armazenamento isolado fornece uma API para criar e acessar arquivos usando uma API simples.O local real dos arquivos armazenados ficará oculto 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 Armazenamento isolado.
Outros arquivos locais
Se seu aplicativo deve funcionar com ou salvar dados de usuário final, como relatórios, imagens, música e assim por diante, seu aplicativo exigirá FileIOPermission para ler e gravar dados em um sistema de arquivos local.
Dados remotos
Em algum momento, seu aplicativo provavelmente terá 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 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 dados XML ou texto bruto.Se os dados estiverem no formato XML, a maneira mais rápida de recuperar os dados é 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 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 de um 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 Web devido a restrições de segurança, o aplicativo deve declarar WebPermission para esse site.Para obter mais informações sobre o aumento de permissões de segurança para um ClickOnce aplicativo, consulte Proteção de 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ê cria 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 esta 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 um banco de dados diretamente
Você pode usar as classes dentro do System.Data espaço para nome para estabelecer conexões diretas com um servidor de banco de dados, como, por exemplo, 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 com 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 permitir acesso a um banco de dados específico do SQL Server, seu aplicativo deve solicitar SqlClientPermission a ele; para permitir 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 XML Web service.Acessar o banco de dados dessa maneira com freqüência é o melhor método se sua ClickOnce aplicativo será implantado em um servidor Web.Você pode acessar o servidor em confiança parcial sem elevar as permissões do seu aplicativo.
Consulte também
Tarefas
Como: incluir um arquivo de dados em um aplicativo de ClickOnce