Oi galera, tudo certo?
Este post é sobre a utilização do Web.Config do Asp.Net para especificar valores que serão "enxergados" por toda a aplicação.
Sei que é um assunto saturado pra muitos, mas fiz este post porque tenho feito manutenção em alguns sistemas em Asp.Net com C# e percebido que há informações perdidas na aplicação, como referência à strings de conexão com o banco(à mesma string), mas sempre declaradas. Se há mudança de senha ou usuário de banco, se faz necessária a mudança em muitos arquivos, o que não é considerado uma boa prática.
Tenho percebido esta falha ou má prática principalmente em programadores que estão iniciando em programação ou eram de outras linguagens Web e estão indo para o Asp.Net.
Vamos a um exemplo simples:
C#
SqlConnection conexao = new SqlConnection("Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;");
string sql = "SELECT * FROM minhaTabela";
conexao.Open();
SqlCommand cmd = new SqlCommand(sql, conexao);
SqlDataReader dr = cmd.ExecuteReader();
conexao.Close();
Vejo a declaração à string destacada em vermelho em muitos arquivos .cs de aplicações. Se é necessário alterar esta string, é necessário mudar em todos os arquivos, sendo que a mesma string poderia ser especificada uma única vez, no Web.Config e chamada toda vez que se necessitasse.
No Web.Config existe a seção <connectionStrings> , própria para se especificar strings de conexão. Mas, neste exemplo específico não vou utilizá-la, porque o objetivo não é incentivar a centralização somente de strings de conexão, mas de qualquer coisa que seja utilizada em toda aplicação.
No Web.Config existe a seção <appSettings>na qual podemos especificar chaves com seus respectivos valores, como abaixo:
Web.Config
<appSettings>
<add key="StringConexao" value="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword">
</appSettings>
Toda vez que precisarmos fazer referência à string de conexão, não declararemos uma nova string, mas referenciaremos a chave "StringConexao" que está no Web.Config, em AppSettins, como abaixo:.
C#
SqlConnection conexao = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings.Get("StringConexao").ToString());
conexao.Open();
string sql = "SELECT * FROM minhaTabela";
SqlCommand cmd = new SqlCommand(sql, conexao);
SqlDataReader dr = cmd.ExecuteReader();
conexao.Close();
Perceba que a string especificada foi o valor contido na chave "StringConexao" do Web.Config.
Quer mudar a string de conexão agora? Muda apenas no Web.Config ;). Uma única vez :)
Espero que seja útil de alguma forma aos que estejam bem no início da sua caminhada em Asp.Net com C#.
Abraços a todos
Parece brincadeira, mas quando assumi o dpto de tecnologia da agência que trabalho além desses eventuais problemas de não utilizarem o Web.Config de forma clara ainda tinha uma falta de padrão na linha de desenvolvimento enorme.
ResponderExcluirExistinham várias formas de conexões e formas de desenvolvimento precisamos padronizar o mais rápido possivel.
Seria bacana escrever sobre padronização e arquitetura. Pense nisso!