Buenas tardes, desarrolle un sistema mediano el cual termine y ahora estoy optiminanzolo y de paso aprendiendo cosas nuevas. Me estoy centrando en principio en mejorar toda la capa de acceso a datos. Tengo un DAO (vengo de la escuela de Java, jejeje) por
cada table, por ejemplo un EmpleadoDAO.cs esta clase tiene todos los metodos necesarios para insertar, buscar borrar y actualizar los datos del empleado. a su vez esta clase usa una clase estatica que se llama DataBaseConnection.cs que es la que se encargar
de la coneccion a la base y la de ejecutar el sql pasado como parametro.La aplicacion es standalone y usa un base SQL Compat Edition, por el momento monousuario.
Mis dudas son las siguientes:
1. En el modelo actual, abro y cierro la conexion con cada ejecucion de un sql, esto esta bien? me conviene abrir la conexion al inicio de la aplicacion y luego cerrarla al final? que es lo mas performante y lo mas seguro
2. llegado el caso que se pueda ejecutar varias instancias de la aplicacion en un futuro podria haber varias conexiones sobre la misma base, la respuesta de la pregunta 1 sigue siendo valida, o ya tengo que pensar en pooling, etc.
3. si en lugar de sql compact edition lo migro a un SQL Server ahi si deberia pensar en un pool de conexion verdad?
Por ejemplo la Clase que maneja la conexion tiene este metodo:
public
static
void
executeNonQuery(string
sql) {
using
(SqlCeConnection
connection = getDataBaseConnection()) {
using
(SqlCeCommand
command = new
SqlCeCommand(sql,
connection)) {
connection.Open();
command.ExecuteNonQuery();
}
}
}
public
static
SqlCeConnection
getDataBaseConnection() {
return
new
SqlCeConnection("Persist
Security Info=False; Data Source=" + databasePath +
";");
}
Muchas gracias