Service...
Le
MrChris
Salut !
J'ai le problème suivant :
J'ai programmé un service qui écoute sur un port les demandes des clients
et va chercher dans une base Sql les informations demandées.
Au démarrage de ce service, je me connecte à la base (tout ce qu'il y a de
plus classique).
Mais au bout de 2 ou trois jours, le service fonctionne toujours sauf qu'il
n'effectue plus les opérations sur la base.
Je me demandais si il etait possible qu'au bout d'un certain temps la
connection à la base
soit coupé et comment faire pour que mon service soit toujours en mesure de
consulter
la base ??? (j'aimerais éviter d'ouvrir et fermer la connection à chaque
demande ou de
faire un batch qui redémarre mon service toute les nuits.)
Merci pour vos lumières
MrChris
J'ai le problème suivant :
J'ai programmé un service qui écoute sur un port les demandes des clients
et va chercher dans une base Sql les informations demandées.
Au démarrage de ce service, je me connecte à la base (tout ce qu'il y a de
plus classique).
Mais au bout de 2 ou trois jours, le service fonctionne toujours sauf qu'il
n'effectue plus les opérations sur la base.
Je me demandais si il etait possible qu'au bout d'un certain temps la
connection à la base
soit coupé et comment faire pour que mon service soit toujours en mesure de
consulter
la base ??? (j'aimerais éviter d'ouvrir et fermer la connection à chaque
demande ou de
faire un batch qui redémarre mon service toute les nuits.)
Merci pour vos lumières
MrChris

Poser une question


Normalement .NET gère un pool de connexions ainsi que SQLServer : si tu
réouvres une connexion qui a été utilisée peu de temps avant, il reprend la
même ; physiquement la connexion n'est pas fermée.
"MrChris"
Mais j'ai peur des performances, chaque clique sur un des bouton
du client remplis une listview d'une centaines d'éléments qu'il va chercher
dans la base, et fois quarante utilisateurs...
Je ne sais pas trop comment faire pour optimiser la chose.
J'ai pensé à un dataset en mémoire pour le service et faire
des transactions avec la base, mais comme il y a beaucoup de mise
à jour, je me vois mal faire des mises à jours toutes les 5 minutes...
Surtout si ca plante avant la mise à jour, je perd les dernières 5
minutes...
C'est un casse tête...
Mais je vais changer le code pour ouvrir et fermer la connection à chaque
fois.
J'ai en moyenne une dizaine d'accès à la base par minute dans la journée, ce
qui
maintient la connection, mais la nuit plus rien !
Merci pour ta réponse !
MrChris
C'est même conseillé de fonctionner comme cela en .NET... avec ADO.NET
on est passé dans un mode disconnected. (ce qui explique la présence
d'un pool de connex et le fonctionnement des dataset). Dans l'ensemble
c'est plutôt une bonne nouvelle ;)
--
Quentin Pouplard
http://www.sf.net/projects/myoe
création/destruction des connexions...
Esaie une simple simulation de charge et vois le temps que tu passes à créer
des connexions. Tu verras qu'il est tout à fait minime (compare
éventuellement avec ce que cela donne lorsque le pool n'est pas activé).
Patrice
--
"MrChris" news:
chercher
ce
l'utilisation d'un dataset peut pénaliser les temps de réponse aussi un
dataset se charge en mémoire et stocke toute les modification qui sont
faites dessus pour ensuite mettre à jour la base. Si votre service n'a pas
pour objectif de faire une mise à jour de la base alors il vaut mieu
utiliser des dataview par exemple ou des datareader qui iront beaucoup plus
vite qu'un dataset.
Sebastien
"MrChris" news:
chercher
ce