Melhor abordagem para configurar vários aplicativos .Net

Temos um conjunto de aplicativos .Net 3.5 interligados. Alguns são sites da Web, alguns são serviços da Web e alguns são aplicativos do Windows. Cada aplicativo atualmente tem seu próprio arquivo de configuração (app.config ou web.config), e atualmente existem algumas chaves duplicadas nos arquivos de configuração (que no momento são mantidos sincronizados manualmente), já que vários aplicativos exigem o mesmo valor de configuração. Além disso, este conjunto de aplicativos é implantado em vários envrionemnts (dev, test, live etc)

Qual é a melhor abordagem para gerenciar a configuração desses vários aplicativos a partir de uma única fonte de configuração, para que os valores de configuração possam ser compartilhados entre vários aplicativos, se necessário? Também gostaríamos de ter configurações separadas para cada ambiente (assim, ao implantar, você não precisa alterar manualmente certos valores de configuração que são específicos do ambiente, como cadeias de caracteres de conivência), mas, ao mesmo tempo, não deseja manter várias configurações grandes arquivos (um para cada ambiente), pois manter isso em sincronia ao adicionar novas chaves de configuração será problemático.

0
adicionado editado
Visualizações: 1

5 Respostas

Você pode dividir o App.config em vários arquivos de configuração. Você acabou de especificar o nome do arquivo que contém a seção de configuração.

Alterar app.config:


  
  


  

Em app.config e SomeSetting.xml:



Onde SomeSetting.xml contém:

Agora você pode compor seu app.config a partir de arquivos de seção diferentes com algum tipo de script de construção ou implementação. Por exemplo.:

if debug copy SomeSettingDebug.xml deploydir/SomeSetting.xml
if MySql copy OtherSectionMySql.xml deploydir/OtherSetting.xml
0
adicionado

O Visual Studio tem um recurso relativamente obscuro que permite adicionar itens existentes como links, o que deve realizar o que você está procurando. Confira A postagem de Derik Whittaker sobre esse tópico para mais detalhes.

Visual Studio realmente deve tornar essa opção mais visível. Ninguém pensa em clicar nessa pequena seta ao lado do botão "Adicionar".

0
adicionado

Confira a estrutura do prisma do grupo de padrões e práticas da Microsoft?

0
adicionado
Como o prisma ajudaria nos problemas de configuração?
adicionado o autor Robert MacLean, fonte

Usamos modelos de arquivo como MyApp.config.template e MyWeb.config.template com propriedades NAnt para os bits que são diferentes entre os ambientes. Portanto, o arquivo de modelo pode ser um pouco parecido com isto:


    ${DbConnString}
    

Durante uma compilação, geramos todas as configurações para os diferentes ambientes apenas fazendo um loop em cada ambiente em um script NAnt, alterando o valor das propriedades NAnt $ {DbConnString} e $ {WebServiceUri} para cada ambiente (na verdade, tudo isso é definido em um único arquivo com seções para cada ambiente) e fazendo uma cópia NAnt com a opção de expandir as propriedades ativadas.

Demorou um pouco para ser configurado, mas ele nos pagou pelo menos dez vezes na quantidade de tempo economizado com diferentes versões de arquivos de configuração.

0
adicionado
0
adicionado
Eu não sei porque isso tem um negativo, essas 2 perguntas serão muito úteis ao gerenciar configurações.
adicionado o autor sontek, fonte