Silverlight 3 / WCF : Action SQL sur fermeture de l'application client

virturel Messages postés 16 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 14 décembre 2015 - 10 févr. 2010 à 11:06
virturel Messages postés 16 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 14 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.

Quelqu'un a une idée ?

Merci
Philippe

3 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 48
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é. -
0
Kikuts Messages postés 159 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 5 novembre 2010
16 févr. 2010 à 12:18
Pas de meilleur idée. J'ai directement pensée au timing (grosso modo c'est l'idée 1 de krimog)

L'idée 2 est intéressante aussi.

J'ai pas mieux. Tiens moi au courant de ce que tu implémenteras stp. Ca m'intéresse !


Cordialement, Nk54.
0
virturel Messages postés 16 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 14 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...

Merci
0
Rejoignez-nous