Salut,
Pour ce qui est de logguer dans le journal, il y a des classes spécialisées pour ça dans le FrameWork.
Le singleton devrait être considéré comme une variable d'application. Les valeurs que les singleton mémorise sont disponibles pour l'ensemble de l'application. S'agissant de connections, à part provoquer des embouteillages, je vois pas l'intérêt.
Oui, mais, en créant un objet de connexion à chaque fois qu'on en a besoin on peut provoquer des dégats. Il faut absolument le faire dans des "using". Dans le cas contraire, on oublie de "Disposer" les objets et provoque une saturation du pool (dans le cas d'utilisation au sein de boucles).Citation:
Le framework s'occupe du reste. Il gére le pool de connexions, prend une connexion dispo quand il en a besoin, agrandit le pool si nécessaire...
Même dans des "using", la création d'objets de connexion provoque une élévation du nombre de connections par secondes. Ce n'est pas forcement un problème en soit, mais en général tous les pics sont des anomalies.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 public static void Select() { // Creation de la fabrique DbProviderFactory factory = DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings["ChaineDeConnexion"].ProviderName); // Objet connection using (IDbConnection connection = factory.CreateConnection()) { connection.ConnectionString = ConfigurationManager.ConnectionStrings["ChaineDeConnexion"].ConnectionString; connection.Open(); // Objet Command using (IDbCommand command = factory.CreateCommand()) { command.CommandText = "SELECT * FROM usr_contract"; // Object datareader using (IDataReader reader = command.ExecuteReader()) { while (reader.Read()) { for (int i = 0; i < reader.FieldCount; i++) { if (reader[i] != DBNull.Value) Console.Write(reader[i].ToString()); else Console.Write("NULL"); if (i < reader.FieldCount) Console.Write("|"); } Console.WriteLine(); } } } } }
Personnellement, quand une de mes classes a besoin de se connecter à une base de données, je créé un objet de connection privé dont peut disposer toutes les méthodes de la classe. Cela impose de rendre ma classe disposable. Dans cet esprit, dans le code ci-dessus les objet "connection" et "command" seraient instanciés dans le constructeur de la classe (non statique du coup) et détruits dans la méthode "Dispose".
Ainsi, je profite du pool et n'augmente pas outrageusement le nombre de connections par secondes.
A+