• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

JLDR

Ligações às BDs - Qual a filosofia mais correcta?

4 mensagens neste tópico

Cumprimentos a todos.

A minha questão não é puramente técnica, mas um pouco mais generalista e visa recolher a vossa opinião de acordo com a vossa experiência profissional ou académica sobre o assunto.

Numa aplicação a ser usada por vários utilizadores ao mesmo tempo faz todo o sentido que um objecto Connection (seja ele OLEDB, SQL, etc.) seja aberto o mais tarde possível e fechado o mais cedo possível para evitar congestionamento de ligações. Parece-me lógico.

No caso de aplicações monoposto (apenas usadas por um utilizador de cada vez), o que é que faz mais sentido? O que é mais correcto?


Situação 1

- Arranque da aplicação e abrir a ligação à BD que ficará aberta permanentemente

         -funcionamento de toda a aplicação com a Connection sempre 'ligada'

   - fechar a ligação à BD apenas e imediatamente antes da finalização da aplicação.


Situação 2

- Arranque da aplicação

         Private void Metodo1()

        {

           Abrir ligação

           Executar as querys

           fechar ligação

        }

         Private void Metodo2()

        {

           Abrir ligação

           Executar as querys

           fechar ligação

        }

         Private void Metodo3()

        {

           Abrir ligação

           Executar as querys

           fechar ligação

        }

         Private void Metodo4()

        {

           Abrir ligação

           Executar as querys

           fechar ligação

        }

        etc. etc. etc. etc.

   -  finalização da aplicação.


Uma vez que nunca fiz nenhuma aplicação para multiposto, em todas as aplicações que fiz com apenas 1 base de dados, abria a ligação no arranque e só fechava a ligação no momento em que a aplicação era encerrada. Não é uma boa prática, pois não?

Agradeço desde já o vosso esclarecimento.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A minha opinião existem dois cenários:

1- Numa aplicação onde existem poucos utilizadores deve-se poupar o overhead da criação/abertura da ligação e manter a ligação sempre aberta se não existir pooling de ligações.

2 - Numa aplicação com muitos utilizadores deve-se usar a ligação o menor tempo possível e tentar que exista pooling de ligações de modo a reduzir o tempo de criação/abertura das mesmas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pela opinião, vitortomaz.

No caso da plataforma .NET, segundo me foi dado a entender, o pooling de ligações é implítico caso não seja declarado pela aplicação, correcto? Sendo implícito, e consequentemente estando sempre activo, desde que a ConnectionString se mantenha o processo de 'recuperação' do objecto Connection é (quase) instantâneo, verdade?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora