felipeaj 0 Denunciar post Postado Maio 29, 2009 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
quintelab 91 Denunciar post Postado Maio 29, 2009 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
yslladd 0 Denunciar post Postado Maio 29, 2009 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
sublyer 0 Denunciar post Postado Junho 2, 2009 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
Juliano.net 2 Denunciar post Postado Junho 3, 2009 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