GNT sans publicité, site mobile, fonctionnalitées exclusives...

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
Lire les 7 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sébastien Curutchet
Le #12524851
Tu peux fermer et ouvrir des connexions à chaque fois.
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"
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



MrChris
Le #12524831
Dans ce cas c'est cool !
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
Quentin Pouplard
Le #12524811
MrChris wrote:
C'est un casse tête...
Mais je vais changer le code pour ouvrir et fermer la connection à
chaque fois.



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
Patrice
Le #12524791
Justement l'objectif du pool est de réduire les temps de
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:
Dans ce cas c'est cool !
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




Le #12524781
Bonjour,

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:
Dans ce cas c'est cool !
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




Publicité
Suivre les réponses
Poster une réponse
Anonyme