Silverlight 3 / WCF : Action SQL sur fermeture de l'application client
virturel
Messages postés16Date d'inscriptionlundi 7 janvier 2008StatutMembreDernière intervention14 décembre 2015
-
10 févr. 2010 à 11:06
virturel
Messages postés16Date d'inscriptionlundi 7 janvier 2008StatutMembreDernière intervention14 décembre 2015
-
25 févr. 2010 à 23:55
Bonjour,
J'ai une appli Silverlight 3 qui communique avec une base de données MS SQL 2008 via un serveur WCF.
Cette appli gère un panier d'achat. J'ai donc besoin de savoir si le client a fermé son browser sans vider son panier pour que je puisse le vider. Sinon le panier reste actif et les articles sont réservés et donc non disponible pour les autres utilisateurs.
Mon problème c'est que même si je peux détecter l'action de fermeture du browser (grace à la méthode Application_Exit de App.xaml.cs), je n'arrive pas à exécuter une de mes methodes WCF qui se charge de vider le panier et libérer les articles réservés. J'ai vérifié la méthode Application_Exit : elle est bien appelée lors de la fermeture du navigateur. J'arrive à y insérer un messagebox et il s'affiche. Mais si j'appelle une de mes méthodes WCF, elle n'est pas exécutée.
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 10 févr. 2010 à 11:28
Salut
Je n'ai pas de solution miracle, mais une méthode "bourrin" consiste à dire que ton panier est valide pendant 5 minutes et que ton application silverlight remet à jour toutes les 4 minutes par exemple.
Ou sinon, il est peut-être possible de créer un socket entre l'appli Silverlight et le serveur, et lors de la coupure du socket, vider le panier.
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
virturel
Messages postés16Date d'inscriptionlundi 7 janvier 2008StatutMembreDernière intervention14 décembre 2015 25 févr. 2010 à 23:55
Merci pour vos réponses.
Je vois que nous utilisons tous les mêmes méthodes...
La méthode bourrin est celle qui tourne actuellement. Je pense améliorer le principe (quand j'aurais un peu de temps...) en mettant un timer sur le client. Ce timer ira écrire la date/heure de sa derniere action dans la table des connexions toutes les x minutes. Et toutes les y minutes, un traitement sera lancé sur le serveur pour libérer les paniers des connexions qui n'ont pas eu d'action depuis x minutes + 1.
Si quelqu'un a une meilleure idée. Plus propre et générant moins de transactions inutiles...