Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

felipeaj

Conexão permanente

Recommended Posts

Bom dia!

 

Estou fazendo algumas alterações no projeto e estou tendo que incluir algumas validações novas, quase todas puxando algo do banco

O problema é que cada dado que eu puxo do banco, faço por um método de uma classe (isso não é o problema, o problema vem a seguir!)

 

Todo o método que puxa dados do banco tem um padrão: instancia um SqlConnection, um SqlCommand tipo StoredProcedure, passa os parametros, abre a conexão, roda o SqlCommand, fecha a conexão...

 

Algumas telas chegam a fazer umas 5 ou 6 consultas ao abrir, de classes diferentes as vezes...

Isso não pode ir tornando a aplicação lenta? Ter que ficar abrindo e fechando conexão com o banco várias vezes para cada tela que abre?

 

Existe alguma forma de compartilhar a conexão entre as classes durante o processamento da página e fechar no fim?

 

Não seria nem o caso de uma conexão para a sessão, como existe no PHP se não me engano, mas simplesmente no processamento atual usar para todas as solicitações a mesma conexão!

 

Valeu!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando se trata de aplicações web é arriscado manter conexões abertas, você não consegue prever quando o usuário fecha o navegador, quando cai a internet dele e outras situações como esta, se for vários processos seguidos, convém deixar aberta e executar todos, mas tirando este caso é pouco seguro manter a conexão aberta.

Pesquise sobre Pool de Conexões, utilizando Pool o banco ja "reserva" algumas conexões para seu aplicativo, só fica aguardando elas serem abertas.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

A melhor forma de acesso ao banco na minha opinião, é abrir e fechar para cada consulta, pois já fiz dessa forma de deixar conexão aberta e apenas ir chamando os métodos com as querys, mas essa forma de deixar a "conexão permanente" gera mais log no servidor de bd, pois imagina você abrir uma conexão apenas e executar umas 200 querys, isso deixa lento a aplicação, por que está tudo em um log apenas, quando você cria uma conexão para cada query, você diminui o possivel overflow no bd.

 

abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Abra uma conexão no Application_Start do global.asax e utilize a mesma conexão na aplicação toda, mas lembre-se de fechar ela no Application_End.

 

Fique atendo ao timeout da conexão também.

 

Pode ser uma solução para seu caso, mas não a mais utilizada, o bacana é o pool de conexões.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Felipe,

 

No ADO.Net, quando você manda fechar a conexão, ele não realiza esta operação no mesmo instante. Ela fica em um pool (reservatório) de conexões para que possa ser reutilizada dentro de algum tempo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.