Dado que está utilizando ADO.NET, puede utilizar incorporado conexión de ADO.NET puesta en común de capacidades. De hecho, permítanme refinar eso: debe siempre use las capacidades de agrupamiento de conexiones integradas de ADO.NET. Al hacerlo, obtendrá el tiempo de ejecución de .NET para administrar sus conexiones de forma transparente en segundo plano. Mantendrá las conexiones abiertas durante un tiempo incluso si las cerró y las vuelve a utilizar si abre una nueva conexión. Esto es realmente rápido.
Asegúrese de mencionar en su cadena de conexión que desea conexiones agrupadas ya que podría no ser el comportamiento predeterminado.
Sólo se debe crear conexiones a nivel local cuando los necesite, ya que están reunidas en el backrgound lo que no hay sobrecarga en la creación de una nueva conexión:
using (var connection = SomeMethodThatCreatesAConnectionObject())
{
// do your stuff here
connection.Close(); // this is not necessary as
// Dispose() closes it anyway
// but still nice to do.
}
así es como se supone que lo hacen en la red.
No hay nada realmente que ganar manteniendo la conexión abierta (suponiendo que el proveedor use la agrupación de conexiones). El proveedor oficial MySQL Connector/Net utiliza la agrupación de conexiones de forma predeterminada. El OP no menciona qué proveedor está utilizando en realidad, pero si admite la agrupación, entonces utilizaría una estrategia abierta tarde/finalizada y permitiría que el proveedor gestione las conexiones físicas subyacentes. – LukeH
disculpa por agregar comentarios para el hilo viejo. Leí http://download.oracle.com/javadb/10.3.3.0/devguide/cdevconcepts89498.html, parece que siempre que su aplicación tenga varios subprocesos/transacciones, es una buena práctica asignar cada subproceso a una conexión distinta . Gracias. –