msdn33_capa.jpg

Clique aqui para ler todos os artigos desta edição

 

Parametrizando aplicações utilizando configurações XML
Por Bryan Porter

As aplicações são complicadas. Mesmo os softwares mais simples, invariavelmente contêm inúmeras configurações que devem armazenar algum tipo de valor para funcionar mesmo em um nível básico. Aplicações de banco de dados, normalmente se dão ao luxo de armazenar informações sobre configuração em tabelas do BD.

Porém, existem sempre configurações e opções cujos valores não podem ser armazenados em banco (como, por exemplo, configurações de acesso ao próprio banco de dados) ou que não diminuem a confiabilidade do sistema, porém, são absolutamente necessárias.

O sistema de configuração do .NET Framework 1.x representou um grande benefício para os desenvolvedores. Os arquivos de configuração em formato XML tornam sua manipulação simplificada do ponto de vista dos desenvolvedores, liberando-os da necessidade de armazenar informações sobre configurações no registro do Windows.

No .NET Framework 2.0, um novo conjunto de classes de configuração permite agora o acesso de leitura/escrita a arquivos de configurações e permite que dados de aplicação sejam armazenados, validados, estruturados e fortemente tipados.

Neste artigo, abordaremos diferentes formas de configurar uma aplicação no .NET Framework 2.0, explorando as classes do namespace System.Configuration, recentemente evoluída. Ao mesmo tempo, mostraremos que com apenas um mínimo de planejamento, podemos construir uma caixa de diálogo para gerenciar automaticamente as opções de configuração da aplicação.

Fundamentos

O Visual Studio 2005 simplifica o processo de acesso a configurações em XML. Se dermos um duplo clique na pasta My Project no Solutions Explorer (Properties em um projeto C#), abriremos o documento de propriedades do nosso projeto. Selecionamos a aba Settings e escolhemos User como o escopo de configuração para quaisquer opções que desejemos acrescentar.

Uma vez que acrescentarmos as configurações do escopo User ao projeto, podemos acessar essas configurações através da propriedade My.Settings (Properties.Settings.Default em C#) em tempo de execução. Depois de criar algumas configurações diferentes, abrimos o arquivo app.config no Visual Studio e veremos algo semelhante à Listagem 1.

 

Listagem 1. Configurações de usuário para o App.config

<configuration>

  <configSections>

    <sectionGroup name="userSettings"

        type="System.Configuration.UserSettingsGroup, System,

              Version=2.0.0.0, Culture=neutral,

              PublicKeyToken=b77a5c561934e089">

      <section name="MSDNSampleSettings.My.MySettings"

        type="System.Configuration.ClientSettingsSection, System,

             Version=2.0.0.0, Culture=neutral,

             PublicKeyToken=b77a5c561934e089"

        allowExeDefinition="MachineToLocalUser"

        requirePermission="false" />

    sectionGroup>

  configSections>

  ...

  <userSettings>

    <MSDNSampleSettings.My.MySettings>

      <setting name="Setting" serializeAs="String">

        <value>SomeDefaultValuevalue>

      setting>

    MSDNSampleSettings.My.MySettings>

  userSettings>

configuration>

 

A melhor coisa a respeito do editor de configurações no Visual Studio 2005, é que todos os recursos por ele utilizados para produzir o arquivo de configuração, podem ser utilizadas pelos desenvolvedores em seu próprio proveito.

O designer do Visual Studio utiliza as implementações de ConfigurationSection e ConfigurationSectionGroup para realizar essa “mágica”. Apesar de que o designer do Visual Studio contempla muitas das nossas necessidades de configurações, eventualmente poderemos chegar a uma situação onde os dados de configuração são um pouco mais complicados do que uma simples combinação nome=valor.

É justamente nessas situações que o novo modelo de configurações do .NET Framework realmente se destaca. Uma Configuration Section, como a seção  MSDNSampleSettings.My.MySettings na listagem anterior, é criada definindo-se uma classe que herda de ConfigurationSection, definida no assembly do System.Configuration. Os atributos e os valores correspondentes para um determinado elemento da Configuration Section, são mapeados para as propriedades de implementação da ConfigurationSection, através do atributo ConfigurationProperty. O código na Listagem 2 mostra uma implementação de exemplo de uma Configuration Section personalizada.

 

Listagem 2. ConfigurationSection personalizada

Imports System.Configuration

Imports System.ComponentModel

 

Public Class CustomConfigurationSection

    Inherits System.Configuration.ConfigurationSection

    Public Sub New()

        MyBase.New()

...

Quer ler esse conteúdo completo? Tenha acesso completo