[Logo] Mentawai Recipes
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Members]  Member Listing   [Groups] Back to home page 
[Moderation Log] Moderation Log   [Register] Register / 
[Login] Login 
Martin Fowler sobre configurações  XML
Forum Index » Site Docs
Author Message
saoj



Joined: 10/01/2008 08:20:15
Messages: 39
Offline

Fonte: http://www.javafree.org/content/view.jf?idContent=1


Código ou arquivos de configuração

Um assunto separado, mas freqüentemente adicionado, é quando usar arquivos de configuração ou código sobre uma API para amarrar os serviços. Para a maioria das aplicações que tem de ser instaladas em vários lugares, um arquivo de configuração separado normalmente faz mais sentido. Quase sempre será um arquivo XML, e isto faz sentido. Entretanto, há casos onde é mais fácil usar código de programação para fazer a montagem. Um caso é onde se tem uma aplicação simples, que não tem muitas variações de instalação. Neste caso, um pouco de código pode ser mais claro que um arquivo XML separado.

Um caso constrastante é onde a montagem é muito complexa, envolvendo passos condicionais. Uma vez que se chega mais próximo de uma linguagem de programação, o XML começa a entrar em colapso, e é melhor usar uma linguagem real que tem toda a sintaxe para se escrever um programa claro. É feita então uma classe construtora que faz a montagem. Se há diferentes cenários de montagem, pode-se prover várias classes construtoras e usar um arquivo de configuração simples que faz a seleção entre eles.

Muitas vezes penso que as pessoas estão ansiosas demais por definir arquivos de configuração. Muitas vezes, uma linguagem de programação serve como um mecanismo de configuração direto e poderoso. Linguagens modernas podem facilmente compilar pequenos montadores que podem ser usados para juntar plugins em sistemas maiores. Se a compilação é trabalhosa demais, existem também linguagens script que podem funcionar muito bem.

É freqüentemente falado que arquivos de configuração não deveriam usar uma linguagem de programação, porque eles precisam ser editados por não-programadores. Mas quão freqüente este é o caso? As pessoas realmente esperam que não-programadores alterem os níveis de isolamento de transações de aplicações servidoras complexas? Arquivos de configuração que não usam uma linguagem de programação funcionam bem apenas enquanto simples. Se eles se tornaram complexos, então é hora de pensar sobre usar uma linguagem de programação apropriada.

Uma coisa que vemos no mundo Java no momento é uma dissonância de arquivos de configuração, onde cada componente tem seus próprios arquivos de configuração, que são diferentes de quaisquer outros. Se uma dúzia destes componentes forem usados, pode-se facilmente acabar com uma dúzia de arquivos de configuração que devem ser atualizados.

Meu conselho aqui é sempre prover uma maneira de fazer toda a configuração facilmente com uma interface programática, e então tratar o arquivo de configuração separado como uma característica opcional. Pode-se facilmente construir a manipulação de um arquivo de configuração usando uma interface programática. Quando se cria um componente, deve-se deixar a cargo do usuário quando utilizar a interface programática, o formato padrão do arquivo de configuração, ou criar seu próprio formato de arquivo, amarrando-o à interface programática.
Separando Configuração do Uso

A coisa mais importante nisto tudo é assegurar-se de que a configuração dos serviços seja separada de seu uso. Isto é um princípio fundamental do design próximo à separação entre interfaces e implementação. É algo que vemos dentro de um programa orientado-a-objetos quando lógica condicional decide que classe instanciar, e então, futuras avaliações desta condição é feita por polimorfismo ao invés de ter código condicional duplicado.

Se esta separação é útil dentro de uma única base de código, é especialmente vital quando se usa elementos externos, como componentes e serviços. A primeira questão é se é desejável deferir a escolha da classe de implementação para instalações particulares. Se sim, é necessário o uso de alguma implementação de plugin. Uma vez que plugins estejam sendo utilizados, é essencial que a montagem dos plugins seja feita separadamente do resto da aplicação, para que seja possível substituir diferentes configurações facilmente para diferentes instalações. Como se consegue isto é secundário. Este mecanismo de configuração pode tanto configurar um service locator quanto usar injeção para configurar os objetos diretamente.

 
Forum Index » Site Docs
Go to:   
Powered by JForum 2.1.8 © JForum Team