Je suis en train de concevoir un wrapper de base de données pour C#. Voici les deux options que j'ai:Conception de l'encapsuleur de base de données C#
Option A:
class DBWrapper:IDisposable
{
private SqlConnection sqlConn;
public DBWrapper()
{
sqlConn = new SqlConnection("my connection string");
sqlConn.Open();
}
public DataTable RunQuery(string Sql)
{
implementation......
}
public Dispose()
{
if(sqlConn != null)
sqlConn.Close();
}
}
Option B:
class DBWrapper
{
public DBWrapper()
{
}
public DataTable RunQuery(string Sql)
{
SqlConnection sqlConn = new SqlConnection("my connection string");
.....implementation......
sqlConn.Close();
}
}
Pour option lorsque la classe est instancié est ouvert une connexion. Ainsi, peu importe le nombre de fois que l'appelant appelle RunQuery, la connexion est toujours prête. Mais si l'application instancie DBWrapper au début de l'application, la connexion sera simplement ouverte et ne rien faire jusqu'à ce que l'application soit terminée. En outre, il peut y avoir plusieurs DBWrapper instanciés pendant l'exécution. Donc, c'est un gaspillage de ressources.
Pour l'option B, l'option A ne l'est pas, mais une nouvelle connexion doit être ouverte et fermée chaque fois que l'appelant appelle RunQuery. Je ne suis pas sûr à quel point cela nuira à la performance.
Veuillez partager votre expertise. Merci pour la lecture.
Ils ont tendance à avoir une mauvaise réputation ici, mais ont une lecture sur le motif de conception Singleton, c'est la seule fois que j'utilise singletons – acqu13sce
@ acqu13sce: Pourquoi la mauvaise réputation? Est-ce la raison de la fausse capacité? – kbrimington
Juste quelques commentaires que j'ai lus en passant, y compris ce wiki de la communauté http://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons Je pense personnellement qu'ils ont leur place mais peut-être faire – acqu13sce