.NET - Tratando com arquivos de configuração


Arquivos de configuração sempre foram usados pelos aplicativos ou sistemas ; Unix , DOS , Windows , independente do sistema sempre houve arquivos de configuração. Para a plataforma Windows os arquivos de configuração com extensão .INI foram largamente usados a partir do Windows 3.1. A partir do Windows 95 foi criado o Registry , uma base de dados com configurações de todo o sistema.

Para tratar os arquivos INI temos toda uma coleção de API´s que permitem tanto a leitura como a gravação das informações a partir de uma aplicação Visual Basic.

Nota: leia o artigo - Arquivos de configuracao .INI - para saber mais sobre o assunto.

Na plataforma .NET não dependemos mais do Registry do Windows e com isto estamos livres de suas mazelas. As configurações geralmente estão armazenadas em arquivos XML e podem ser editadas diretamente com qualquer editor de texto.

Existem quatro tipos diferentes de arquivos de configuração na plataforma .NET:

- Machine Configuration Files
- Application Configuration Files
- Security Configuration Files
- ASP.NET Configuration Files


Os arquivos de configuração do tipo Application configuration Files podem ser comparados aos arquivos INI , como uma diferença : os arquivos de configuração da plataforma .NET somente podem ser lidos via aplicação , e , somente por você.

Existem muitos motivos para usar arquivos de configuração , creio que a mais importante delas e que usando arquivos de configuração você tem o poder de alterar as configurações de sua aplicação sem ter que recompilá-la novamente.

Um exemplo clássico é utilização da string de conexão para acessar uma fonte de dados. Se você colocar esta informação no código de sua aplicação qualquer alteração feita irá implicar na necessidade de recompilar a sua aplicação. Imagine então se sua aplicação tiver sido distribuida para diferentes clientes ou se sua aplicação estiver rodando em centenas de  diferentes máquinas.

Para aplicações Windows Forms o arquivo de configuração deve estar sempre no mesmo diretório da aplicação e deve possuir o seguinte nome: arquivo.exe.config  onde arquivo.exe é o nome de sua aplicação Windows. Assim se sua aplicação Windows chamar-se teste.exe o arquivo de configuração desta aplicação deverá chamar-se teste.exe.config.

Para aplicações Web o arquivo de configuração tem sempre o nome de Web.Config.

Nota: Para saber mais sobre arquivos de configuração para aplicações Web leia os artigos :

Se você precisar usar um arquivo de configuração para sua aplicação Windows deverá criá-lo pois ele não é criado automaticamente com sua aplicação. Usando o Visual Studio Net siga os passos abaixo para criar um arquivo de configuração para sua aplicação Windows:

  1. Abra o seu projeto no Visual Studio .NET
  2. Vá para janela Solution Explorer e clique com o botão direito do mouse sobre o nome do projeto
  3. Escolha a opção Add > Add New Item
  4. Na janela - Add New Item -  selecione 'Application Configuration'

O arquivo de configuração terá o seguinte conteúdo inicial :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
</configuration>
Para armazenar informações no arquivo de configuração você deve criar elementos XML no seguinte formato:
<add key="sua_Chave" value="Seu_Valor" />
 

O par "key-value" é que será lido para recuperar a informação desejada.

Geralmente suas informações devem estar em uma seção chamada:  <appSettings>

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
    </appSettings>
</configuration>
Por exemplo,  para armazenar o caminho do banco de dados de minha aplicação Windows no arquivo de configuração fazemos:
<?xml version="1.0" encoding=    "utf-8" ?>
<configuration>
<appSettings>
    <add key="CaminhoBD" value="c:\projetos\dados\macoratti.mdb" />
</appSettings>
</configuration>

Nota: Cuidado pois as informações para chave são sensitivas ao contexto. Ex: CaminhoBD é diferente de caminhoBD , appsettings é diferente de appSettings.

Se você observar a estrutura de sua aplicação no Solution Explorer vai notar a existência do arquivo App.config. Pois bem ,  é este arquivo que é criado quando você inclui um arquivo de configuração na sua aplicação Windows.

Depois que você compilar sua aplicação o arquivo de configuração será criado no diretório bin. Para um projeto chamado Teste teremos os seguintes arquivos na pasta bin:

Teste.exe             - nome da aplicação
Teste.exe.config - arquivo de configuração

Após a compilação o conteúdo do arquivo app.config será copiado para o arquivo de configuração. Quando você distribuir a sua aplicação para os usuários você terá que enviar junto o arquivo da aplicação .exe e o arquivo de configuração gerado na pasta bin : sua_aplicacao.exe.config e não o arquivo App.config , pois os usuários poderão alterar o conteúdo do arquivo de configuração sua_aplicacao.exe.config mas ser ré-iniciada , sua aplicação lerá os dados do arquivo App.config.

Para acessar as informações em um arquivo de configuração usamos a propriedade AppSetting da classe ConfigurationSettings. A sintaxe pode ser a seguinte :

Dim valor As String = System.Configuration.ConfigurationSettings.AppSettings("Chave")

Como exemplo vamos supor que temos um arquivo de configuração para um projeto Teste com o seguinte conteúdo:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
     <add key="Teste1" value="Valor para chave Teste1" />
     <add key="Teste2" value="Valor para chave Teste2" />
  </appSettings>
</configuration>

Para recuperar os valores armazenados no par key-value podemos criar uma aplicação console que leia estas informações.

A seguir temos o código que lê o arquivo de configuração acima:

Imports System
Imports System.Console
Module Macoratti

Sub Main()

Try
   Dim config As Configuration.ConfigurationSettings
   ' le a chave (key) :Teste1
   WriteLine(config.AppSettings("Teste1"))
   ' le a chave (key) :Teste2
   WriteLine(config.AppSettings("Teste2"))
   ' para ler todas as chaves fazemos:
   Dim chave As String
   For Each chave In config.AppSettings.AllKeys
       WriteLine(chave & " -- " & config.AppSettings(chave))
   Next
Catch ex As Exception
      WriteLine(ex.ToString)
Finally
      Read()
End Try

End Sub
End Module

Antes de encerrar quero lembrá-lo de duas coisas muito importantes:

  1. O valor retornado pela propriedade AppSetting pode ser um null e você terá que estar preparado para tratar esta inconsistência
  2. A propriedade AppSetting sempre retorna uma String

Abaixo um trecho de código que sugere uma possibilidade de tratamento destas duas situações:

Dim Valor As Integer = 0 

If Not (ConfigurationSettings.AppSettings(chave) Is Nothing) Then 

 Try 
      Valor = Convert.ToInt32(ConfigurationSettings.AppSettings("Max")) 
 Catch e As Exception 
        //tratamento da exceção
 End Try 

End If

Até o próximo artigo VB.NET

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti