Data Access Object: Singleton ou muitos pequenos?
-
05-07-2019 - |
Pergunta
Ao desenvolver um aplicativo (web, ganhar, seja qual for), que faz um monte de acesso a dados, é melhor manter o seu objeto de acesso de dados aberto para o comprimento do pedido (ou seja, fazer muitas coisas em uma linha, em seguida, fechá-lo quando você terminar), ou abertura manter e fechar novos?
protected aDataContext dc = new aDataContext();
vs
private aObject GetInfo(...) {...}
Eu acho que a primeira seria melhor para o desempenho; mas parece que uma má prática.
Solução
Normalmente, você deve abrir uma nova conexão para cada unidade de trabalho, usá-lo e, em seguida, fechá-lo o mais rápido possível. Internamente .NET (ou ADO ou ODBC ou qualquer outro) vai reunir conexões para você, desde que a seqüência de conexão é o mesmo, portanto, é realmente muito eficiente. Há outras questões a ter em conta - especialmente transações -, mas, em geral, é melhor seguir este padrão de open-do-perto e deixe .NET gerenciar o pool de conexão.
Outras dicas
Melhor usar um pool de conexão. manter um número limitado de conexões abertas, tanto quanto você puder. Abrindo uma conexão é caro, mas ter milhões conexão aberta pode matar seu servidor. você deve comparar o seu cenário para melhor resultados ....